Skip to main content
Glama
louis030195

mochi-mcp

by louis030195
README.md
# @louis030195/mochi-mcp

MCP (Model Context Protocol) server for [Mochi](https://mochi.cards) flashcard integration. Create, manage, and review spaced repetition flashcards directly from Claude, ChatGPT, or any LLM that supports MCP.

---

<div align="center">

### 💖 Support This Project

**If you find this MCP server useful, please consider supporting its development!**

[![Support via Stripe](https://img.shields.io/badge/Support-Stripe-635bff?style=for-the-badge&logo=stripe&logoColor=white)](https://buy.stripe.com/5kQ14n1j3a347Q59a8gA803)

[**👉 Click here to support this project**](https://buy.stripe.com/5kQ14n1j3a347Q59a8gA803)

Your support helps maintain and improve this tool for everyone. Thank you! 🙏

</div>

---

## Features

- 📇 **Card Management** - Create, read, update, delete flashcards
- 🔍 **Search** - Find cards by name or content
- 📚 **Deck Organization** - Manage decks and organize cards
- 🔄 **Pagination** - Handle large card collections efficiently
- 🧠 **Spaced Repetition** - Integrate with Mochi's learning algorithm
- ✨ **Markdown Support** - Rich formatting for card content

## Installation

### Claude Desktop

Add to your Claude Desktop configuration (`~/Library/Application Support/Claude/claude_desktop_config.json` on Mac or `%APPDATA%\Claude\claude_desktop_config.json` on Windows):

```json
{
  "mcpServers": {
    "mochi": {
      "command": "npx",
      "args": ["-y", "@louis030195/mochi-mcp"],
      "env": {
        "MOCHI_API_KEY": "your-mochi-api-key"
      }
    }
  }
}
```

### Claude Code

```bash
# Install globally in user scope with API key
claude mcp add -s user mochi npx -e MOCHI_API_KEY=your-mochi-api-key -- -y @louis030195/mochi-mcp
```

## Get Your Mochi API Key

1. Go to [Mochi Account Settings](https://app.mochi.cards/settings/account)
2. Sign up or log in
3. Navigate to Settings → Account
4. Copy your API key

## Usage

Once configured, you can use natural language to interact with Mochi:

### Card Management
- "Create a flashcard about the Krebs cycle"
- "Show me my recent flashcards"
- "Update the card about Python decorators"
- "Delete the card with ID abc123"

### Search & Organization
- "Search for cards about machine learning"
- "List all my decks"
- "Create a new deck called 'Spanish Vocabulary'"
- "Find cards containing 'neural networks'"

### Study & Review
- "Get the next 20 cards for review"
- "Show me cards from the Biology deck"

## Tools

### `mochi_list_cards`

List all Mochi flashcards with pagination support.

**Parameters:**
- `bookmark` (string, optional): Pagination bookmark from previous response
- `limit` (number, optional): Maximum number of cards to fetch (default: 100)

**Returns:** List of cards with content, IDs, deck info, review status, etc.

### `mochi_get_card`

Get a specific Mochi flashcard by ID.

**Parameters:**
- `card_id` (string, required): The ID of the card to retrieve

**Returns:** Detailed card data including front, back, deck, review history, etc.

### `mochi_create_card`

Create a new Mochi flashcard with front/back content.

**Parameters:**
- `name` (string, required): The front/question of the card
- `content` (string, required): The back/answer of the card (markdown supported)
- `deck_id` (string, optional): Optional deck ID to add the card to

**Returns:** Created card data with ID

### `mochi_update_card`

Update an existing Mochi flashcard.

**Parameters:**
- `card_id` (string, required): The ID of the card to update
- `name` (string, optional): The front/question of the card
- `content` (string, optional): The back/answer of the card (markdown supported)

**Returns:** Updated card data

### `mochi_delete_card`

Delete a Mochi flashcard by ID.

**Parameters:**
- `card_id` (string, required): The ID of the card to delete

**Returns:** Deletion confirmation

### `mochi_list_decks`

List all Mochi decks.

**Returns:** List of decks with names, IDs, card counts, etc.

### `mochi_create_deck`

Create a new Mochi deck.

**Parameters:**
- `name` (string, required): The name of the deck

**Returns:** Created deck data with ID

### `mochi_search_cards`

Search for Mochi flashcards by name or content.

**Parameters:**
- `query` (string, required): Search query
- `bookmark` (string, optional): Pagination bookmark from previous response

**Returns:** List of matching cards

## Development

```bash
# Clone the repo
git clone https://github.com/louis030195/mochi-mcp.git
cd mochi-mcp

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

# Run locally
MOCHI_API_KEY=your-api-key npm start
```

## API Documentation

See [Mochi API Docs](https://app.mochi.cards/api-docs) for full API details.

## License

MIT

## Author

[Louis Beaumont](https://twitter.com/louis030195)

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct action on a specific resource (cards vs decks), with no overlap. The names and descriptions clearly differentiate between CRUD operations, listing, and searching.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case and a 'mochi_' prefix, e.g., mochi_list_cards, mochi_create_deck. No deviations or mixed conventions.

Tool Count5/5

8 tools is well-suited for a flashcard application, covering essential operations on cards and decks without being too few or excessive.

Completeness4/5

Cards have full CRUD plus search and list, but decks lack update, delete, and get operations. This is a minor gap that agents can work around, but the deck surface is incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues