Lunch Money
平台与服务by akutishevsky
用于管理 LunchMoney 个人财务的 MCP server,支持 transactions、budgets、categories 等操作。
什么是 Lunch Money?
用于管理 LunchMoney 个人财务的 MCP server,支持 transactions、budgets、categories 等操作。
README
LunchMoney MCP Server
A Model Context Protocol (MCP) server implementation for LunchMoney, providing programmatic access to personal finance management through LunchMoney's API. Also available as an MCP Bundle (.mcpb) for easy installation in Claude Desktop.
<a href="https://glama.ai/mcp/servers/@akutishevsky/lunchmoney-mcp"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@akutishevsky/lunchmoney-mcp/badge" alt="LunchMoney Server MCP server" /> </a>Heads up — v2.0.0 is a breaking release. This server now targets LunchMoney's v2 API (
https://api.lunchmoney.dev/v2, currently in alpha). It is not backwards-compatible with v1.x of this server: tool names, fields, and endpoint shapes have changed (for example,assetsis nowmanual_accounts,tagsarrays are nowtag_ids, transactionasset_idis nowmanual_account_id, thedebit_as_negativetoggle is gone, and the budget summary moved to a new/summaryendpoint). See CHANGELOG.md for the full list. If you depend on v1.x, pin@akutishevsky/lunchmoney-mcp@^1.4.3.
Table of Contents
- Overview
- Features
- Usage
- Remote Deployments
- Example Prompts
- Available Tools
- Development
- API Reference
- Contributing
- License
Overview
This MCP server enables AI assistants and other MCP clients to interact with LunchMoney data, allowing for automated financial insights, transaction management, budgeting, and more.
Features
Comprehensive Tool Coverage
- User Management - Access user account details
- Categories - Full CRUD on categories and category groups
- Tags - Full CRUD for transaction tags
- Transactions - Full CRUD with advanced filtering, bulk update, bulk delete, splits, groups, and file attachments
- Recurring Items - Track and manage recurring expenses, including system-suggested items
- Budgets - Per-period budget summary, account-wide budget settings, upsert, and delete
- Manual Accounts - Full CRUD for manually-managed accounts (formerly known as "assets")
- Plaid Accounts - List, retrieve, and trigger sync of connected bank accounts
- Cryptocurrency - Track synced and manual crypto holdings through LunchMoney's v1 crypto endpoints
Key Capabilities
- Full integration with LunchMoney API v2 (alpha)
- Type-safe implementation with TypeScript and Zod validation
- Token-efficient responses using TOON encoding instead of JSON, reducing token usage in AI conversations
- Modular architecture for easy extension
- Standard MCP server implementation using stdio transport
Usage
Installation Options
<a id="mcp-bundle"></a>
MCP Bundle (.mcpb) - Recommended
The easiest way to install this server is as an MCP Bundle in Claude Desktop:
- Download the latest
.mcpbfile from the releases page - Open Claude Desktop and go to Extensions
- Click "Install Extension" and select the downloaded
.mcpbfile - Enter your LunchMoney API token when prompted (get it from LunchMoney Developer Settings)
- The LunchMoney tools will be immediately available
<a id="claude-code-cli"></a>
<details> <summary><strong>Claude Code CLI</strong></summary>Add the LunchMoney MCP server to Claude Code:
claude mcp add lunchmoney --transport stdio -e LUNCHMONEY_API_TOKEN=your-api-token-here -- npx -y @akutishevsky/lunchmoney-mcp
To enable debug logging:
claude mcp add lunchmoney --transport stdio -e LUNCHMONEY_API_TOKEN=your-api-token-here -e LUNCHMONEY_DEBUG=true -- npx -y @akutishevsky/lunchmoney-mcp
Verify the server was added:
claude mcp list
claude mcp get lunchmoney
<a id="codex-cli"></a>
<details> <summary><strong>Codex CLI</strong></summary>Add the LunchMoney MCP server to Codex:
codex mcp add lunchmoney --env LUNCHMONEY_API_TOKEN=your-api-token-here -- npx -y @akutishevsky/lunchmoney-mcp
To enable debug logging:
codex mcp add lunchmoney --env LUNCHMONEY_API_TOKEN=your-api-token-here --env LUNCHMONEY_DEBUG=true -- npx -y @akutishevsky/lunchmoney-mcp
Verify the server was added:
codex mcp list
codex mcp get lunchmoney
<a id="manual-mcp-configuration"></a>
<details> <summary><strong>Manual MCP Configuration</strong></summary>To use this MCP server with any MCP-compatible client (such as Claude Desktop), you need to add it to the client's configuration.
Configuration
The server can be configured in your MCP client's configuration file. The exact location and format may vary by client, but typically follows this pattern:
{
"mcpServers": {
"lunchmoney": {
"command": "npx",
"args": ["@akutishevsky/lunchmoney-mcp"],
"env": {
"LUNCHMONEY_API_TOKEN": "your-api-token-here",
"LUNCHMONEY_DEBUG": "true"
}
}
}
}
Note:
LUNCHMONEY_DEBUGis optional. Set it to"true"to enable debug logging of API requests and responses to stderr. Useful for troubleshooting.
Replace "your-api-token-here" with your actual LunchMoney API token from LunchMoney Developer Settings.
Common MCP Client Configuration Locations
Different MCP clients store their configuration in different locations:
-
Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
Other MCP Clients: Check your client's documentation for the configuration file location.
Setup Steps
- Locate your MCP client's configuration file (create it if it doesn't exist).
- Add the LunchMoney server configuration to the
mcpServerssection. - Save the file and restart your MCP client.
- The LunchMoney tools should now be available in your client.
Requirements
- Node.js 16+ installed on your system
npxavailable in your system PATH- Valid LunchMoney API token with appropriate permissions
Standalone Server
# Run with npx
LUNCHMONEY_API_TOKEN="your-api-token" npx @akutishevsky/lunchmoney-mcp
Remote Deployments
The bundled stdio binary covers desktop MCP clients, but Claude on mobile and the custom connectors feature in claude.ai only speak HTTP. There are two ways to expose this server remotely.
Turnkey: Cloudflare Workers
lunchmoney-mcp-cloudflare wraps this package as a Cloudflare Worker with Google sign-in and an email allowlist in front of the MCP endpoint. The whole stack fits inside Cloudflare's and Google Cloud's free tiers, and a setup.sh wizard handles KV creation, OAuth client setup, secrets, and deploy in one walkthrough. Each authenticated user runs in their own Durable Object, so the config singleton stays per-user.
Self-hosted: HTTP transport on your own host
For a single-user deployment, wire createServer() into StreamableHTTPServerTransport and serve it from any Node HTTP framework. Example with Express:
import express from "express";
import { createServer } from "@akutishevsky/lunchmoney-mcp/server";
import { initializeConfig } from "@akutishevsky/lunchmoney-mcp/config";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
initializeConfig(process.env.LUNCHMONEY_API_TOKEN!);
const server = createServer("1.0.0");
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: () => crypto.randomUUID(),
});
await server.connect(transport);
const app = express();
app.use(express.json());
app.all("/mcp", (req, res) => transport.handleRequest(req, res, req.body));
app.listen(3000);
Swap Express for Hono (via @hono/node-server) or Fastify if you prefer — the transport only needs Node's IncomingMessage and ServerResponse. Add your own auth in front of /mcp — the package ships no transport-level auth.
Multi-tenant warning. This pattern serves one user from one process with one shared API token. To serve multiple users from a single Node process you'd hit the single-tenant config singleton; fork the process per user or use the Cloudflare option above (each user gets their own isolate).
Example Prompts
Here are some example prompts you can use with the LunchMoney MCP server:
Account Overview
- "Show me my LunchMoney account details"
- "What's my current account status?"
Category Management
- "List all my spending categories"
- "Create a new category called 'Subscriptions' with a monthly budget of $100"
- "Show me details for my 'Food & Dining' category"
- "Create a category group for all my entertainment expenses"
- "Delete the 'Unused Category' and reassign its transactions to 'Miscellaneous'"
Transaction Management
- "Show me all transactions from last month"
- "Find all transactions over $100 in the past week"
- "Create a new expense for $45.99 at Amazon in the Shopping category"
- "Update transaction #12345 to change the amount to $50"
- "Show me all pending transactions"
- "Group these coffee shop transactions together"
Budgeting
- "Show me my budget summary for this month"
- "Set a budget of $500 for Groceries this month"
- "Remove the budget for Entertainment category"
- "How much have I spent vs budgeted in each category?"
Manual Account Tracking
- "List all my manual accounts"
- "Create a new manual account for my savings account with a balance of $10,000"
- "Update my investment account balance to $25,000"
- "Close my old credit card account"
Recurring Expenses
- "Show me all my recurring expenses"
- "What subscriptions do I have?"
- "List recurring items for the next 3 months"
Banking Integration
- "Show me all my connected Plaid accounts"
- "Refresh my bank account data"
- "Trigger a sync for my checking account"
Cryptocurrency
- "Show me all my crypto holdings"
- "Update my Bitcoin balance to 0.5 BTC"
- "List all my manually tracked crypto assets"
Analysis & Insights
- "What are my top spending categories this month?"
- "Show me all transactions tagged as 'vacation'"
- "Find all transactions at coffee shops"
- "List all transactions that need to be categorized"
Available Tools
User Tools
get_user- Retrieve current user details
Category Tools
get_all_categories- List all categories (supportsformatandis_groupfilters)get_single_category- Get details for a specific category or category groupcreate_category- Create a category or category group (setis_group=truepluschildren)update_category- Update properties; replaces the children list on category groupsdelete_category- Delete a category; passforce=trueto override dependency check
Tag Tools
get_all_tags- List all tagsget_single_tag- Get a tag by IDcreate_tag- Create a new tagupdate_tag- Update tag propertiesdelete_tag- Delete a tag (withforceto override dependents)
Transaction Tools
get_transactions- List transactions with extensive filtering options (date range, account, category, tag, status, pending, metadata, files, etc)get_single_transaction- Get full transaction details (always includes plaid_metadata, custom_metadata, files, and children for split/group parents)create_transactions- Insert 1–500 transactions in one callupdate_transaction- Partial update of one transactiondelete_transaction- Delete one transaction (cannot be split/group)update_transactions_bulk- Bulk update 1–500 transactionsdelete_transactions_bulk- Bulk delete 1–500 transactions by IDcreate_transaction_group- Create a transaction group from existing transactionsdelete_transaction_group- Ungroup a transaction groupsplit_transaction- Split a transaction into 2–500 childrenunsplit_transaction- Undo a previous splitattach_file_to_transaction- Upload a local file (jpeg/png/heic/heif/pdf, ≤10MB)get_transaction_attachment_url- Get a signed download URL for a file attachmentdelete_transaction_attachment- Delete a file attachment
Recurring Items Tools
get_recurring_items- List recurring items for a date range (include_suggestedfor system suggestions)get_single_recurring_item- Get a recurring item by ID
Budget Tools
get_budget_summary- Per-category budget summary (backed by/summary); supports occurrences, totals, rollover-pool togglesget_budget_settings- Account-wide budget period and display settingsupsert_budget- Create or update a budget for a category and periodremove_budget- Remove a budget for a category and period
Manual Account Tools
get_all_manual_accounts- List all manually-managed accounts (formerly "assets")get_single_manual_account- Get a manual account by IDcreate_manual_account- Create a new manually-managed accountupdate_manual_account- Update properties of a manual accountdelete_manual_account- Delete a manual account; optionally also delete its transactions / balance history
Plaid Account Tools
get_all_plaid_accounts- List all connected Plaid accountsget_single_plaid_account- Get a Plaid account by IDtrigger_plaid_fetch- Trigger fetch of latest data from Plaid (optionally scoped to a date range or account)
Crypto Tools
get_all_crypto- List synced and manual cryptocurrency holdings from/v1/cryptoupdate_manual_crypto- Update a manually-managed cryptocurrency asset via/v1/crypto/manual/:id
Development
Project Structure
lunchmoney-mcp/
├── src/
│ ├── index.ts # Server entry point
│ ├── config.ts # Configuration management
│ ├── types.ts # TypeScript type definitions
│ └── tools/ # Tool implementations
│ ├── user.ts
│ ├── categories.ts
│ ├── tags.ts
│ ├── transactions.ts
│ ├── recurring-items.ts
│ ├── budgets.ts
│ ├── manual-accounts.ts
│ ├── plaid-accounts.ts
│ └── crypto.ts
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md
Building
# Build the MCP server
npm run build
# Build MCPB package for distribution
npm run build:mcpb
Adding New Tools
- Create a new file in
src/tools/ - Implement tool handlers using the MCP SDK
- Register tools in
src/index.ts - Add types to
src/types.tsif needed
Embedding as a library
The package exposes subpath entry points so it can be embedded in a custom transport (for example, a Cloudflare Worker that serves the MCP protocol over HTTP) rather than only the bundled stdio binary:
import { createServer } from "@akutishevsky/lunchmoney-mcp/server";
import { initializeConfig } from "@akutishevsky/lunchmoney-mcp/config";
initializeConfig(process.env.LUNCHMONEY_API_TOKEN!);
const server = createServer("1.0.0");
// connect `server` to whatever transport you need
initializeConfig must be called before any tool is invoked, or the first request throws "Configuration not initialized.".
Single-tenant assumption. The config is held in a module-level singleton. That is safe on per-isolate runtimes — each user gets their own isolate, so there is no shared mutable state to race on. It is not safe on shared-process multi-tenant Node hosts (e.g. one Express or Hono process serving multiple users): concurrent
initializeConfigcalls would race and leak tokens between requests. Those consumers need to fork per-user or refactor the singleton before exposing the package.
API Reference
The server implements the full LunchMoney API v2. For detailed API documentation, see:
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License
常见问题
Lunch Money 是什么?
用于管理 LunchMoney 个人财务的 MCP server,支持 transactions、budgets、categories 等操作。
相关 Skills
Slack动图
by anthropics
面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。
✎ 帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。
MCP构建
by anthropics
聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。
✎ 想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。
接口测试套件
by alirezarezvani
扫描 Next.js、Express、FastAPI、Django REST 的 API 路由,自动生成覆盖鉴权、参数校验、错误码、分页、上传与限流场景的 Vitest 或 Pytest 测试套件。
✎ 帮你把API与集成测试自动化跑顺,减少回归漏测;能力全面,尤其适合复杂接口场景的QA团队。
相关 MCP Server
Slack 消息
编辑精选by Anthropic
Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。
✎ 这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。
by netdata
io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。
✎ 这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。
by d4vinci
Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。
✎ 这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。