Skip to main content
Glama
leafeye

lunchmoney-mcp-v2

by leafeye
README.md
# lunchmoney-mcp-v2

MCP server for the [Lunch Money](https://lunchmoney.app) API v2. First MCP server built on the v2 API.

## Features

- **14 tools** covering read, CRUD, and advanced operations
- **Hydrated responses**: category, tag, and account names instead of raw IDs
- **Smart caching**: categories, tags, and accounts cached at startup, auto-refreshed after mutations
- **Type-safe**: generated from the official OpenAPI spec via `openapi-typescript`

## Setup

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "lunchmoney": {
      "command": "npx",
      "args": ["lunchmoney-mcp-v2"],
      "env": {
        "LUNCHMONEY_TOKEN": "your-api-token-here"
      }
    }
  }
}
```

### Claude Code

Add to `.mcp.json` in your project or `~/.claude/mcp.json` globally:

```json
{
  "mcpServers": {
    "lunchmoney": {
      "command": "npx",
      "args": ["lunchmoney-mcp-v2"],
      "env": {
        "LUNCHMONEY_TOKEN": "your-api-token-here"
      }
    }
  }
}
```

Get your API token from [Lunch Money Developer settings](https://my.lunchmoney.app/developers).

## Tools

### Read

| Tool | Description |
|---|---|
| `get_user` | Account info (name, email, currency) |
| `list_transactions` | List/search transactions with filters, or look up by ID |
| `list_categories` | All categories (nested or flat view) |
| `list_tags` | All tags |
| `get_accounts` | Manual + synced accounts with balances |
| `get_summary` | Budget summary with income/spending/per-category breakdown |
| `get_recurring` | Recurring items (subscriptions, bills, income) |

### CRUD

| Tool | Actions | Description |
|---|---|---|
| `manage_transaction` | create, update, delete | Single transaction operations |
| `manage_category` | create, update, delete | Category management (force delete with dependency info) |
| `manage_tag` | create, update, delete | Tag management (force delete with dependency info) |
| `manage_account` | create, update, delete | Manual account management (Plaid accounts are read-only) |

### Advanced

| Tool | Actions | Description |
|---|---|---|
| `bulk_update_transactions` | — | Batch update up to 500 transactions at once |
| `split_transaction` | split, unsplit | Split a transaction into parts or restore the original |
| `group_transactions` | group, ungroup | Combine transactions into a group or restore originals |

## Example prompts

Once connected, just ask your LLM naturally:

**Reviewing & organizing**
- "Show me all unreviewed transactions from this month"
- "Categorize all my Amazon transactions as Shopping"
- "What did I spend on groceries last week?"
- "Mark these 5 transactions as reviewed"

**Budget overview**
- "Give me a spending summary for January"
- "What are my recurring expenses?"
- "How much do I have in each account?"

**Managing transactions**
- "Add a $45 transaction for dinner at Nobu yesterday"
- "Split that $120 Costco transaction into $80 groceries and $40 household"
- "Group these three Uber transactions into one"
- "Delete the duplicate transaction I just created"

**Organizing**
- "Create a new category called Side Projects"
- "Tag these transactions with travel"
- "Show me all my categories with their IDs"
- "Rename the Dining Out category to Restaurants"

## Development

```bash
npm install
npm run build
npm start
```

Regenerate types from the OpenAPI spec:

```bash
npm run generate:types
```

## Architecture

```
src/
  index.ts          Entry point — registers tools, initializes cache
  client.ts         openapi-fetch client + error handling
  cache.ts          In-memory cache for categories, tags, accounts
  format.ts         Text formatters for all response types
  types.ts          Generated from @lunch-money/v2-api-spec
  tools/
    user.ts         get_user
    transactions.ts list_transactions, manage_transaction, bulk_update, split, group
    categories.ts   list_categories, manage_category
    tags.ts         list_tags, manage_tag
    accounts.ts     get_accounts, manage_account
    summary.ts      get_summary
    recurring.ts    get_recurring
```

## License

MIT

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource or operation. Read (list/get), write (manage), batch (bulk_update), and structural operations (split/group) are clearly separated, minimizing the chance of misselection.

Naming Consistency4/5

The naming follows a verb_noun convention with intuitive prefixes like get_/list_, manage_, bulk_update_, split_, and group_. The only minor inconsistency is mixing get_ and list_ for read operations (e.g., get_accounts vs list_transactions), but the pattern is still predictable.

Tool Count5/5

With 14 tools, the server covers user info, transactions, categories, tags, accounts, recurring items, and budget summaries—each earning its place. This is within the ideal 3-15 range and feels well-scoped.

Completeness4/5

The tool set provides solid coverage for core CRUD on transactions, categories, tags, and accounts, plus advanced transaction operations (split/group/bulk update). Minor gaps exist, such as recurring items being read-only and no bulk delete, but agents can work around these.

Maintenance

ActivityInactive
ResponsivenessNo issues