LunchMoney
About
MCP server for LunchMoney personal finance and budgeting tool.
Details
- Author
- akutishevsky
- Downloads
- 339
- Categories
- Other, AI
Jump to
- Transaction management: query, create, and update transactions
- Budget operations: monitor and create budget categories
- Category management with AI-powered categorization
- Asset tracking for manually-tracked and cryptocurrency holdings
- Recurring items: subscription and expense management
- Natural language queries for spending insights
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
LunchMoneyCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Install the server by running npx @akutishevsky/lunchmoney-mcp. You need a Lunch Money account with API access and a compatible MCP client such as Claude Desktop.
get_user
Get details on the current user
get_all_categories
Get a list of all categories associated with the user's account. Returns categories in alphabetical order.
get_single_category
Get details on a single category or category group, including the list of children categories for category groups.
create_category
Create 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).
update_category
Update 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.
delete_category
Delete 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.
get_all_tags
Get a list of all tags associated with the user's account.
get_single_tag
Get details of a single tag by ID.
create_tag
Create a new tag.
update_tag
Update properties for an existing tag.
delete_tag
Delete 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.
get_transactions
Retrieve 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_single_transaction
Get 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.
create_transactions
Insert one or more transactions (1-500 per call). Returns inserted transactions plus any skipped duplicates.
update_transaction
Update 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.
delete_transaction
Delete a single transaction. Fails for split/group transactions and their parents — unsplit/ungroup first. Irreversible.
update_transactions_bulk
Update 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.
delete_transactions_bulk
Bulk-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.
create_transaction_group
Create 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.
delete_transaction_group
Delete (ungroup) a transaction group. The original child transactions remain and revert to normal ungrouped transactions.
split_transaction
Split 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`).
unsplit_transaction
Unsplit 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.
attach_file_to_transaction
Attach 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 that directory can be attached.
get_transaction_attachment_url
Get a short-lived signed download URL for a transaction file attachment. The response includes the URL and an `expires_at` timestamp.
delete_transaction_attachment
Delete a transaction file attachment. Irreversible.
get_recurring_items
Retrieve 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_recurring_item
Retrieve a single recurring item by ID. Optional date range populates the `matches` object.
get_budget_summary
Get 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_budget_settings
Get budget period and display settings for the account (granularity, period length, anchor date, hide-no-activity preference, income option, rollover-left-to-budget setting).
upsert_budget
Create 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).
remove_budget
Remove the budget for a specific category and period. The request is idempotent — succeeds even if no budget exists for the period.
get_all_manual_accounts
Get a list of all manually-managed accounts associated with the user. (Formerly known as `assets` in the v1 API.)
get_single_manual_account
Get details of a single manual account by ID.
create_manual_account
Create a new manually-managed account. (Formerly `create_asset`.)
update_manual_account
Update an existing manually-managed account. (Formerly `update_asset`.)
delete_manual_account
Delete a manually-managed account. Optionally also delete its transactions/rules/recurring items, and/or its balance history. Both deletion options are irreversible.
get_all_plaid_accounts
Get a list of all Plaid (synced) accounts associated with the user.
get_single_plaid_account
Get details of a single Plaid (synced) account by ID.
trigger_plaid_fetch
Trigger 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.
get_supported_cryptocurrencies
Get the list of cryptocurrencies supported for manual tracking. The `symbol` of an entry here is what must be passed to create_manual_crypto.
add_supported_cryptocurrency
Add 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.
get_all_manual_crypto
Get all manually-managed crypto balances associated with the user.
get_single_manual_crypto
Get a single manually-managed crypto balance by ID. Call get_all_manual_crypto first to discover ids.
create_manual_crypto
Create a manually-managed crypto asset. The symbol must match one returned by get_supported_cryptocurrencies.
update_manual_crypto
Update 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.
delete_manual_crypto
Delete a manually-managed crypto asset. If the asset has balance history, keep_history must be set explicitly or the API rejects the request. Irreversible.
get_all_synced_crypto
Get 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_single_synced_crypto
Get a single synced crypto account and all its nested balances by ID.
get_synced_crypto_balance
Get a single balance held inside a synced crypto account, looked up by its cryptocurrency symbol.
refresh_synced_crypto
Trigger a balance refresh for a synced crypto account and return the refreshed account. Reaches out to the external crypto provider.
get_balance_history
Get 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_account_balance_history
Get 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.
upsert_account_balance_history
Create 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.
delete_account_balance_history
Delete 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.
get_crypto_synced_balance_history
Get 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.
upsert_crypto_synced_balance_history
Create 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.
delete_crypto_synced_balance_history
Delete ALL historical balance entries for a synced crypto holding. This is irreversible and affects the Net Worth views.
delete_balance_history_entry
Delete 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.
update_deleted_account_details
Update 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.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"lunchmoney": {
"lunchmoney": {
"command": "npx",
"args": [
"@akutishevsky/lunchmoney-mcp"
],
"env": {
"LUNCHMONEY_API_TOKEN": "your-api-token-here"
}
}
}
}
}
McpServers
{
"lunchmoney": {
"command": "npx",
"args": [
"@akutishevsky/lunchmoney-mcp"
],
"env": {
"LUNCHMONEY_API_TOKEN": "your-api-token-here"
}
}
}
Here's a post for the MCP.so website:
Lunch Money MCP Server - Personal Finance AI Assistant
Transform your personal finance management with natural language conversations through Claude.
Key Features
- Transaction Management: Query, create, and update transactions conversationally
- Budget Operations: Monitor spending against budgets and create new budget categories
- Category Management: Organize expenses with AI-powered categorization assistance
- Asset Tracking: Manage manually-tracked assets and cryptocurrency holdings
- Recurring Items: Handle subscription tracking and recurring expense management
- Natural Language Queries: "Show me restaurants vs groceries spending this quarter" instead of manual filtering
Use Cases
- Get instant spending insights: "How much did I spend on coffee this month?"
- Budget planning: "Create a $500 monthly budget for entertainment"
- Expense tracking: "Add a $45 grocery transaction from yesterday"
- Financial analysis: "Compare my Q1 vs Q2 spending by category"
Installation
``bash``
npx @akutishevsky/lunchmoney-mcp
Requirements
- Lunch Money account with API access
- Claude Desktop or compatible MCP client
Repository: https://github.com/akutishevsky/lunchmoney-mcp
Perfect for personal finance enthusiasts who want AI-powered insights into their spending habits and budget management.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




