# actual-budget-mcp

Spending analysis and safe writes for Actual Budget: every delete previews and asks first.

- **Type:** MCP server
- **Trust:** 85/100 (A), scored on the package rubric
- **Verification:** verified (build provenance)
- **Version:** 0.9.2
- **Author:** io.github.henfrydls
- **License:** Unknown
- **npm:** actual-budget-mcp
- **Source:** https://github.com/henfrydls/actual-budget-mcp.git
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

85/100 (A), scored on the package rubric
- Publisher verified: no
- Build provenance: verified attestation
- npm trusted publishing (OIDC): yes
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-17T10:55:50.372Z
- **Version scanned:** 0.9.2
- **CVEs:** none found by OSV at scan time

## Tools

37 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `balance_history` — Track an account's balance changes over time by showing the running balance at key transaction dates.
- `budget_vs_actual` — Compare budgeted amounts versus actual spending for each category in a given month. Highlights over-budget and under-budget categories.
- `category_trends` — Show spending trends for a category across multiple months. Identifies increasing/decreasing patterns.
- `create_account` — Create a new budget account (on-budget or off-budget). Returns the new account ID
- `create_category_group` — Create a new category group for organizing budget categories.
- `create_category` — Create a new budget category within a category group.
- `create_payee` — Create a new payee.
- `create_rule` — Create a transaction rule. When a transaction matches the condition, the action is applied automatically.
- `create_split_transaction` — Add a split transaction: one bank-facing total spread across multiple categories. The split amounts must sum to the total.
- `create_transaction` — Add a new transaction to an account. Use negative amounts for expenses, positive for income.
- `create_transfer` — Create a transfer between two accounts.
- `delete_account` — Delete an account and its entire transaction history. Destructive and irreversible:
- `delete_category_group` — Delete a category group and every category in it. Destructive and irreversible: the
- `delete_category` — Delete a budget category. Destructive and irreversible: the first call only previews,
- `delete_payee` — Delete a payee. Destructive and irreversible: the first call only previews, and
- `delete_rule` — Delete a transaction rule by its ID. Destructive and irreversible: the first call
- `delete_transaction` — Delete a transaction by its ID. Destructive and irreversible: the first call only
- `get_budget_month` — Get the budget for a specific month showing all category groups, their categories with budgeted amounts, actual spending, and remaining balance. Also shows the 
- `get_budget_summary` — Executive summary of the budget showing totals by category group, total income, total expenses, savings rate, and to-be-budgeted for a given month.
- `get_categories` — List all category groups with their categories and IDs. Useful for seeing the full budget structure.
- `get_category_balance` — Get the balance and spending history for a specific category across one or more months.
- `get_payees` — List all payees in the budget. Useful for seeing available payees and their IDs.
- `get_rules` — List all transaction rules showing their conditions and actions.
- `get_transactions` — List transactions with optional filters. Returns date, payee, category, amount, notes, account, and cleared status.
- `list_accounts` — List all budget accounts with their current balances, type (on-budget/off-budget), and status.
- `monthly_summary` — Monthly financial summary showing income, expenses, savings, and savings rate across multiple months. Great for seeing trends in your overall financial health.
- `recategorize_transaction` — Change the category of an existing transaction.
- `reconcile_currency_residual` — Book an adjustment transaction to bring a multi-currency account to the balance the bank reports, clearing accumulated FX-rate residual.
- `repair_sync` — Repair the budget's sync state when operations fail with an out-of-sync error.
- `run_bank_sync` — Sync bank transactions from linked accounts (GoCardless/SimpleFIN). Syncs a specific account or all linked accounts if none specified.
- `spending_by_category` — Break down spending by category for a date range. Shows each category's total spending and percentage of total.
- `spending_projection` — Project end-of-month spending for each category based on the current daily spending rate. Warns about categories likely to exceed budget.
- `update_budget_amount` — Set the budgeted amount for a category in a specific month.
- `update_category_group` — Rename or hide/unhide a category group.
- `update_category` — Rename or hide/unhide a budget category.
- `update_payee` — Rename a payee.
- `update_transaction` — Update fields of an existing transaction. Only the fields you provide will be changed.

## Install

**Verdict: install** — No blocking findings and no open coverage gaps — safe to install as configured.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"actual-budget\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"actual-budget-mcp\"\n      ],\n      \"env\": {\n        \"ACTUAL_PASSWORD\": \"<YOUR_ACTUAL_PASSWORD>\",\n        \"ACTUAL_SESSION_TOKEN\": \"<YOUR_ACTUAL_SESSION_TOKEN>\",\n        \"ACTUAL_ENCRYPTION_PASSWORD\": \"<YOUR_ACTUAL_ENCRYPTION_PASSWORD>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `ACTUAL_PASSWORD` — Actual Password (optional)
- `ACTUAL_SESSION_TOKEN` — Actual Session Token (optional)
- `ACTUAL_ENCRYPTION_PASSWORD` — Actual Encryption Password (optional)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 3 credentials (0 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Critical blast radius — deletes data; holds an api key.
- Floor 60, ceiling 60 (tier: critical)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/actual-budget-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/actual-budget-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/actual-budget-mcp
- HTML page: https://forgeregistry.com/registry/actual-budget-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
