LunchMoney MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LUNCHMONEY_API_TOKEN | Yes | Your LunchMoney API token from LunchMoney Developer Settings |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_userA | Get details on the current user |
| get_all_categoriesA | Get a list of all categories associated with the user's account. Returns categories in alphabetical order. |
| get_single_categoryA | Get details on a single category or category group, including the list of children categories for category groups. |
| create_categoryA | 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_categoryA | 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_categoryA | Delete a single category or category group. By default fails (HTTP 422) if dependencies exist, returning a structured |
| get_all_tagsA | Get a list of all tags associated with the user's account. |
| get_single_tagA | Get details of a single tag by ID. |
| create_tagB | Create a new tag. |
| update_tagB | Update properties for an existing tag. |
| delete_tagA | Delete a tag. By default fails (HTTP 422) with a structured |
| get_transactionsA | Retrieve transactions, optionally filtered by date range, account, category, tag, recurring item, status, and more. Returns at most |
| get_single_transactionA | 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_transactionsA | Insert one or more transactions (1-500 per call). Returns inserted transactions plus any skipped duplicates. |
| update_transactionA | Update an existing transaction. Provide any subset of writable fields directly (the v2 API no longer wraps the body in a |
| delete_transactionA | Delete a single transaction. Fails for split/group transactions and their parents — unsplit/ungroup first. Irreversible. |
| update_transactions_bulkA | Update multiple transactions in a single call (1-500). Each entry must include |
| delete_transactions_bulkA | 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_groupA | Create a transaction group from 2-500 existing transactions. Source transactions are hidden from get_transactions and accessible via the new group's |
| delete_transaction_groupA | Delete (ungroup) a transaction group. The original child transactions remain and revert to normal ungrouped transactions. |
| split_transactionA | 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 |
| unsplit_transactionA | 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_transactionA | Attach a local file (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. |
| get_transaction_attachment_urlA | Get a short-lived signed download URL for a transaction file attachment. The response includes the URL and an |
| delete_transaction_attachmentA | Delete a transaction file attachment. Irreversible. |
| get_recurring_itemsA | Retrieve a list of recurring items expected for a specified date range. The |
| get_single_recurring_itemA | Retrieve a single recurring item by ID. Optional date range populates the |
| get_budget_summaryA | 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_settingsA | 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_budgetA | 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_budgetA | 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_accountsA | Get a list of all manually-managed accounts associated with the user. (Formerly known as |
| get_single_manual_accountA | Get details of a single manual account by ID. |
| create_manual_accountB | Create a new manually-managed account. (Formerly |
| update_manual_accountC | Update an existing manually-managed account. (Formerly |
| delete_manual_accountA | 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_accountsA | Get a list of all Plaid (synced) accounts associated with the user. |
| get_single_plaid_accountA | Get details of a single Plaid (synced) account by ID. |
| trigger_plaid_fetchA | 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_all_cryptoA | Get all cryptocurrency holdings from the v1 crypto endpoint. Returns both synced and manually managed crypto assets. |
| update_manual_cryptoA | Update a manually-managed crypto asset via the v1 crypto endpoint. The id must be from a get_all_crypto result with source=manual. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| monthly_spending_breakdown | Analyze spending by category for a given month, combining transaction data with budget targets |
| subscription_audit | Review recurring items for a given month to audit subscriptions and recurring costs |
| net_worth_snapshot | Calculate total net worth by combining manual assets, Plaid accounts, and crypto holdings |
| uncategorized_cleanup | Find uncategorized transactions in a date range and suggest categories for them |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/akutishevsky/lunchmoney-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server