ListBudgetsLABSCO SUMMARY
Five tools, honestly labelled as a work in progress.
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.
What it is
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.
What you get
ListBudgets— the budgets on your account, and what you pick first if you have more than oneBudgetSummary— categories that are underfunded and accounts that are running lowGetUnapprovedTransactions— everything still waiting on approvalCreateTransaction— 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"
Requirements
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.
Setup effort
One command plus a key — npx -y @smithery/cli install @calebl/ynab-mcp-server --client claude, then supply credentials
USE CASES
Logging a purchase before you forget it
Say what you spent, where, and on which account; the transaction lands in the right budget without opening YNAB.
Clearing the approval queue
Pull everything unapproved, then approve them one at a time by referring to the amount and card in plain language.
Checking where the budget is short
One call names the underfunded categories and the accounts running low — the two things you would open the app to check.
Setting up with more than one budget
List the budgets on the account and set the one you want as YNAB_BUDGET_ID, so later calls stop asking which budget you mean.
5 tools
Listed in project docs. Your client may show a different list.
BudgetSummaryGetUnapprovedTransactionsCreateTransactionApproveTransactionBEFORE YOU INSTALL
What to know first
Tools you get
5 tools named in the project's documentation.
Requires
- npx on PATH
- YNAB_API_TOKEN in your environment
INSTALLATION
Connect your client
Server setup
npx -y @smithery/cli install @calebl/ynab-mcp-server --client claudeMCP Clients
Claude Desktop — Smithery
npx -y @smithery/cli install @calebl/ynab-mcp-server --client claudeThe Smithery installer asks for your YNAB Personal Access Token and passes it to the server as YNAB_API_TOKEN.
Claude Desktop — npx
{
"mcpServers": {
"ynab-mcp-server": {
"command": "npx",
"args": [
"ynab-mcp-server"
],
"env": {
"YNAB_API_TOKEN": "<YOUR_YNAB_API_TOKEN>"
}
}
}
}<YOUR_YNAB_API_TOKEN> is a Personal Access Token from https://api.ynab.com/#personal-access-tokens, and add YNAB_BUDGET_ID beside it if you want a default budget.
Claude Desktop — local build
{
"mcpServers": {
"ynab-mcp-server": {
"command": "node",
"args": [
"<YOUR_PATH_TO_YNAB_MCP_SERVER>/dist/index.js"
],
"env": {
"YNAB_API_TOKEN": "<YOUR_YNAB_API_TOKEN>"
}
}
}
}Runs your own build: clone https://github.com/calebl/ynab-mcp-server and run npm install and npm run build in it; <YOUR_PATH_TO_YNAB_MCP_SERVER> is the clone's folder. <YOUR_YNAB_API_TOKEN> is a Personal Access Token from https://api.ynab.com/#personal-access-tokens; add YNAB_BUDGET_ID beside it if you want a default budget.