Ynab Mcpb

io.github.dizzlkheinz由 GitHub 帳號 dizzlkheinz 發布v0.33.0更新於 Nov 8, 2026

Local-first YNAB MCP for reconciliation, receipt splitting, safe cleanup, and spending analysis

概覽

AI 產生的概覽

在本機執行的 MCP 伺服器,把 AI 助理連接到 YNAB 預算,用於對帳、收據拆分、交易管理與支出分析。

可以做什麼
  • 列出並檢視預算、帳戶、分類、收款對象與月份,並可設定預設預算。
  • 讀取、建立、更新、刪除與匯出交易,包括依收據逐項拆分並分攤稅金。
  • 用匯入的銀行 CSV 對帳戶進行對帳,模糊比對收款對象與日期並批次修正。
  • 檢視排程交易,並執行支出分析或不同期間的比較。
  • 讀取結果可回傳為 Markdown 表格或結構化 JSON,並可選用增量同步與快取。
適用情境
適合在 YNAB 記帳、並希望用對話方式管理預算的人:拆分收據、用 CSV 核對支票帳戶、查詢某分類的支出,或用自然語言建立交易。
執行需求
透過 npx 在本機執行,需要 Node.js 24 以上版本,並在 YNAB_ACCESS_TOKEN 環境變數中提供 YNAB 個人存取權杖。選用設定可控制工具集(YNAB_MCP_TOOL_PROFILE)、寫入策略(YNAB_MCP_WRITE_MODE)、增量同步與快取。需要能連線至 YNAB API 的網路。
安裝前請注意
YNAB_ACCESS_TOKEN 屬敏感資訊,應存放在用戶端的密鑰設定中,不要貼到對話或日誌裡。寫入類工具可以建立、更新與刪除交易及排程交易;預設的 preview 模式需要短期一次性的確認,enabled 模式則直接寫入。對話中回傳的財務資料可能由你所選的 AI 服務商處理。匯出檔案會寫入本機磁碟。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Ynab Mcpb,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

YNAB MCP Server

Connect YNAB to any AI assistant. Manage your budget in plain English.

[Download MCPB] [npm] [License: AGPL v3] [Node.js]


Demo

[Receipt itemization demo]
Paste a receipt → itemized split transaction in seconds

What you can do

WorkflowExample prompt
Receipt split"Create a split transaction for this receipt and allocate tax."
Bank reconciliation"Reconcile my checking account using this CSV."
Spending analysis"What did I spend on takeout this month?"
Scheduled cash flow"What scheduled bills and income are due this month?"
Transaction creation"Create a transaction: $42.18 at Trader Joe's yesterday."
Month overview"Show my budget summary for January."

How it works

mermaid
graph LR    U(You) -->|Plain English| C[Claude Desktop<br/>or any MCP client]    C -->|MCP protocol| S[YNAB MCP Server<br/>35 tools]    S -->|YNAB API| Y[(Your Budget)]
    style S fill:#2563EB,color:#fff,stroke:#1d4ed8    style Y fill:#16a34a,color:#fff,stroke:#15803d    style C fill:#7c3aed,color:#fff,stroke:#6d28d9

Features

  • Receipt itemization — Paste a receipt, get an itemized split transaction with tax allocation automatically distributed across line items.
  • Bank reconciliation (beta) — Import a bank CSV, fuzzy-match against YNAB, detect missing or mismatched transactions, and apply bulk fixes.
  • 35 YNAB tools — Full coverage plus scheduled transactions and deterministic period analytics.
  • Write safety by default — Preview mode requires a short-lived, single-use confirmation bound to the exact validated request.
  • Smaller tool profiles — Choose core, read-only, or full at startup without dynamic registration.
  • Delta sync — Fetches only changed data since the last request, keeping things fast.
  • Markdown or JSON — All read tools support response_format: human-readable markdown tables (default) or structured JSON.
  • MCP-native — Structured outputs, annotations, completions API, and resource templates.

How reconciliation works

Show workflow diagram
mermaid
sequenceDiagram    participant You    participant Claude    participant MCP as YNAB MCP Server    participant YNAB
    You->>Claude: "Reconcile my checking<br/>with this CSV"    Claude->>MCP: reconcile_account(csv_data)    MCP->>YNAB: Fetch transactions    YNAB-->>MCP: YNAB transactions    MCP->>MCP: Parse CSV<br/>Fuzzy-match payees & dates<br/>Detect missing / mismatched    MCP-->>Claude: Matches + recommendations    Claude->>You: "Found 47 matches, 3 missing.<br/>Apply changes?"    You->>Claude: "Yes"    Claude->>MCP: Apply recommended changes    MCP->>YNAB: Create / update transactions    MCP-->>Claude: Done    Claude->>You: "3 transactions created,<br/>account reconciled."

Setup (2 minutes)

1 — Get a YNAB token

  1. Open YNAB Web App
  2. Go to Account Settings → Developer Settings → New Token
  3. Copy it (shown once only)

2 — Install

Claude Desktop — MCPB file (recommended)
  1. Download the latest .mcpb from Releases
  2. Drag it into Claude Desktop
  3. Enter your YNAB_ACCESS_TOKEN when prompted
  4. Restart Claude Desktop
Claude Desktop — npx

Add to your Claude Desktop config:

json
{  "mcpServers": {    "ynab": {      "command": "npx",      "args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],      "env": {        "YNAB_ACCESS_TOKEN": "your-token-here"      }    }  }}
Cline (VS Code)
json
{  "mcpServers": {    "ynab": {      "command": "npx",      "args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],      "env": {        "YNAB_ACCESS_TOKEN": "your-token-here"      }    }  }}
Codex
toml
[mcp_servers.ynab-mcpb]command = "npx"args = ["-y", "@dizzlkheinz/ynab-mcpb@latest"]env = {"YNAB_ACCESS_TOKEN" = "your-token-here"}startup_timeout_sec = 120
Any other MCP client
  • Command: npx
  • Args: ["-y", "@dizzlkheinz/ynab-mcpb@latest"]
  • Env: YNAB_ACCESS_TOKEN=<your token>

3 — Try these prompts

List my budgets and set the default to my main budget.Show recent transactions in my checking account.How much did I spend on groceries in the last 30 days?Create a transaction: $42.18 at Trader Joe's yesterday.

Tools (35)

See all tools by category
CategoryTools
Budgetslist_budgets get_budget get_default_budget set_default_budget
Accountslist_accounts get_account create_account
Transactionslist_transactions get_transaction create_transaction create_transactions update_transaction update_transactions delete_transaction export_transactions compare_transactions create_receipt_split_transaction
Categorieslist_categories get_category update_category
Payeeslist_payees get_payee
Monthslist_months get_month
Reconciliationreconcile_account
Scheduled transactionslist_scheduled_transactions get_scheduled_transaction create_scheduled_transaction update_scheduled_transaction delete_scheduled_transaction
Analyticsanalyze_spending compare_spending_periods
Utilitiesget_user diagnostic_info clear_cache

All read tools accept response_format ("markdown" or "json", default: "markdown").

Full reference: docs/reference/API.md


Configuration

VariableDefaultDescription
YNAB_ACCESS_TOKEN—Required. Your YNAB personal access token.
YNAB_EXPORT_PATH~/DownloadsDirectory for exported transaction files.
YNAB_MCP_ENABLE_DELTAfalseSet to true to enable delta sync (only fetch changed data). Must be exactly true or false.
YNAB_MCP_WRITE_MODEpreviewread-only hides YNAB mutations; preview requires exact confirmation; enabled permits direct writes.
YNAB_MCP_TOOL_PROFILEfullcore, read-only, or full startup tool surface.
YNAB_MCP_CACHE_DEFAULT_TTL_MS300000Cache TTL in milliseconds (5 min).
YNAB_MCP_CACHE_MAX_ENTRIES1000Maximum cache entries before LRU eviction.

See .env.example for all options.

Write modes and compatibility

preview is the conservative default. A mutation call first runs its existing dry_run path and returns a confirmation token. That token expires after two minutes, can be used once, and only authorizes the same canonical tool name and validated arguments. read-only does not register YNAB mutation tools. enabled preserves the pre-safety direct-write behavior for users who explicitly opt in.

Transaction amounts now prefer amount_decimal (for example, -12.34) or the explicit raw field amount_milliunits (-12340). Category funding similarly prefers budgeted_decimal or budgeted_milliunits. The old amount and budgeted fields remain accepted as deprecated milliunit aliases for backward compatibility; their meaning is never guessed.

Tool profiles

Profiles are selected once at server startup, so clients receive a stable tools/list response:

  • core keeps common reads, transaction safety workflows, reconciliation, receipt splitting, scheduled review, and spending analytics.
  • read-only exposes every tool explicitly annotated read-only.
  • full exposes the complete 35-tool surface, subject to the selected write mode.

Privacy and trust

  • The server process runs locally and communicates with YNAB over YNAB's API.
  • Your YNAB personal access token is sensitive. Store it in your MCP client's secret configuration and never paste it into a conversation, issue, fixture, or log.
  • Financial data returned by tools and included in a conversation may be processed by the AI provider selected in your MCP client. Review that provider's data controls before sharing sensitive details.
  • Transaction exports remain on local disk at YNAB_EXPORT_PATH (or the platform default). The server does not upload exported files elsewhere.
  • Use read-only for no YNAB writes, preview for exact request confirmation, or enabled only when direct writes are an intentional compatibility choice.
  • This independent open-source project is not affiliated with or endorsed by YNAB.

Troubleshooting

SymptomFix
npx failsInstall Node.js 24+, then restart your MCP client.
Auth errorsRegenerate your YNAB token and update YNAB_ACCESS_TOKEN.
Tools not detectedRestart the MCP client after any config change.
Reconciliation issuesOpen an issue with an anonymized CSV sample.

For developers

bash
git clone https://github.com/dizzlkheinz/ynab-mcpb.gitcd ynab-mcpbnpm ci --ignore-scriptsnpm run buildnpm testnpm run test:integration

The build and offline tests require no YNAB credentials. npm test runs unit and performance tests; test:integration runs mocked integration tests. Use test:all, test:coverage, or test:watch for the combined suite, coverage, or watch mode. Pass file/test-name filters directly, for example npm run test:integration -- transactionTools.

To start the server locally, copy .env.example to .env, add your token, and run npm start. Live smoke tests require an explicit RUN_LIVE_YNAB_TESTS=true and run through npm run test:live; SKIP_E2E_TESTS=true disables them.

Builds do not package or install global tools. To create a Claude Desktop bundle, install the official CLI once (npm install --global @anthropic-ai/mcpb), then run npm run build and npm run package:mcpb. Review npm package contents with npm pack --dry-run --ignore-scripts.

Architecture and contributor guidance: CLAUDE.md

Reconciliation architecture: docs/technical/reconciliation-system-architecture.md


Contributing

Bug reports and CSV edge-case repros are very welcome, especially for bank reconciliation: Open an issue

PRs welcome — run npm test and npm run lint before submitting.


License

AGPL-3.0

來源:README.md,提交 3452a93

工具

35

ynab_list_budgets

YNAB: List Budgets

List all YNAB budgets for the authenticated user. Args: - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: budgets[], cached, cache_info Examples: - List all budgets: call with no args Errors: - "UNAUTHORIZED" → YNAB token expired or invalid

輸入參數response_format

ynab_get_budget

YNAB: Get Budget Details

Get summary information for a specific YNAB budget. Args: - budget_id (string, required): Budget UUID. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: budget (id, name, currency_format, accounts_count, categories_count, payees_count, months_count) Examples: - Get budget details: set budget_id to the UUID from ynab_list_budgets Errors: - "Budget not found" → invalid or inaccessible budget_id

輸入參數budget_id必填response_format

ynab_list_payees

YNAB: List Payees

List all payees for a budget with pagination. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - limit (int, optional): Max results per page. Default: 50. - offset (int, optional): Zero-based offset for pagination. Default: 0. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: payees[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples: - List all payees: call with no args - Page 2: set limit=50, offset=50 Errors: - "No default budget set" → run ynab_set_default_budget first

輸入參數limitoffsetbudget_idresponse_format

ynab_get_payee

YNAB: Get Payee Details

Get details for a specific payee. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - payee_id (string, required): Payee UUID. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: payee (id, name, transfer_account_id, deleted), cached, cache_info Errors: - "No default budget set" → run ynab_set_default_budget first - "Payee not found" → invalid payee_id

輸入參數payee_id必填budget_idresponse_format

ynab_list_categories

YNAB: List Categories

List all budget categories for a budget with pagination. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - limit (int, optional): Max results per page. Default: 50. - offset (int, optional): Zero-based offset for pagination. Default: 0. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: categories[], category_groups[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples: - List categories (default budget): call with no args - Page 2: set limit=50, offset=50 Errors: - "No default budget set" → run ynab_set_default_budget first

輸入參數limitoffsetbudget_idresponse_format

ynab_get_category

YNAB: Get Category Details

Get current month details for a specific budget category. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - category_id (string, optional): Category UUID. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: category (id, name, budgeted, activity, balance, goal_type, goal_target, goal_percentage_complete), cached, cache_info Errors: - "No default budget set" → run ynab_set_default_budget first - "Category not found" → invalid category_id

輸入參數budget_idcategory_id必填response_format

ynab_update_category

YNAB: Update Category Budget

Update the budgeted amount for a category in the current month. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - category_id (string, required): Category UUID. - budgeted_decimal (number, preferred): New funding amount in decimal currency units. - budgeted_milliunits (int, alternative): Explicit raw YNAB milliunits. - dry_run (boolean, optional): Preview without saving. Default: false. Returns: updated category with new budgeted, activity, balance. Examples: - Budget $100: set budgeted_decimal=100.00 - Already-converted data: set budgeted_milliunits=100000 - Dry run: set dry_run=true Errors: - "No default budget set" → run ynab_set_default_budget first Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數dry_runbudget_idcategory_id必填budgeted_decimalconfirmation_tokenbudgeted_milliunits

ynab_list_accounts

YNAB: List Accounts

List all accounts for a budget. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - limit (int, optional): Max results per page. Default: 50. - offset (int, optional): Zero-based offset for pagination. Default: 0. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: accounts[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples: - List all accounts (default budget): call with no args - Page 2: set limit=20, offset=20 Errors: - "No default budget set" → run ynab_set_default_budget first - "UNAUTHORIZED" → YNAB token expired

輸入參數limitoffsetbudget_idresponse_format

ynab_get_account

YNAB: Get Account Details

Get details for a single account including current balance. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, required): Account UUID. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: account (id, name, type, balance, cleared_balance, uncleared_balance, on_budget, closed), cached, cache_info Errors: - "No default budget set" → run ynab_set_default_budget first - "Account not found" → invalid account_id

輸入參數budget_idaccount_id必填response_format

ynab_create_account

YNAB: Create Account

Create a new account in a YNAB budget. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - name (string, required): Account name. - type (string, required): One of: checking, savings, creditCard, cash, lineOfCredit, otherAsset, otherLiability. - balance (number, optional): Opening balance in dollars. Default: 0. - dry_run (boolean, optional): Preview the request without creating. Default: false. Returns: account object with id, name, type, balance fields. Examples: - Create checking account: set name="My Checking", type="checking" - Dry run: set dry_run=true to preview without saving Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數name必填type必填balancedry_runbudget_idconfirmation_token

ynab_get_month

YNAB: Get Month Details

Get full budget data for a specific month including all category balances. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - month (string, required): Month in YYYY-MM-DD format (use first day, e.g. "2025-01-01"). - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: month (month, income, budgeted, activity, to_be_budgeted, age_of_money, categories[]), cached, cache_info Examples: - Get January 2025: set month="2025-01-01" Errors: - "No default budget set" → run ynab_set_default_budget first

輸入參數month必填budget_idresponse_format

ynab_list_months

YNAB: List Months

List summary data for all budget months with pagination. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - limit (int, optional): Max results per page. Default: 50. - offset (int, optional): Zero-based offset for pagination. Default: 0. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: months[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples: - List recent months: call with no args, months are newest-first - Page 2: set limit=12, offset=12 Errors: - "No default budget set" → run ynab_set_default_budget first

輸入參數limitoffsetbudget_idresponse_format

ynab_list_transactions

YNAB: List Transactions

List transactions for a budget with optional filtering and pagination. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, optional): Filter by account. - category_id (string, optional): Filter by category. - since_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or after. - until_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or before. Combine with since_date for a date window. - type (string, optional): "uncategorized" or "unapproved". - cleared (string, optional): "cleared", "uncleared", or "reconciled". - import_id (string, optional): Exact import_id, e.g. to find a transaction you just created. - payee_id (string, optional): Exact payee UUID. - payee_name (string, optional): Case-insensitive substring of the payee name. - amount_decimal (number, optional): Exact amount in currency units (e.g. -12.34). Or amount_milliunits for raw YNAB milliunits; pass at most one. - limit (int, optional): Max results per page. Default: 50. - offset (int, optional): Zero-based offset for pagination. Default: 0. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: transactions[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples: - All transactions: call with no args (uses default budget) - Filter by account: set account_id - Last 30 days: set since_date to 30 days ago - Find a transaction: set account_id, since_date/until_date around its date, and payee_name or amount_decimal (or import_id) - Page 2: set limit=50, offset=50 Errors: - "No default budget set" → run ynab_set_default_budget first - Large result → use ynab_export_transactions to save to file

輸入參數typelimitoffsetclearedpayee_idbudget_idimport_idaccount_idpayee_namesince_dateuntil_datecategory_id另有 3 個

ynab_export_transactions

YNAB: Export Transactions

Export transactions for a budget to a local JSON file. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, optional): Filter by account. - category_id (string, optional): Filter by category. - since_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or after. - type (string, optional): "uncategorized" or "unapproved" to export only those transactions. - filename (string, optional): File name (not a path); ".json" is appended if missing. Default: generated from the filters, count and timestamp. - minimal (boolean, optional): Export only id, date, amount, amount_milliunits, payee_name and cleared. Default: true; false exports full fields. Returns: message, filename, full_path, export_directory, export_mode ("minimal" or "full"), minimal_fields, filename_explanation, total_count, preview_count, preview_transactions (a short preview, not the whole file) Examples: - Export all transactions: call with no args - Export account: set account_id Errors: - "No default budget set" → run ynab_set_default_budget first

輸入參數typeminimalfilenamebudget_idaccount_idsince_datecategory_id

ynab_get_transaction

YNAB: Get Transaction Details

Get full details for a single transaction by ID. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - transaction_id (string, required): Transaction UUID. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: transaction (id, date, amount, memo, cleared, approved, account_id, payee_name, category_name, subtransactions), cached, cache_info Errors: - "No default budget set" → run ynab_set_default_budget first - "Transaction not found" → invalid transaction_id

輸入參數budget_idtransaction_id必填response_format

ynab_create_transaction

YNAB: Create Transaction

Create a single transaction in YNAB. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, required): Account UUID. - amount_decimal (number, preferred): Amount in decimal currency units (for example, -50.00). Negative for expenses. - amount_milliunits (int, alternative): Explicit raw YNAB milliunits (for example, -50000). - date (string, required): ISO date YYYY-MM-DD. - payee_name (string, optional): Payee name (creates new payee if not found). - payee_id (string, optional): Existing payee UUID (alternative to payee_name). - category_id (string, optional): Category UUID. - memo (string, optional): Memo text. - cleared (string, optional): "cleared", "uncleared", or "reconciled". Default: "uncleared". - approved (boolean, optional): Mark as approved. Default: false. - flag_color (string, optional): Transaction flag color ("red", "orange", "yellow", "green", "blue", "purple"). - dry_run (boolean, optional): Preview without saving. Default: false. - subtransactions (array, optional): Manual split lines. Each entry uses exactly one of amount_decimal or amount_milliunits, plus optional "memo", "category_id", "payee_id", and "payee_name". Use "subtransactions" for manual split transactions. Use "ynab_create_receipt_split_transaction" when you have itemized receipt data and want proportional tax allocation handled for you. Advanced: "import_id" is supported, but it is intentionally not part of normal guidance. Usually omit it if you want the transaction to remain eligible for later bank-import matching. Returns: the created transaction, including split lines and explicit amount_milliunits. Examples: - $50 expense: set amount_decimal=-50.00 - Already-converted data: set amount_milliunits=-50000 Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical vali

輸入參數date必填memocleareddry_runapprovedpayee_idbudget_idimport_idaccount_id必填flag_colorpayee_namecategory_id另有 4 個

ynab_create_transactions

YNAB: Create Multiple Transactions

Create 1–100 transactions in a single batch with duplicate detection and dry-run support. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - transactions (array, required): Up to 100 transaction objects. Each requires account_id, date, and exactly one of amount_decimal (preferred) or amount_milliunits. - dry_run (boolean, optional): Validate without saving. Default: false. Returns: summary (created, duplicates, failed), results[], transactions[]. Examples: - Dry run first: set dry_run=true to validate before committing - If you explicitly want YNAB-side duplicate import detection, set import_id on each transaction Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數dry_runbudget_idtransactions必填confirmation_token

ynab_create_receipt_split_transaction

YNAB: Create Split Transaction from Receipt

Create a split transaction from itemized receipt data with proportional tax allocation. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, required): Account UUID. - payee_name (string, required): Store/payee name. - receipt_total (number, required): Total amount in dollars (positive). - receipt_tax (number, required): Tax amount in dollars (0 if none). - categories (array, required): One entry per category: category_id plus its items. Each item needs name and amount (dollars). - date (string, optional): ISO date. Default: today. - memo (string, optional): Memo applied to the parent transaction. - receipt_subtotal (number, optional): Pre-tax subtotal for validation. - cleared (string, optional): "cleared", "uncleared", or "reconciled". Default: "uncleared". - approved (boolean, optional): Mark as approved. Default: false. - flag_color (string, optional): Transaction flag color ("red", "orange", "yellow", "green", "blue", "purple"). - dry_run (boolean, optional): Preview subtransactions without saving. Default: false. Use this helper when you have receipt line items and want tax allocated across categories automatically. For generic manual split transactions without receipt/tax logic, use "ynab_create_transaction" with "subtransactions". Returns: transaction with subtransactions and receipt_summary. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數datememocleareddry_runapprovedbudget_idaccount_id必填categories必填flag_colorpayee_name必填receipt_tax必填receipt_total必填另有 2 個

ynab_update_transaction

YNAB: Update Transaction

Update fields on an existing YNAB transaction. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - transaction_id (string, required): Transaction UUID to update. - amount_decimal (number, preferred): New amount in decimal currency units. - amount_milliunits (int, alternative): Explicit raw YNAB milliunits. - account_id (string, optional): New account UUID. - date (string, optional): New date YYYY-MM-DD. - payee_name / payee_id (string, optional): New payee. - category_id (string, optional): New category UUID. - memo (string, optional): New memo. - cleared (string, optional): "cleared", "uncleared", or "reconciled". - approved (boolean, optional): Approval status. - flag_color (string, optional): Flag color ("red", "orange", "yellow", "green", "blue", "purple"). - subtransactions (array, optional): Convert a non-split transaction into a split. Supply the parent amount and split lines using amount_decimal or amount_milliunits; split amounts must sum to the parent and category_id must be omitted on the parent. YNAB does not support replacing lines on an existing split. - dry_run (boolean, optional): Preview without saving. Returns: the updated transaction, including split lines and explicit amount_milliunits. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數datememocleareddry_runapprovedpayee_idbudget_idaccount_idflag_colorpayee_namecategory_idamount_decimal另有 4 個

ynab_update_transactions

YNAB: Update Multiple Transactions

Update 1–100 transactions in a single batch with dry-run preview. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - transactions (array, required): Up to 100 objects, each requires id plus fields to update. Amount updates use one of amount_decimal (preferred) or amount_milliunits. A non-split transaction can be converted to a split by supplying the parent amount plus subtransactions that sum to it; YNAB does not support replacing lines on an existing split. - dry_run (boolean, optional): Preview changes without saving. Default: false. Returns: summary (updated, failed), results[], transactions[]. Examples: - Dry run: set dry_run=true to preview before/after for first 10 items Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數dry_runbudget_idtransactions必填confirmation_token

ynab_delete_transaction

YNAB: Delete Transaction

Delete a transaction from YNAB. This action is irreversible. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - transaction_id (string, required): Transaction UUID to delete. - dry_run (boolean, optional): Preview without deleting. Default: false. Returns: the deleted transaction with its ID and deletion status. Errors: - "Transaction not found" → invalid transaction_id Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數dry_runbudget_idtransaction_id必填confirmation_token

ynab_list_scheduled_transactions

YNAB: List Scheduled Transactions

List scheduled transactions with delta caching and pagination. Amounts are returned in decimal currency and explicit milliunits.

輸入參數limitoffsetbudget_id

ynab_get_scheduled_transaction

YNAB: Get Scheduled Transaction

Get one scheduled transaction by ID.

輸入參數budget_idscheduled_transaction_id必填

ynab_create_scheduled_transaction

YNAB: Create Scheduled Transaction

Create a recurring scheduled transaction. Prefer amount_decimal; amount_milliunits is available for already-converted values. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數date必填memodry_runpayee_idbudget_idfrequency必填account_id必填flag_colorpayee_namecategory_idamount_decimalamount_milliunits另有 1 個

ynab_update_scheduled_transaction

YNAB: Update Scheduled Transaction

Update selected fields on a scheduled transaction. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數datememodry_runpayee_idbudget_idfrequencyaccount_idflag_colorpayee_namecategory_idamount_decimalamount_milliunits另有 2 個

ynab_delete_scheduled_transaction

YNAB: Delete Scheduled Transaction

Delete a scheduled transaction. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token.

輸入參數dry_runbudget_idconfirmation_tokenscheduled_transaction_id必填

ynab_analyze_spending

YNAB: Analyze Spending

Deterministically calculate income, spending, and net totals for an inclusive date range, grouped by category, payee, account, week, or month. Aggregates always use the complete fetched period before grouping.

輸入參數group_by必填budget_idsince_date必填until_date必填include_transfers

ynab_compare_spending_periods

YNAB: Compare Spending Periods

Deterministically compare two complete spending periods and calculate total and per-group differences.

輸入參數group_by必填period_a必填period_b必填budget_idinclude_transfers

ynab_compare_transactions

YNAB: Compare Transactions

Compare bank CSV transactions with YNAB transactions to find missing or mismatched entries. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, required): Account UUID to compare against. - csv_file_path or csv_data (string, required): Bank export file path or inline CSV text. - statement_start_date (string, optional): Filter comparison window start date (YYYY-MM-DD). - statement_date (string, optional): Filter comparison window end date (YYYY-MM-DD). - amount_tolerance (number, optional): Amount match tolerance in dollars, 0-1. Default: 0.01. - date_tolerance_days (number, optional): Date match tolerance, 0-7 days. Default: 5. - enable_chronology_bonus (boolean, optional): Prefer matches in chronological order. Default: false. - auto_detect_format (boolean, optional): Detect CSV columns automatically. Default: false. - csv_format (object, optional): CSV layout (date_column, amount_column, debit_column, credit_column, description_column, date_format, has_header, delimiter). - debug (boolean, optional): Include extra diagnostics. Default: false. Returns: summary (counts, date_range, parameters), matches, missing_in_ynab (bank rows with no YNAB match), missing_in_bank (YNAB transactions with no bank row).

輸入參數debugcsv_databudget_idaccount_id必填csv_formatcsv_file_pathstatement_dateamount_toleranceauto_detect_formatdate_tolerance_daysstatement_start_dateenable_chronology_bonus

ynab_reconcile_account

YNAB: Reconcile Account

Guided account reconciliation: match bank CSV transactions to YNAB, detect discrepancies, and optionally execute bulk create/update/unclear operations. Args: - budget_id (string, optional): Budget UUID. Omit to use the default budget. - account_id (string, required): Account UUID to reconcile. - csv_file_path or csv_data (string, required): Bank export file path or inline CSV text. - statement_balance (number, required): Ending balance from the bank statement (dollars). For credit cards and other liability accounts, pass a negative value (e.g. -6143.27 means you owe $6,143.27). - statement_end_date (string, optional): Statement closing date (YYYY-MM-DD). Filters CSV and triggers balance verification. Auto-detected from CSV if omitted. - csv_format (object, optional): CSV layout overrides (column names or indexes, date_format, has_header, delimiter). - date_tolerance_days (number, optional): Date match tolerance, 0-7 days. Default: 7. - auto_adjust_dates (boolean, optional): Auto-adjust YNAB dates to match the bank dates. Default: false. - match_strictness (string, optional): Matching sensitivity — "loose" (more matches), "normal" (default), or "strict" (fewer false positives). - sign_convention (string, optional): How to treat CSV amount signs — "auto" (default, detects from data), "invert" (negate all amounts), "as_is" (use amounts unchanged). Useful when auto-detection fails for liability accounts. - dry_run (boolean, optional): Preview actions without executing. Default: true. - auto_create_transactions (boolean, optional): Auto-create missing transactions. Default: false. - auto_update_cleared_status (boolean, optional): Auto-mark matched transactions as cleared. Default: false. - auto_unclear_missing (boolean, optional): Auto-mark statement-missing cleared transactions as uncleared when reconciliation remains unbalanced. Default: false. - max_suggestions_in_output (number, optional): Limit unmatched items and suggestions sho

輸入參數dry_runcsv_databudget_idaccount_id必填csv_formatcsv_file_pathsign_conventionmatch_strictnessauto_adjust_datesstatement_balance必填confirmation_tokenstatement_end_date另有 5 個

ynab_get_user

YNAB: Get User Information

Get information about the authenticated YNAB user. Args: - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: user (id) Errors: - "UNAUTHORIZED" → YNAB token expired or invalid

輸入參數response_format

ynab_set_default_budget

YNAB: Set Default Budget

Set a default budget so other tools don't require budget_id every call. Args: - budget_id (string, required): Budget UUID to set as default. Validates against YNAB API. Returns: success, default_budget_id, cache_warm_started. Examples: - Set default: provide the UUID from ynab_list_budgets Errors: - "Budget not found" → invalid budget_id

輸入參數budget_id必填

ynab_get_default_budget

YNAB: Get Default Budget

Get the currently configured default budget ID. Args: - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: default_budget_id (null if not set), has_default.

輸入參數response_format

ynab_diagnostic_info

YNAB: Diagnostic Information

Get comprehensive diagnostic information about the MCP server (health, cache, delta, security). Args: - include_memory (boolean, optional): Include memory usage. Default: true. - include_environment (boolean, optional): Include env info. Default: true. - include_server (boolean, optional): Include server info. Default: true. - include_security (boolean, optional): Include security stats. Default: true. - include_cache (boolean, optional): Include cache metrics. Default: true. - include_delta (boolean, optional): Include delta cache info. Default: true. - response_format (string, optional): "json" or "markdown" (default: "markdown"). Returns: diagnostics object with requested sections.

輸入參數include_cacheinclude_deltainclude_memoryinclude_serverresponse_formatinclude_securityinclude_environment

ynab_clear_cache

YNAB: Clear Cache

Clear all in-memory caches. Safe operation — no YNAB data is modified. Args: (none) Returns: success. Use when: you need fresh data after external YNAB changes, or to free memory.

無需輸入參數。

版本歷史

4
  1. v0.32.0Nov 7, 2026
  2. v0.31.0Oct 29, 2026
  3. v0.29.1Oct 21, 2026
  4. v0.28.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分