lunchmoney-mcp
This server allows AI assistants to interact with your Lunchmoney financial data through various functionalities:
View recent transactions: Fetch transactions from the past N days with optional limits
Search transactions: Look up transactions by keywords in payee names or notes within a specified time range
Analyze category spending: Track spending in specific categories over a chosen period
Get budget summaries: Retrieve detailed budget information, including spending, remaining amounts, and recurring items, for a specific time period (start and end of month required)
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lunchmoney-mcpshow me my recent transactions from the past week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lunchmoney MCP Server
A Model Context Protocol (MCP) server that lets you interact with your Lunchmoney transactions and budgets through Claude and other AI assistants.
What is this?
This tool allows you to connect your Lunchmoney financial data to Claude AI, so you can ask questions about your spending, analyze your budget, and get insights about your finances through a natural conversation.
Related MCP server: Lunch Money MCP Server
Features
This server provides four main tools:
get-recent-transactions: View your recent transactions from the past N days
search-transactions: Search transactions by keyword in payee names or notes
get-category-spending: Analyze spending in specific categories
get-budget-summary: Get detailed budget information including spending, remaining amounts, and recurring items
Privacy and Data Handling
Important: MCP provides a structured way for Claude to interact with your Lunchmoney data while maintaining privacy boundaries. Here's what you should know:
Claude (the host) creates a client that connects to your local MCP server
Your Lunchmoney API token stays on your local machine
The MCP server runs locally and fetches data from Lunchmoney's API
You will be asked to approve each request to access your Lunchmoney data
When you ask a question about your finances, Claude requests specific information from the MCP server
The MCP server processes your request locally and returns only the relevant results
Claude never has direct access to your full financial data or API token
Only the specific information requested (like transaction summaries or budget status) is shared with Claude
Anthropic's data retention policies apply to these summary results that are part of your conversation
Each server connection is isolated, maintaining clear security boundaries
You can find more about MCP in the documentaion: https://modelcontextprotocol.io/introduction
Installation
Also look at the offical Claude documentation: https://modelcontextprotocol.io/quickstart/user
Using npx
Node.js is a software platform that lets you run JavaScript code on your computer (outside of a web browser).
To install Node.js:
Windows/Mac: Download and run the installer from the official Node.js website
Mac with Homebrew: Run
brew install nodein TerminalLinux: Use your package manager (e.g.,
sudo apt install nodejsfor Ubuntu)
Once Node.js is installed on your computer, you can run the server directly without downloading anything:
Get your Lunchmoney API token from your Lunchmoney developer settings
Open Claude Desktop
Go to Settings → Developer ->
Edit ConfigAdd the following configuration:
{
"mcpServers": {
"lunchmoney": {
"command": "npx",
"args": ["-y", "lunchmoney-mcp-server"],
"env": {
"LUNCHMONEY_TOKEN": "your_token_here"
}
}
}
}Replace your_token_here with your actual Lunchmoney API token.
Important Note: After changing the configuration, you may need to restart Claude Desktop for the changes to take effect.
Example Usage
Once configured in Claude Desktop, you can ask questions like:
Transactions
"Show me my recent transactions from the past week"
"Search for all transactions at Amazon"
"How much did I spend on restaurants last month?"
"Find transactions tagged as business expenses"
Budgets
"Show me my budget summary for this month"
"What's my budget status from January to March 2024?"
"How much of my food budget is remaining?"
"Show me categories where I'm over budget"
What is MCP?
The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). Think of MCP like a USB-C port for AI applications - it provides a standardized way to connect AI models to different data sources and tools.
Some key benefits of MCP:
Standardized way to expose data and functionality to LLMs
Human-in-the-loop security (all actions require user approval)
Growing ecosystem of pre-built integrations
Works with multiple AI models and applications
Troubleshooting
Claude says it can't connect to my MCP server:
Make sure the configuration in Claude's Developer settings is correct
Try restarting Claude Desktop after changing the configuration
Check that your Lunchmoney API token is valid
Claude doesn't recognize Lunchmoney commands:
Start a new conversation in Claude
Try explicitly mentioning Lunchmoney in your query (e.g., "Show me my recent Lunchmoney transactions")
API Notes
Budget data must use month boundaries for dates (e.g., 2024-01-01 to 2024-01-31)
Transactions can use any date range
All monetary values are returned in their original currency
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
4 toolsget-budget-summaryC
Get budget summary for a specific time period
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Start date (YYYY-MM-DD, should be start of month) | |
| end_date | Yes | End date (YYYY-MM-DD, should be end of month) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves a 'budget summary' but doesn't explain what that summary includes (e.g., categories, totals, trends), whether it's read-only (implied but not explicit), or any limitations like rate limits or authentication needs. This leaves significant gaps for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the 'budget summary' output contains, how it's structured, or any behavioral traits like error handling. For a tool with two parameters and no structured output documentation, this leaves the agent with insufficient context to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with both parameters ('start_date' and 'end_date') fully documented in the schema. The description adds minimal value by mentioning 'time period,' which aligns with the schema but doesn't provide additional context like format examples or edge cases beyond what's already specified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('budget summary') with a specific scope ('for a specific time period'), which makes the purpose understandable. However, it doesn't differentiate this tool from its siblings like 'get-category-spending' or 'get-recent-transactions', which likely provide related but different budget/transaction data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get-category-spending' or 'get-recent-transactions', nor does it specify prerequisites, exclusions, or appropriate contexts for usage beyond the time period requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-category-spendingC
Get spending in a category
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | Category name | |
| days | No | Number of days to look back |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get spending' implies a read operation, but it doesn't specify if this requires authentication, has rate limits, returns historical or real-time data, or what format the spending data is in. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a read operation with two parameters) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'spending' entails (e.g., total amount, list of transactions), how results are returned, or any behavioral traits, leaving the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description doesn't add any parameter semantics beyond what the schema provides. With 100% schema description coverage, the schema already documents 'category' as 'Category name' and 'days' as 'Number of days to look back' with a default of 30. The baseline score of 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get spending in a category' clearly states the verb 'Get' and resource 'spending in a category', making the purpose understandable. However, it doesn't distinguish this tool from siblings like 'get-budget-summary' or 'get-recent-transactions' which might also involve spending data, so it lacks sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'search-transactions' for broader queries or 'get-budget-summary' for aggregated data, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-recent-transactionsC
Get recent transactions
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back | |
| limit | No | Maximum number of transactions to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Get recent transactions' implies a read operation but reveals nothing about permissions, rate limits, pagination, error conditions, or what 'recent' means contextually. For a tool with zero annotation coverage, this leaves critical behavioral traits undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at three words with zero wasted text. It's front-loaded and efficiently communicates the core function without unnecessary elaboration. While under-specified, it earns full marks for brevity and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is incomplete. It fails to explain what 'recent' means, how results are ordered, what data fields are returned, or how it differs from sibling tools. The agent lacks sufficient context to use this tool effectively without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters ('days' and 'limit') well-documented in the schema. The description adds no parameter semantics beyond what the schema already provides. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get recent transactions' is a tautology that essentially restates the tool name without adding meaningful differentiation. It specifies the verb 'Get' and resource 'transactions' but lacks specificity about scope or how it differs from sibling tools like 'search-transactions'. This provides minimal value beyond the name itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'search-transactions' or 'get-category-spending'. There's no mention of context, prerequisites, or exclusions. The agent must infer usage from the name alone, which is insufficient for informed tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search-transactionsC
Search transactions by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Search term to look for | |
| days | No | Number of days to look back | |
| limit | No | Maximum number of transactions to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'search' implies a read operation, the description doesn't address important behavioral aspects like whether this requires authentication, what happens with no results, whether results are paginated, or any rate limits. For a search tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at just three words, with zero wasted language. It's front-loaded with the essential information (search transactions) and specifies the mechanism (by keyword) efficiently. Every word serves a clear purpose in this minimal description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 3 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what constitutes a 'transaction' in this context, what fields are searched, the format of results, or how the search algorithm works. The agent would need to guess about the tool's behavior and output based on minimal information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions searching 'by keyword' which aligns with one of the three parameters. However, with 100% schema description coverage, all parameters are already well-documented in the schema itself. The description adds minimal value beyond what's in the structured schema, meeting the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('search') and resource ('transactions'), and specifies the search mechanism ('by keyword'). However, it doesn't differentiate this tool from its sibling 'get-recent-transactions' which also deals with transactions, leaving some ambiguity about when to use one versus the other.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling tools (get-budget-summary, get-category-spending, get-recent-transactions) or explain when keyword searching is preferable to other transaction retrieval methods. The agent receives no contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose: get-budget-summary targets budget overviews, get-category-spending focuses on category-level data, get-recent-transactions retrieves chronological transaction lists, and search-transactions enables keyword-based queries. There is no overlap in functionality, making tool selection straightforward for an agent.
All tool names follow a consistent verb-noun pattern with hyphens (e.g., get-budget-summary, search-transactions). The naming is uniform across all four tools, using 'get' for retrieval operations and 'search' for querying, which enhances predictability and readability.
With 4 tools, the count is reasonable for a personal finance domain, covering key operations like summaries, category analysis, and transaction retrieval. However, it feels slightly thin as it lacks tools for creating or updating data (e.g., adding transactions or categories), which might be expected in a full-featured finance server.
The tool set covers read-only operations well, including summaries, category spending, and transaction searches, but there are notable gaps. It lacks CRUD capabilities for transactions, categories, or budgets (e.g., create, update, delete), which limits agents to viewing data without modifying it, potentially causing workflow dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Ramp MCP server enables users to securely connect Ramp with AI assistants like ChatGPT and Claude to query financial data and take actions using natural language. It transforms Ramp's developer API into a SQL interface that LLMs can query, allowing admins to analyze spend trends, identify cost savings, and run complex SQL analyses on comprehensive datasets (transactions, purchase orders, vendors, users), while all users can manage cards, view transactions, request reimbursements, and get expense policy answers.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
Personal finance for AI agents — onboard, import statements, categorize & budget over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that allows AI assistants to interact with Lunch Money accounts, enabling management of transactions, categories, budgets, and other financial data through natural language commands.MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI assistants to interact directly with Lunch Money's financial API, allowing users to query transactions, access budget information, and perform financial analysis through natural language.
- AlicenseBqualityAmaintenanceAn MCP server implementation that provides programmatic access to personal finance data through LunchMoney's API, enabling AI assistants to manage transactions, budgets, categories, and assets.592,36198MIT
- AlicenseBqualityCmaintenanceAn MCP server providing full integration with the Lunch Money API to manage financial data including transactions, budgets, assets, and categories. It enables AI assistants to perform CRUD operations on financial records through a standardized HTTP interface.26MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/leafeye/lunchmoney-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server