Install
$ agentstack add mcp-jonathanspiva-swift-ynab-mcp ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
YNAB MCP Server
[](https://github.com/jonathanspiva/swift-ynab-mcp/actions/workflows/ci.yml) [](https://swift.org) [](https://developer.apple.com/macos/) [](LICENSE) [](https://claude.ai/code)
A Model Context Protocol (MCP) server for YNAB (You Need A Budget).
Gives AI assistants like Claude read and write access to your YNAB budgets, transactions, categories, and payees.
Tools
Read Tools (11)
| Tool | Description | |------|-------------| | list_budgets | List all budgets with names, IDs, and currency | | list_accounts | List accounts in a budget with balances | | list_categories | List category groups and categories with balances | | get_budget_summary | Budget overview with accounts and category groups | | list_recent_transactions | Recent transactions (filterable by account, date range, approval status) | | get_month_summary | Category breakdown for a specific month | | get_transaction | Full transaction details by ID | | list_payees | List all payees in a budget | | get_transactions_by_payee | Transaction history for a specific payee | | get_transactions_by_category | Transaction history for a specific category | | list_scheduled_transactions | List upcoming scheduled transactions |
Write Tools (5)
| Tool | Description | |------|-------------| | create_transaction | Create a new transaction (amount in dollars) | | update_transaction | Update an existing transaction (amount, payee, category, flag, approval) | | bulk_update_transactions | Update multiple transactions at once | | rename_payee | Rename a payee across all transactions | | update_category_budget | Set the budgeted amount for a category in a given month |
Requirements
- macOS 26+
- Swift 6.2+
- A YNAB Personal Access Token
Build
swift build -c release
The binary will be at .build/release/ynab-mcp.
Configure
Add to your Claude Code MCP config (~/.claude.json or project .claude/settings.json):
{
"mcpServers": {
"ynab": {
"command": "/path/to/ynab-mcp",
"env": {
"YNAB_TOKEN": "your-token-here"
}
}
}
}
1Password integration
If you use 1Password, you can avoid storing the token in plaintext by using op run:
{
"mcpServers": {
"ynab": {
"command": "op",
"args": ["run", "--no-masking", "--", "/path/to/ynab-mcp"],
"env": {
"YNAB_TOKEN": "op://Your Vault/YNAB Token/credential"
}
}
}
}
Limitation: op requires an active biometric session. Claude Code spawns MCP servers non-interactively, so op can't prompt for authentication. If your session has expired, the MCP server will silently fail to connect, and /mcp reconnect won't help either.
To fix this, run any op command in a terminal first to establish a session, then restart Claude Code:
op read "op://Your Vault/YNAB Token/credential" > /dev/null
This is a known limitation of how Claude Code launches subprocesses. Native op:// resolution in MCP config would eliminate this problem.
Rate Limiting
200 requests per hour (in-memory, resets on restart). This matches the YNAB API limit of 200 requests per hour per token.
Dependencies
Important: Back up your budget
This server includes write tools that modify your live YNAB data. Export your budget before using write tools for the first time. In the YNAB web app, click your budget name in the top-left corner and choose "Export Budget."
Notes
- Only tested with Claude Code. It should work with any MCP client, but your mileage may vary.
- Write tools modify your actual YNAB data. Use with care.
- Transaction amounts are in dollars (e.g.,
25.50), not YNAB's native milliunits. - Budget and category IDs can be discovered using the read tools (
list_budgets,list_categories, etc.).
License
MIT
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: jonathanspiva
- Source: jonathanspiva/swift-ynab-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.