Lunch Money MCP server
MCP server for managing LunchMoney personal finances: transactions, budgets, categories, and more.
107 stars
Reviews
Write oneNobody has reviewed Lunch Money yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Lunch Money tools (59, 28 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_supported_cryptocurrencyAdd a new cryptocurrency to the supported manual-crypto list by submitting its CoinGecko coin-page URL. Only needed when get_supported_cryptocurrencies does not already list the symbol you want to track.
attach_file_to_transactionAttach a local image or PDF receipt (max 10MB) to a transaction. Allowed types: image/jpeg, image/png, image/heic, image/heif, application/pdf. The file is read from the local filesystem of the host running this MCP server, and its type is determined from its actual contents — files that are not a real image or PDF are rejected. If LUNCHMONEY_ATTACHMENTS_DIR is set on the host, only files inside t
create_categorywrite actionCreate a new category or a category group. Set is_group=true to create a category group; supply children as an array of existing category IDs and/or strings (names of new sub-categories to create).
create_manual_accountwrite actionCreate a new manually-managed account. (Formerly `create_asset`.)
create_manual_cryptowrite actionCreate a manually-managed crypto asset. The symbol must match one returned by get_supported_cryptocurrencies.
create_tagwrite actionCreate a new tag.
create_transaction_groupwrite actionCreate a transaction group from 2-500 existing transactions. Source transactions are hidden from get_transactions and accessible via the new group's `children` (set include_children=true on get_single_transaction). Cannot include split or recurring transactions.
create_transactionswrite actionInsert one or more transactions (1-500 per call). Returns inserted transactions plus any skipped duplicates.
delete_account_balance_historywrite actionDelete ALL historical balance entries for a single account. This is irreversible and affects the Net Worth views. To remove a single month, use delete_balance_history_entry instead.
delete_balance_history_entrywrite actionDelete a single historical balance entry by its id. The id must come from an entry with type=historical in a balance history response; ephemeral `current` entries have no id and cannot be deleted.
delete_categorywrite actionDelete a single category or category group. By default fails (HTTP 422) if dependencies exist, returning a structured `dependents` payload. Set force=true to delete and disassociate from all related budgets, transactions, recurring items, etc. Force delete is irreversible.
delete_crypto_synced_balance_historywrite actionDelete ALL historical balance entries for a synced crypto holding. This is irreversible and affects the Net Worth views.
delete_manual_accountwrite actionDelete a manually-managed account. Optionally also delete its transactions/rules/recurring items, and/or its balance history. Both deletion options are irreversible.
delete_manual_cryptowrite actionDelete a manually-managed crypto asset. If the asset has balance history, keep_history must be set explicitly or the API rejects the request. Irreversible.
delete_tagwrite actionDelete a tag. By default fails (HTTP 422) with a structured `dependents` payload if the tag is in use by transactions or rules. Set force=true to delete and disassociate from those records.
delete_transactionwrite actionDelete a single transaction. Fails for split/group transactions and their parents — unsplit/ungroup first. Irreversible.
delete_transaction_attachmentwrite actionDelete a transaction file attachment. Irreversible.
delete_transaction_groupwrite actionDelete (ungroup) a transaction group. The original child transactions remain and revert to normal ungrouped transactions.
delete_transactions_bulkwrite actionBulk-delete transactions by ID (1-500). Fails if any ID is a split or group parent, or part of a split/group; unsplit or ungroup those first. Irreversible.
get_account_balance_historyGet monthly balance history for a single account. Call get_all_manual_accounts, get_all_plaid_accounts, or get_all_manual_crypto first to discover ids. For synced crypto holdings use get_crypto_synced_balance_history instead.
get_all_categoriesGet a list of all categories associated with the user's account. Returns categories in alphabetical order.
get_all_manual_accountsGet a list of all manually-managed accounts associated with the user. (Formerly known as `assets` in the v1 API.)
get_all_manual_cryptoGet all manually-managed crypto balances associated with the user.
get_all_plaid_accountsGet a list of all Plaid (synced) accounts associated with the user.
get_all_synced_cryptoGet all synced crypto accounts (Coinbase, Kraken, Ethereum wallets) and their nested per-symbol balances. Synced accounts are connected in the Lunch Money web app and cannot be created or edited through the API.
get_all_tagsGet a list of all tags associated with the user's account.
get_balance_historyGet monthly account balance history across all accounts — the data behind the Net Worth views in the LunchMoney app. History is monthly. With no month range, returns all available history plus an ephemeral `current` entry for the current month, which is calculated on demand and may change between requests. Only months with data are included.
get_budget_settingsGet budget period and display settings for the account (granularity, period length, anchor date, hide-no-activity preference, income option, rollover-left-to-budget setting).
get_budget_summaryGet a summary of the user's budget for a specified date range. Returns per-category totals (other_activity, recurring_activity, budgeted, available, recurring_remaining, recurring_expected). Set include_occurrences=true for a per-period breakdown matching the account's budget periodicity. (Backed by the v2 GET /summary endpoint.)
get_crypto_synced_balance_historyGet monthly balance history for a synced crypto holding, identified by its account id and ticker symbol. Synced crypto is scoped per symbol, so it is not available through get_account_balance_history.
get_recurring_itemsRetrieve a list of recurring items expected for a specified date range. The `matches` object on each item is populated based on the requested range.
get_single_categoryGet details on a single category or category group, including the list of children categories for category groups.
get_single_manual_accountGet details of a single manual account by ID.
get_single_manual_cryptoGet a single manually-managed crypto balance by ID. Call get_all_manual_crypto first to discover ids.
get_single_plaid_accountGet details of a single Plaid (synced) account by ID.
get_single_recurring_itemRetrieve a single recurring item by ID. Optional date range populates the `matches` object.
get_single_synced_cryptoGet a single synced crypto account and all its nested balances by ID.
get_single_tagGet details of a single tag by ID.
get_single_transactionGet details of a specific transaction. The response always includes plaid_metadata, custom_metadata, files, and (for split or group parents) the children array — none of which are returned by default in get_transactions.
get_supported_cryptocurrenciesGet the list of cryptocurrencies supported for manual tracking. The `symbol` of an entry here is what must be passed to create_manual_crypto.
get_synced_crypto_balanceGet a single balance held inside a synced crypto account, looked up by its cryptocurrency symbol.
get_transaction_attachment_urlGet a short-lived signed download URL for a transaction file attachment. The response includes the URL and an `expires_at` timestamp.
get_transactionsRetrieve transactions, optionally filtered by date range, account, category, tag, recurring item, status, and more. Returns at most `limit` transactions (default 1000, max 2000); `has_more` is set on the response when more match the filters. Pending and split-parent / group-child transactions are excluded by default.
get_userGet details on the current user
refresh_synced_cryptoTrigger a balance refresh for a synced crypto account and return the refreshed account. Reaches out to the external crypto provider.
remove_budgetwrite actionRemove the budget for a specific category and period. The request is idempotent — succeeds even if no budget exists for the period.
split_transactionSplit an existing transaction into 2-500 child transactions. The sum of child amounts must equal the parent's amount. After splitting, the parent is hidden from get_transactions and accessible via get_single_transaction (returns the parent with `children`).
trigger_plaid_fetchTrigger a fetch of latest data from Plaid. Optionally scope the fetch to a date range and/or a specific Plaid account ID. Note: Plaid enforces a minimum 60-second delay between fetch requests; fetching may take up to 5 minutes.
unsplit_transactionUnsplit a previously split transaction by deleting its children and restoring the parent. Pass the parent (split_parent_id) — not a child — as the path id.
update_categorywrite actionUpdate properties for an existing category or category group. For category groups, supplying children replaces the group's full child list. Cannot be used to convert between category and category group.
update_deleted_account_detailswrite actionUpdate the display details shown for a deleted account in the Net Worth views. Applies to all historical entries for that deleted source. At least one field must be provided; pass null to clear a field.
update_manual_accountwrite actionUpdate an existing manually-managed account. (Formerly `update_asset`.)
update_manual_cryptowrite actionUpdate a manually-managed crypto balance. At least one of name, display_name, institution_name, or balance must be supplied. The symbol of an existing balance cannot be changed.
update_tagwrite actionUpdate properties for an existing tag.
update_transactionwrite actionUpdate an existing transaction. Provide any subset of writable fields directly (the v2 API no longer wraps the body in a `transaction` envelope). Cannot modify split or grouped transactions; use the corresponding split/group tools instead.
update_transactions_bulkwrite actionUpdate multiple transactions in a single call (1-500). Each entry must include `id` plus at least one writable field. Cannot be used to modify split or grouped transactions.
upsert_account_balance_historywrite actionCreate or update monthly balance history entries for a single account. Every month must be a past calendar month — the current month is calculated on demand and cannot be written. The request is all-or-nothing: if any entry fails validation, none are applied. The response contains only the entries submitted, not the account's full history.
upsert_budgetwrite actionCreate or update a budget for a category and budget period. The start_date must be a valid budget period start for the account (see get_budget_settings).
upsert_crypto_synced_balance_historywrite actionCreate or update monthly balance history entries for a synced crypto holding. Every month must be a past calendar month. If an entry sets `symbol`, it must match the symbol argument. The request is all-or-nothing.
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan39 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 52 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Lunch Money compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 78/100
- higher than 57% of 48,255 servers
- Tools
- 59
- the typical server has 7
- Tools that change things
- 47%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 107
- more than 95% of 28,688 servers
What its tools let an agent do: 29 read · 7 create · 10 change · 12 delete · 1 run or deploy
Install Lunch Money in Claude Code, Cursor or VS Code
Runs npx -y @akutishevsky/lunchmoney-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add lunchmoney-mcp -- npx -y @akutishevsky/lunchmoney-mcp
What the publisher says
From the Lunch Money repository's README, as published. We do not edit it. Read it on GitHub
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.
Heads up — v3.0.0 removes getallcrypto. The crypto tools now use LunchMoney's v2 crypto endpoints, which split manual and synced holdings into separate resources and offer no combined equivalent of v1's GET /crypto. Replace getallcrypto with getallmanualcrypto and getallsyncedcrypto, which together return everything it did and more. updatemanualcrypto also drops its currency parameter. Nothing outside the crypto domain changed; if you don't use the crypto tools, upgrading from 2.x needs no action. See CHANGELOG.md. If you depend on getallcrypto, pin @akutishevsky/lunchmoney-mcp@^2.2.0.
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, assets is now manualaccounts, tags arrays are now tagids, transaction assetid is now manualaccountid, the debitas_negative toggle is gone, and the budget summary moved to a new /summary endpoint). 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
- Installation Options
- MCP Bundle
- Claude Code CLI
- Codex CLI
- Manual MCP Configuration
- Standalone Server
- Remote Deployments
- Example Prompts
- Available Tools
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
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Lunch Money: common questions
- Is Lunch Money MCP server safe?
- Mostly: it is graded B (78/100). Read the Lunch Money safety report
- How do I install Lunch Money?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Lunch Money need an API key?
- Yes. The registry entry asks for
LUNCHMONEY_API_TOKEN. - Is Lunch Money maintained?
- The last commit was 93 days ago (2026-08-03). The latest release is v3.0.0.
- How does Lunch Money compare with other MCP servers?
- safety score 78/100 (higher than 57% of 48,255 servers); tools 59 (the typical server has 7); tools that change things 47% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.