LunchMoney MCP Server
Read and edit your Lunch Money budget: transactions, categories, budgets, accounts and net worth history
Self-hosted Cloudflare Worker that puts the LunchMoney MCP tools behind Google sign-in for remote use
By Brian Marks (individual) TypeScript Finance and paymentsCloud platforms
This project packages the community LunchMoney MCP server by akutishevsky as a Cloudflare Worker, so a LunchMoney user can add it to Claude on the web, desktop or phone as a custom connector instead of running a local stdio process. Whoever deploys it runs their own copy on their own Cloudflare account; there is no shared public endpoint.
People who connect sign in with a Google account, optionally limited to an email allowlist, and on first connect paste their own LunchMoney API token into a /setup page. The Worker keeps each token in a Cloudflare KV namespace keyed by the Google account id and uses it for that person's requests only, so one deployment can serve several LunchMoney users and the operator needs no LunchMoney token of their own.
The tools are those of the wrapped server: 50 in all, covering transactions (including bulk create, update and delete, splits, groups and attachments), categories, tags, budgets, recurring items, manual and Plaid accounts, crypto holdings and balance history. The Worker pins a fork of that server at a fixed commit (package.json depends on github:bm1549/lunchmoney-mcp at df910c7) rather than the published npm package, and that fork targets LunchMoney's v2 API, which its README describes as alpha.
Operator: a Cloudflare account (free tier per the README), a Google Cloud project with an OAuth web client whose redirect URI is the Worker's /authorize/callback, Node 22 or newer, and wrangler (brought by npm install) to create two KV namespaces and deploy. Each user: a Google account (on the allowlist if one is set) and a LunchMoney API token from my.lunchmoney.app/developers.
Version 0.3.0 has no self-serve way to change or delete a stored LunchMoney token: the operator must delete the user's KV row with wrangler. The /setup link expires after 30 minutes. Client registration at /register is rate limited to 2 requests per minute per IP (wrangler.jsonc). attach_file_to_transaction opens a file path on the machine running the server (src/attachments.ts of the pinned fork), which here is the Worker, not the user's computer. The wrapped server uses LunchMoney's v2 API, in alpha, and its tool names differ from v1.x.
Suits a LunchMoney user, or a small group such as a household, who wants LunchMoney tools in Claude on the web or mobile and is willing to set up Cloudflare and a Google OAuth client. Someone using a desktop client only can run the upstream lunch-money server (akutishevsky/lunchmoney-mcp, which we list) locally over stdio with a token, avoiding the Google and Cloudflare setup and keeping the token off a hosted store. The connector has full read and write tools, so pick it only if handing the assistant edit rights to your finances is acceptable.
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_all_cryptoupdate_manual_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