lunchmoney-mcp-cloudflare
Self-hosted Cloudflare Worker that puts the LunchMoney MCP tools behind Google sign-in for remote use
Read and edit your Lunch Money budget: transactions, categories, budgets, accounts and net worth history
By Anton Kutishevskyi (individual) TypeScript Local · stdio Finance and payments
49 popularity score ★ 113 ↓ 409/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs LUNCHMONEY_API_TOKEN. Replace each <NAME> with your value.
claude mcp add lunchmoney -e LUNCHMONEY_API_TOKEN=<LUNCHMONEY_API_TOKEN> -- npx -y @akutishevsky/lunchmoney-mcp{
"mcpServers": {
"lunchmoney": {
"command": "npx",
"args": [
"-y",
"@akutishevsky/lunchmoney-mcp"
],
"env": {
"LUNCHMONEY_API_TOKEN": "<LUNCHMONEY_API_TOKEN>"
}
}
}
}{
"mcpServers": {
"lunchmoney": {
"command": "npx",
"args": [
"-y",
"@akutishevsky/lunchmoney-mcp"
],
"env": {
"LUNCHMONEY_API_TOKEN": "<LUNCHMONEY_API_TOKEN>"
}
}
}
}{
"servers": {
"lunchmoney": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@akutishevsky/lunchmoney-mcp"
],
"env": {
"LUNCHMONEY_API_TOKEN": "<LUNCHMONEY_API_TOKEN>"
}
}
}
}[mcp_servers.lunchmoney]
command = "npx"
args = ["-y", "@akutishevsky/lunchmoney-mcp"]
[mcp_servers.lunchmoney.env]
LUNCHMONEY_API_TOKEN = "<LUNCHMONEY_API_TOKEN>"gemini mcp add --scope user -e LUNCHMONEY_API_TOKEN=<LUNCHMONEY_API_TOKEN> lunchmoney npx -- -y @akutishevsky/lunchmoney-mcpLUNCHMONEY_API_TOKEN |
Required: Personal API token from Lunch Money's developer settings; the server exits without it. |
|---|---|
LUNCHMONEY_ATTACHMENTS_DIR |
Optional: Directory that attach_file_to_transaction may read from; unset, any readable path is allowed. |
LUNCHMONEY_DEBUG |
Optional: Set to true to log API requests and responses to stderr. |
This is a community-built stdio server that connects an MCP client to a Lunch Money personal-finance account through Lunch Money's v2 API (https://api.lunchmoney.dev/v2). It runs on your machine with your personal API token and reaches the whole account: transactions, categories and category groups, tags, recurring items, budgets, manually tracked accounts, Plaid-connected bank accounts, crypto holdings and monthly balance history.
Most of it is full create, read, update and delete. Transactions can be filtered by date, account, category, tag and status, inserted, edited or deleted 500 at a time, split, grouped, and given receipt files from the local disk. Bank syncs and synced-crypto refreshes can be triggered, and past monthly balances behind the Net Worth views can be set or cleared. Responses are encoded as TOON rather than JSON to use fewer tokens.
Version 3.0.0 registers 59 tools across ten groups. Its server code also registers four prompts the README does not list: monthly_spending_breakdown, subscription_audit, net_worth_snapshot and uncategorized_cleanup, each a ready-made set of steps (for example, comparing a month's spending against budget targets) built from the tools (src/server.ts, src/prompts.ts). The package can also be imported as a library to put behind your own HTTP transport. A Claude Desktop bundle (.mcpb) is offered on the releases page.
| Runtime | Node.js 16+ |
|---|
Node.js with npx on PATH (the README asks for Node.js 16 or later). A Lunch Money account and a personal API token from my.lunchmoney.app/developers, passed as LUNCHMONEY_API_TOKEN; the server exits at start without it. Bank syncing needs accounts already connected through Plaid in Lunch Money.
It targets Lunch Money's v2 API, still in alpha per its makers. Version 2.0.0 broke compatibility with 1.x (renamed tools and fields; pin ^1.4.3 for the old ones), and 3.0.0 removed get_all_crypto in favour of get_all_manual_crypto and get_all_synced_crypto (pin ^2.2.0 to keep it). It speaks stdio only: an HTTP endpoint means writing your own wrapper, which ships with no auth, and the token is held in one process-wide setting, so one process serves one user. File attachments are limited to JPEG, PNG, HEIC, HEIF or PDF up to 10 MB. Balance history can only be written for past months. The README's manual config example omits -y from npx; the form given here includes it.
Suits a Lunch Money user who wants to query and tidy their own finances from a desktop assistant: categorise transactions, audit subscriptions, adjust budgets or log manual balances. Because most tools write and several delete in bulk, it suits people willing to review what the assistant changes; there is no read-only mode. It is not made by Lunch Money. Pick something else if you need a hosted endpoint for mobile or claude.ai without running your own wrapper, or a stable API surface, since it follows an alpha API.
get_userget_all_categoriesget_single_categorycreate_categoryupdate_categorydelete_categoryget_all_tagsget_single_tagcreate_tagupdate_tagdelete_tagget_transactionsget_single_transactioncreate_transactionsupdate_transactiondelete_transactionupdate_transactions_bulkdelete_transactions_bulkcreate_transaction_groupdelete_transaction_groupsplit_transactionunsplit_transactionattach_file_to_transactionget_transaction_attachment_urldelete_transaction_attachmentget_recurring_itemsget_single_recurring_itemget_budget_summaryget_budget_settingsupsert_budgetremove_budgetget_all_manual_accountsget_single_manual_accountcreate_manual_accountupdate_manual_accountdelete_manual_accountget_all_plaid_accountsget_single_plaid_accounttrigger_plaid_fetchget_supported_cryptocurrenciesadd_supported_cryptocurrencyget_all_manual_cryptoget_single_manual_cryptocreate_manual_cryptoupdate_manual_cryptodelete_manual_cryptoget_all_synced_cryptoget_single_synced_cryptoget_synced_crypto_balancerefresh_synced_cryptoget_balance_historyget_account_balance_historyupsert_account_balance_historydelete_account_balance_historyget_crypto_synced_balance_historyupsert_crypto_synced_balance_historydelete_crypto_synced_balance_historydelete_balance_history_entryupdate_deleted_account_details