MCP server that connects AI assistants to your YNAB budget
Project description
YNAB MCP Server
An MCP server that connects AI assistants to your YNAB budget. Ask your budget questions YNAB can't answer.
mcp-ynab.com — Full setup guide, troubleshooting, and more.
Features
- 30+ tools — budgets, accounts, transactions, categories, payees, months, scheduled transactions, and analytics
- Delta sync — only fetches what changed since the last call (uses YNAB's server knowledge)
- 4-tier caching — TTL cache, delta sync, retry with backoff, SQLite persistence
- Search & analytics — text search across transactions, per-category spending breakdowns, Sankey flow data
- Bulk operations — create or update multiple transactions in a single call
- Dollar amounts — accepts dollars in parameters, converts to YNAB milliunits internally
Quick Start
uv tool run mcp-ynab
Requires a YNAB personal access token set as YNAB_API_KEY.
Configuration
Claude Desktop / ChatGPT
Add to your config file:
{
"mcpServers": {
"ynab": {
"command": "uv",
"args": ["tool", "run", "mcp-ynab"],
"env": {
"YNAB_API_KEY": "your-api-key-here"
}
}
}
}
Claude Code
claude mcp add-json ynab --scope user '{"type":"stdio","command":"uv","args":["tool","run","mcp-ynab"],"env":{"YNAB_API_KEY":"your-api-key-here"}}'
See mcp-ynab.com for config file locations and troubleshooting.
Available Tools
| Group | Tools |
|---|---|
| User | get_user |
| Plans | list_plans, get_plan, get_plan_settings |
| Accounts | list_accounts, get_account, create_account |
| Categories | list_categories, get_category, create_category, update_category, create_category_group, update_category_group, get_category_for_month, update_category_for_month |
| Payees | list_payees, get_payee, update_payee |
| Payee Locations | list_payee_locations, get_payee_location, get_payee_locations_by_payee |
| Months | list_months, get_month |
| Money Movements | list_money_movements, get_money_movements_for_month, list_money_movement_groups, get_money_movement_groups_for_month |
| Transactions | list_transactions, get_transaction, get_transactions_by_account, get_transactions_by_category, get_transactions_by_month, get_transactions_by_payee, search_transactions, create_transaction, create_transactions, update_transaction, update_transactions, delete_transaction, import_transactions |
| Scheduled | list_scheduled_transactions, get_scheduled_transaction, create_scheduled_transaction, update_scheduled_transaction, delete_scheduled_transaction |
| Analytics | get_money_flow, get_spending_by_category |
Field selection
Every tool that returns a model accepts an optional exclude_fields list. By
default each tool returns a sensible subset of fields to keep token usage low.
See FIELDS.md for per-model defaults and override examples.
Development
# Install dependencies
uv sync
# Run tests
uv run pytest
# Run server standalone
uv run python -m src.server
Requires YNAB_API_KEY in .env.local for running the server.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_ynab-1.0.1.tar.gz.
File metadata
- Download URL: mcp_ynab-1.0.1.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7a21c6b06fe8f26747cade8d169171366e8d5f01046eec4a1993b32b19e816e4
|
|
| MD5 |
98ee9ad48b874e9b3aaf3c37ff34c9cf
|
|
| BLAKE2b-256 |
158949695187e605c21a0c8997bb5d47f48486e1442d4bdb259f040665f64bac
|
Provenance
The following attestation bundles were made for mcp_ynab-1.0.1.tar.gz:
Publisher:
publish.yml on pragprogrammer/mcp-ynab
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_ynab-1.0.1.tar.gz -
Subject digest:
7a21c6b06fe8f26747cade8d169171366e8d5f01046eec4a1993b32b19e816e4 - Sigstore transparency entry: 1394640132
- Sigstore integration time:
-
Permalink:
pragprogrammer/mcp-ynab@35dfccc95817e925d5fded18499a2806ca4678d6 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/pragprogrammer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@35dfccc95817e925d5fded18499a2806ca4678d6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_ynab-1.0.1-py3-none-any.whl.
File metadata
- Download URL: mcp_ynab-1.0.1-py3-none-any.whl
- Upload date:
- Size: 48.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c6b28e1375cc8a739913a7b3951f7dd96249d931f7dff2bf3d3728fa12d40ab
|
|
| MD5 |
4b83a8ce18af92b07037c78a73b81063
|
|
| BLAKE2b-256 |
ea0169bfe6fe86aea399955ad33ce71515a4e02805658f4f037d95e11ccf0797
|
Provenance
The following attestation bundles were made for mcp_ynab-1.0.1-py3-none-any.whl:
Publisher:
publish.yml on pragprogrammer/mcp-ynab
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_ynab-1.0.1-py3-none-any.whl -
Subject digest:
3c6b28e1375cc8a739913a7b3951f7dd96249d931f7dff2bf3d3728fa12d40ab - Sigstore transparency entry: 1394640145
- Sigstore integration time:
-
Permalink:
pragprogrammer/mcp-ynab@35dfccc95817e925d5fded18499a2806ca4678d6 -
Branch / Tag:
refs/tags/v1.0.1 - Owner: https://github.com/pragprogrammer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@35dfccc95817e925d5fded18499a2806ca4678d6 -
Trigger Event:
release
-
Statement type: