LunchmoneyBLOCK
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
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.
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 C
67bd1d1ad5a4OBSERVED · 2026-10-08Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add lunchmoney-mcp-server --env LUNCHMONEY_TOKEN=${LUNCHMONEY_TOKEN} -- npx -y [email protected]{
"mcpServers": {
"lunchmoney-mcp-server": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"LUNCHMONEY_TOKEN": "${LUNCHMONEY_TOKEN}"
}
}
}
}Exposed tools (4)
4 read · 0 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
get-budget-summary | read | Get budget summary for a specific time period |
get-category-spending | read | Get spending in a category |
get-recent-transactions | read | Get recent transactions |
search-transactions | read | Search transactions by keyword |
Trust audit
BLOCKgrade F · trust 45/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- declared (5 observation(s))
- Shell
- declared (9 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
exec(sql: string): void;
var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site','return function (' + args + ') {' +exec(string: string): RegExpExecArray | null;
request ~ requests
node_modules/.bin/tsc
node_modules/.bin/tsserver
* console.log(myURL.password);
"chars": "€پ‚ƒ„...†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—کTMڑ›œں ،¢£¤¥¦§ ̈©ھ«¬® ̄°±23 ́μ¶· ̧1؛»1⁄41⁄23⁄4؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûüے"
"chars": "«»...“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาําิีึืฺุู–—฿เแโใไๅๆ็่้๊๋์ํTM๏๐๑๒๓๔๕๖๗๘๙®©����"
.package-lock.json
.prettierrc.json
function atob(data: string): string;
atob(data: string): string;
declare function atob(data: string): string;
const decoded = JSON.parse(atob(base64));
const decoded = JSON.parse(atob(base64));
content-type, eventsource, raw-body, zod, zod-to-json-schema, @eslint/js, @types/content-type, @types/eslint__js
undici-types
@types/jest, @types/node, jest, ts-jest, typescript
@sanity/pkg-utils, @sanity/semantic-release-preset, @types/node, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, eslint, eslint-config-prettier, eslint-config-sanity
eventsource-parser, @sanity/pkg-utils, @sanity/semantic-release-preset, @tsconfig/strictest, @types/sinon, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, esbuild
node_modules/@modelcontextprotocol/sdk/dist/cjs/types.d.ts
node_modules/@modelcontextprotocol/sdk/dist/esm/types.d.ts
node_modules/typescript/lib/_tsc.js
Gates applied: no_behavioural_pass.
67bd1d1ad5a4full audit observations/trust-audit/mcp-server/leafeye__lunchmoney.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-08 | 67bd1d1ad5a4 | BLOCK | F | 45 | first audit |
Questions
What tools does Lunchmoney expose?
4 in total: 4 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is Lunchmoney safe to connect to an agent?
No — not without reading the findings first. The audit graded it F (45/100) and found 5 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does Lunchmoney need?
It reads LUNCHMONEY_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Lunchmoney run?
It speaks sse and stdio, so it runs as a local process your client starts. It is published on npm as lunchmoney-mcp-server at 1.1.0.
How current is this page?
The grade is for one exact copy of the source (67bd1d1ad5a4), read on 2026-10-08. The repository is watched and re-audited when it changes.