What works today is the front half of a budgeting session: see which categories are short, look at what is unapproved, add a purchase in a sentence, approve one item. What is not there yet is written down rather than implied — approving several transactions in a single call, and a tool for updating an existing category or transaction, are both listed as next steps. Treat it as a fast way to capture and clear transactions by voice or chat, and keep the app for the parts that move money around.
An MCP server for YNAB budgets, built on mcp-framework. It reads your budgets through the YNAB API with a personal access token that stays in an environment variable — the project's stated design is that the token is never handed to the model. The README is candid about scope: it lists the workflows the author is building toward and then a shorter list of what is working today.
- `ListBudgets` — the budgets on your account, and what you pick first if you have more than one
- `BudgetSummary` — categories that are underfunded and accounts that are running low
- `GetUnapprovedTransactions` — everything still waiting on approval
- `CreateTransaction` — a transaction against a named budget and account, from a sentence like "Add a transaction to my Ally account for $3.98 I spent at REI today"
- `ApproveTransaction` — approve one existing transaction by id, which pairs naturally with the unapproved list: "approve the transaction for $6.95 on the Apple Card"
A YNAB account and a personal access token from the YNAB API settings, passed as `YNAB_API_TOKEN`. `YNAB_BUDGET_ID` is optional and sets a default budget so you are not asked to choose every time. Package `ynab-mcp-server` (0.1.2) on npm, run through `npx`, installed via Smithery, or built from source and pointed at with an absolute path. Nothing else to host — the server talks to YNAB's hosted API.
One command plus a key — npx -y @smithery/cli install @calebl/ynab-mcp-server --client claude, then supply credentials
