npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@k-and/mcp-mochi

v1.1.0

Published

MCP server for Mochi flashcards with full API coverage. Fork of @fredrika/mcp-mochi.

Readme

mcp-mochi

Model Context Protocol (MCP) server for Mochi flashcards. This is a fork of fredrikalindh/mcp-mochi v2.6.0 with full Mochi API coverage (20 tools), faithful response schemas and automatic retry on Mochi's per-account concurrency limiter.

Features

  • Create, update, archive and delete flashcards
  • Create cards from templates with automatic field name-to-ID mapping
  • Fetch a single flashcard or deck by ID
  • Full deck CRUD (create, get, update, archive, delete)
  • Create new templates
  • Add or remove attachments (images, audio) on any card
  • Get cards due for review on a given date
  • List flashcards, decks and templates
  • Automatic retry on Mochi's per-account concurrency limiter (HTTP 429)

Usage with Claude Desktop

Add the following to your claude_desktop_config.json. Your MOCHI_API_KEY is in Mochi under Settings → Account → Subscription → API Keys.

NPX (recommended)

{
  "mcpServers": {
    "mochi": {
      "command": "npx",
      "args": ["-y", "@k-and/mcp-mochi"],
      "env": {
        "MOCHI_API_KEY": "<YOUR_TOKEN>"
      }
    }
  }
}

Local Development

{
  "mcpServers": {
    "mochi": {
      "command": "node",
      "args": ["/path/to/mcp-mochi/dist/index.js"],
      "env": {
        "MOCHI_API_KEY": "<YOUR_TOKEN>"
      }
    }
  }
}

Local Development Setup

  1. Clone and install dependencies:

    git clone https://github.com/k-and/mcp-mochi.git
    cd mcp-mochi
    npm install
  2. Build the project:

    npm run build
  3. Test with MCP Inspector:

    MOCHI_API_KEY=<YOUR_TOKEN> npx @modelcontextprotocol/inspector node dist/index.js

Available Tools

Flashcards

| Tool | Description | |------|-------------| | create_flashcard | Create a new flashcard in Mochi | | create_card_from_template | Create a flashcard using a template with field names (auto-maps to IDs) | | get_flashcard | Fetch a single flashcard by ID | | list_flashcards | List flashcards, optionally filtered by deck | | search_flashcards | Find flashcards by substring match against content, name or tags (client-side) | | update_flashcard | Update a flashcard's content, deck, template, fields, position or trash state | | archive_flashcard | Archive or unarchive a flashcard | | delete_flashcard | Permanently delete a flashcard and its attachments | | get_due_cards | Get flashcards due for review on a given date |

Decks

| Tool | Description | |------|-------------| | create_deck | Create a new deck, optionally nested under a parent | | get_deck | Fetch a single deck by ID | | list_decks | List all decks | | update_deck | Update a deck's name, parent, sort order, archive or trash state, or display options | | archive_deck | Archive or unarchive a deck | | delete_deck | Permanently delete a deck (contained cards and child decks are not cascaded) |

Templates

| Tool | Description | |------|-------------| | create_template | Create a new template for cards | | get_template | Get a single template by ID | | list_templates | List all templates with their field definitions |

Attachments

| Tool | Description | |------|-------------| | add_attachment | Attach a file (image, audio, etc.) to an existing card | | delete_attachment | Remove an attachment from a card by filename |

Resources

| URI | Description | |-----|-------------| | mochi://decks | List of all decks | | mochi://templates | List of all templates |

Prompts

| Prompt | Description | |--------|-------------| | write-flashcard | Generates a well-structured flashcard following best practices (atomic questions, cloze deletions, etc.) |

Examples

Create a simple flashcard

{
  "tool": "create_flashcard",
  "params": {
    "content": "What is MCP?\n---\nModel Context Protocol, a protocol for providing context to LLMs",
    "deckId": "<DECK_ID>"
  }
}

Create a card from template

{
  "tool": "create_card_from_template",
  "params": {
    "templateId": "<TEMPLATE_ID>",
    "deckId": "<DECK_ID>",
    "fields": {
      "Front": "What is the capital of France?",
      "Back": "Paris"
    }
  }
}

Get today's due cards

{
  "tool": "get_due_cards",
  "params": {}
}

Create a deck

{
  "tool": "create_deck",
  "params": {
    "name": "Linear Algebra",
    "parentId": "<PARENT_DECK_ID>"
  }
}