MCP YNAB Server
The MCP YNAB Server provides access to YNAB (You Need A Budget) functionality through the Model Context Protocol, allowing you to:
View financial data: Check account balances and list transactions
Manage transactions: Create new transactions and find ones needing attention (uncategorized/unapproved)
Work with budgets: List all budgets, set a preferred budget, and access categories
Access detailed information: Retrieve specific transactions by ID and view transaction details including subtransactions
Use MCP integration: Access YNAB data via standardized resources like
ynab://accountsandynab://transactions/{account_id}
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., "@MCP YNAB Servershow me my checking account balance"
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.
mcp-ynab
A Model Context Protocol server for the YNAB (You Need A Budget) API. Lets MCP clients (Claude Desktop, Claude Code, custom agents) read your budgets, accounts, and transactions, and create or recategorize transactions through structured tools.
Install
The project is managed with uv and
Task. All Python commands in this repo go through
uv run.
uv sync # install dependencies
task install # install the mcp-ynab CLI into the venvRelated MCP server: ABAP-ADT-API MCP-Server
Configure
Set your YNAB Personal Access Token in the environment (or in a .env file at
the repo root):
export YNAB_API_KEY=your-personal-access-tokenGet a token at https://app.ynab.com/settings/developer.
Run the server
mcp-ynab # production
task dev # dev mode + MCP Inspector in the browserTools and resources
The server exposes the following over MCP:
Read-only tools
Tool | Purpose |
| List all budgets in markdown |
| List accounts in a budget, grouped by type with summary |
| Return a single account's current balance in dollars |
| Recent transactions for an account; optional |
| Filter for uncategorized / unapproved transactions |
| All categories in a budget grouped by category group |
Mutating tools
Tool | Purpose |
| Create a new transaction in YNAB |
| Assign a category to an existing transaction |
| Cache a preferred budget ID for default-targeted tools |
| Cache a budget's category list locally |
Resources
ynab://preferences/budget_id— currently preferred budget IDynab://categories/{budget_id}— cached categories for a budget
Development
task fmt # ruff format + check --fix
task lint # ruff check + format --check (no auto-fix)
task typecheck # mypy
task docstrings # interrogate (fails under 80%)
task test # unit tests only (default; integration excluded)
task coverage # unit tests with coverage reportIntegration tests
Integration tests are gated behind pytest.mark.integration and excluded from
the default task test run. They make real calls to your YNAB account, so they
require YNAB_API_KEY.
YNAB_API_KEY=your-token task test:integrationThe default integration suite is read-only. Tests that mutate data (create_transaction, categorize_transaction) require an additional opt-in:
YNAB_API_KEY=your-token YNAB_INTEGRATION_ALLOW_WRITES=1 \
task test:integrationLicense
MIT
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/klauern/mcp-ynab'
If you have feedback or need assistance with the MCP directory API, please join our Discord server