The YNAB MCP Server connects YNAB (You Need A Budget) to AI assistants via the Model Context Protocol, enabling budget management through natural language commands.
Budget Management
List all budgets, retrieve detailed budget information, and set/get a default budget
Account Management
List, retrieve, and create accounts (checking, savings, credit card, cash, line of credit, etc.) with balance tracking
Transaction Management
List, filter, create, update, and delete transactions (single or batch up to 100)
Export transactions to JSON
Duplicate detection on creation; dry-run support on write operations
Receipt & Split Transactions
Paste receipts to automatically create itemized split transactions with proportional tax allocation
Bank Reconciliation (beta)
Import bank CSV files, fuzzy-match against YNAB transactions, detect discrepancies, and apply bulk fixes with optional auto-creation/update
Category Management
List categories/groups, get details, and update budgeted amounts
Payee Management
List and retrieve payee details across transactions
Monthly Budget Data
List months with summary data and get detailed data (income, activity, categories) for specific months
Utilities
Retrieve authenticated user information
Server diagnostics (cache status, delta sync performance, memory, environment)
Clear in-memory cache
General Features
Delta sync — fetches only changed data for improved performance
Flexible output — human-readable Markdown tables or structured JSON
Dry-run mode to preview changes before committing
YNAB MCP Server
Connect YNAB to any AI assistant. Manage your budget in plain English.
Demo
Related MCP server: YNAB MCP Server
What you can do
Workflow | Example prompt |
Receipt split | "Create a split transaction for this receipt and allocate tax." |
Bank reconciliation | "Reconcile my checking account using this CSV." |
Spending analysis | "What did I spend on takeout this month?" |
Transaction creation | "Create a transaction: $42.18 at Trader Joe's yesterday." |
Month overview | "Show my budget summary for January." |
How it works
graph LR
U(You) -->|Plain English| C[Claude Desktop<br/>or any MCP client]
C -->|MCP protocol| S[YNAB MCP Server<br/>28 tools]
S -->|YNAB API| Y[(Your Budget)]
style S fill:#2563EB,color:#fff,stroke:#1d4ed8
style Y fill:#16a34a,color:#fff,stroke:#15803d
style C fill:#7c3aed,color:#fff,stroke:#6d28d9Features
Receipt itemization — Paste a receipt, get an itemized split transaction with tax allocation automatically distributed across line items.
Bank reconciliation (beta) — Import a bank CSV, fuzzy-match against YNAB, detect missing or mismatched transactions, and apply bulk fixes.
28 YNAB tools — Full coverage of budgets, accounts, transactions, categories, payees, months, and utilities.
Delta sync — Fetches only changed data since the last request, keeping things fast.
Markdown or JSON — All read tools support
response_format: human-readable markdown tables (default) or structured JSON.MCP-native — Structured outputs, annotations, completions API, and resource templates.
How reconciliation works
sequenceDiagram
participant You
participant Claude
participant MCP as YNAB MCP Server
participant YNAB
You->>Claude: "Reconcile my checking<br/>with this CSV"
Claude->>MCP: reconcile_account(csv_data)
MCP->>YNAB: Fetch transactions
YNAB-->>MCP: YNAB transactions
MCP->>MCP: Parse CSV<br/>Fuzzy-match payees & dates<br/>Detect missing / mismatched
MCP-->>Claude: Matches + recommendations
Claude->>You: "Found 47 matches, 3 missing.<br/>Apply changes?"
You->>Claude: "Yes"
Claude->>MCP: Apply recommended changes
MCP->>YNAB: Create / update transactions
MCP-->>Claude: Done
Claude->>You: "3 transactions created,<br/>account reconciled."Setup (2 minutes)
1 — Get a YNAB token
Open YNAB Web App
Go to Account Settings → Developer Settings → New Token
Copy it (shown once only)
2 — Install
Download the latest
.mcpbfrom ReleasesDrag it into Claude Desktop
Enter your
YNAB_ACCESS_TOKENwhen promptedRestart Claude Desktop
Add to your Claude Desktop config:
{
"mcpServers": {
"ynab": {
"command": "npx",
"args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}{
"mcpServers": {
"ynab": {
"command": "npx",
"args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}[mcp_servers.ynab-mcpb]
command = "npx"
args = ["-y", "@dizzlkheinz/ynab-mcpb@latest"]
env = {"YNAB_ACCESS_TOKEN" = "your-token-here"}
startup_timeout_sec = 120Command:
npxArgs:
["-y", "@dizzlkheinz/ynab-mcpb@latest"]Env:
YNAB_ACCESS_TOKEN=<your token>
3 — Try these prompts
List my budgets and set the default to my main budget.
Show recent transactions in my checking account.
How much did I spend on groceries in the last 30 days?
Create a transaction: $42.18 at Trader Joe's yesterday.Tools (28)
Category | Tools |
Budgets |
|
Accounts |
|
Transactions |
|
Categories |
|
Payees |
|
Months |
|
Reconciliation |
|
Utilities |
|
All read tools accept response_format ("markdown" or "json", default: "markdown").
Full reference: docs/reference/API.md
Configuration
Variable | Default | Description |
| — | Required. Your YNAB personal access token. |
|
| Directory for exported transaction files. |
|
| Enable delta sync (only fetch changed data). |
|
| Cache TTL in milliseconds (5 min). |
|
| Maximum cache entries before LRU eviction. |
See .env.example for all options.
Troubleshooting
Symptom | Fix |
| Install Node.js 18+, then restart your MCP client. |
Auth errors | Regenerate your YNAB token and update |
Tools not detected | Restart the MCP client after any config change. |
Reconciliation issues | Open an issue with an anonymized CSV sample. |
For developers
git clone https://github.com/dizzlkheinz/ynab-mcpb.git
cd ynab-mcpb
npm install
cp .env.example .env # add YNAB_ACCESS_TOKEN
npm run build
npm testArchitecture and contributor guidance: CLAUDE.md
Reconciliation architecture: docs/technical/reconciliation-system-architecture.md
Contributing
Bug reports and CSV edge-case repros are very welcome, especially for bank reconciliation: Open an issue
PRs welcome — run npm test and npm run lint before submitting.