Skip to main content
Glama

Mochi MCP Server

A Model Context Protocol server that enables AI agents (Claude, Codex, etc.) to manage your Mochi.cards flashcards.

Features

  • Browse decks and cards

  • Search cards by content or tags

  • Create/Update cards with two-phase commit (preview before applying)

  • Delete cards with typed confirmation (safety first)

  • Robust safety - deck deletion disabled by default

Related MCP server: Mochi MCP Server

Quick Start

# Install
npm install

# Build
npm run build

# Run (needs your Mochi API key)
MOCHI_API_KEY=your_key_here node dist/index.js

Get your API key from the Mochi app: Settings → Account → API Key.

Usage with Claude Desktop

Add to your claude_desktop_config.json:

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

Then ask Claude: "List my Mochi decks" or "Search for cards about gradients".

Tools

Read Operations

Tool

Description

list_decks

List all decks

get_deck

Get deck with card list

get_card

Get full card content

get_cards

Get multiple cards by ID

search_cards

Search by text, tags, or date. Returns rich results (deckId, createdAt, etc.)

list_cards_page

Paginated card listing with bookmark

find_deck_by_name

Find decks by name (case-insensitive partial match)

Write Operations (Two-Phase Commit)

Tool

Description

create_card_preview

Preview new card → returns token

apply_create_card

Apply creation with token

update_card_preview

Preview edit with diff → returns token

update_card_fields_preview

Preview Q/A edit → returns token

apply_update_card

Apply update with token

update_cards_batch_preview

Preview batch updates

apply_update_cards_batch

Apply batch updates

Tag Operations (Two-Phase)

Tool

Description

add_tags_preview

Preview adding tags to cards

remove_tags_preview

Preview removing tags

apply_tags_update

Apply tag changes with token

Delete Operations (Requires Confirmation)

Tool

Description

delete_card

Soft-delete (requires: "delete card <id>")

delete_deck

Disabled by default

Performance Notes

  • Global search scans at most 1000 cards

  • Per-deck search scans at most 5000 cards

  • Use list_cards_page with pagination for larger collections

  • Date filters use UTC (ISO 8601 format: YYYY-MM-DDTHH:mm:ss.sssZ)

Configuration

Variable

Required

Default

Description

MOCHI_API_KEY

✅

-

Your Mochi API key

MOCHI_ALLOW_DECK_DELETE

❌

false

Enable deck deletion

MOCHI_TOKEN_EXPIRY_MINS

❌

10

Preview token validity

Safety Design

  1. Two-phase commit: Create/update operations show a preview first. You approve by using the returned token.

  2. Typed confirmations: Delete requires typing "delete card <id>" exactly.

  3. Deck deletion disabled: Must set MOCHI_ALLOW_DECK_DELETE=true to enable.

  4. Soft delete default: Cards go to trash (recoverable in Mochi app).

Development

# Run tests
npm test

# Type check
npm run lint

# Development mode
MOCHI_API_KEY=your_key npm run dev

# Test with MCP Inspector
npm run inspect

License

MIT

Available Tools

20 tools
add_tags_previewA

Preview adding tags to one or more cards. Returns a token for apply_tags_update.

Inputs: cardIds (required), tagsToAdd (required).

apply_create_cardB

Execute card creation after user confirms

Inputs: token (required), confirmation (required).

apply_tags_updateA

Apply tag changes after user confirms. Use with token from add_tags_preview or remove_tags_preview.

Inputs: token (required), confirmation (required).

apply_update_cardC

Execute card update after user confirms

Inputs: token (required), confirmation (required).

apply_update_cards_batchC

Apply a batch of card updates.

Inputs: token (required), confirmation (required).

create_card_previewA

Preview a new card. IMPORTANT: After calling this, you MUST show the preview to the user and ask for explicit confirmation before calling apply_create_card. Do NOT chain these calls automatically.

Inputs: deckId (required), content (required), tags.

create_deckC

Create a new deck

Inputs: name (required), parentId.

delete_cardA

Delete a card (soft-delete by default). Requires typed confirmation.

Inputs: cardId (required), confirmation (required), permanent.

delete_deckA

Delete a deck (disabled by default, requires MOCHI_ALLOW_DECK_DELETE=true)

Inputs: deckId (required), confirmation (required).

find_deck_by_nameA

Find decks by name (case-insensitive partial match). Useful when you know the deck name but not its ID.

Inputs: query (required).

get_cardB

Get full content of a single card

Inputs: cardId (required).

get_cardsC

Get content of multiple cards (bulk)

Inputs: cardIds (required).

get_deckC

Get deck details and list of cards

Inputs: deckId (required).

list_cards_pageA

Fetch a single page of cards with explicit pagination. Use for iterating through large collections.

Inputs: deckId, bookmark, pageSize.

list_decksB

List all Mochi flashcard decks

Inputs: includeArchived.

remove_tags_previewA

Preview removing tags from one or more cards. Returns a token for apply_tags_update.

Inputs: cardIds (required), tagsToRemove (required).

search_cardsB

Search cards by content, tags, or date. Returns rich results with deckId, createdAt, updatedAt. Includes scannedCount and truncated flags.

Inputs: query, deckId, tags, createdAfter, +2 more.

update_card_fields_previewB

Preview changes to specific fields (Question, Answer, Tags). Reconstructs full markdown.

Inputs: cardId (required), question, answer, tags.

update_card_previewA

Preview changes to a card with diff. IMPORTANT: After calling this, you MUST show the diff to the user and ask "Do you want to apply this change?" WAIT for explicit confirmation before calling apply_update_card.

Inputs: cardId (required), content (required), tags.

update_cards_batch_previewC

Preview updates for multiple cards at once.

Inputs: updates (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 20 tools

    Disambiguation4/5

    Most tools have distinct purposes, such as create_card_preview vs. apply_create_card for previewing and confirming card creation, or get_card vs. get_cards for single vs. bulk retrieval. However, there is some overlap between update_card_preview and update_card_fields_preview, both used for previewing card updates, which could cause minor confusion for agents.

    Naming Consistency5/5

    Tool names follow a consistent snake_case pattern with clear verb_noun structures, such as create_card_preview, apply_create_card, and list_decks. The naming is predictable and readable throughout the set, with no deviations or mixed conventions.

    Tool Count4/5

    With 20 tools, the count is slightly high but reasonable for a flashcard management server, covering operations like creation, updates, deletion, searching, and deck management. It includes necessary preview and confirmation steps, though it could be streamlined without losing functionality.

    Completeness5/5

    The tool set provides comprehensive coverage for flashcard management, including full CRUD operations for cards and decks (e.g., create, get, update, delete), batch processing, tagging, searching, and pagination. There are no obvious gaps, and agents can handle typical workflows without dead ends.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers