Actual Budget MCP Server
An MCP server for Actual Budget: agents read accounts and transactions, build spending reports and, with a flag, edit categories.
- 279 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- With `--enable-write` an agent changes and deletes budget data, and server keys and passwords sit in the client configuration.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/actual-budget-mcp-serverDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- With `--enable-write` an agent changes and deletes budget data, and server keys and passwords sit in the client configuration.
This is third-party code. Review the repository files before installing.
What it does
Actual Budget MCP Server connects a personal budget in Actual Budget to Claude and other MCP clients. Read tools return accounts, transactions, balance history and reports: spending by category, monthly summary, budget versus actual, net worth and cash flow. The prompts `financial-insights` and `budget-review` are ready to use. Started with `--enable-write`, it turns on write tools: creating and editing transactions, categories, payees and rules, plus saved reports and dashboard widgets. The server runs over stdio, and `--sse` opens HTTP access that should be protected with `--enable-bearer` when exposed to a network.
Who it is for. People who keep personal finances in Actual Budget and want to ask an agent about their spending in plain language.
Good fit when
- You want to see where money went last month without building a report by hand.
- Payees piled up with duplicates and need merging through `merge-payees`.
- Net worth has to be compared month by month over a year.
- Dashboard widget layout is easier to hand to an agent than to drag by mouse.
Not a fit when
- Your budget lives outside Actual Budget: the server works only with it.
- You need real payments or money transfers: the server edits only budget records.
- The server with your data would be exposed to a public network without a token.
Example request
Show spending by category for last month and compare it with the planned budget.MCP
- Transport
- stdio, http
- Authentication
- key is optional
Environment variables
`ACTUAL_SERVER_URL`- Actual server address when the budget lives on a remote server
`ACTUAL_PASSWORD`secret- Actual server password
`ACTUAL_BUDGET_SYNC_ID`- Identifier of the budget to use
`ACTUAL_DATA_DIR`- Actual data directory, `~/.actual` by default
`ACTUAL_SESSION_TOKEN`secret- Session token for OpenID-login servers; takes precedence over the password
`ACTUAL_BUDGET_ENCRYPTION_PASSWORD`secret- Separate budget encryption password when it differs from the server password
`ACTUAL_SYNC_TTL_MS`- Data freshness window in ms, 60000 by default
`BEARER_TOKEN`secret- Token for `--enable-bearer` when HTTP access is exposed
Limitations
It needs a working Actual Budget and Node.js 16 or newer. Without `--enable-write` the write tools are unavailable, and with it an agent can change and delete transactions, categories and rules, so back up the budget first. With OpenID login a password does not work: a session token from browser DevTools is needed and it expires. Amounts in JSON reports are in cents. Future-dated transactions are excluded from balances.
How to disable. Remove the `actualBudget` block from the client configuration and restart it. To keep read-only access, run the server without `--enable-write`. Stop the Docker container if you ran HTTP mode.
FAQ
How do I enable writes?
Add the `--enable-write` flag to the launch arguments. Without it only read tools are available.
Which reports exist?
`spending-by-category`, `monthly-summary`, `budget-vs-actual`, `net-worth`, `category-trends`, `spending-by-payee` and `cash-flow`. Amounts return as integer cents.
How do I expose the server over HTTP?
Start it with `--sse` and, for internet access, add `--enable-bearer` and the `BEARER_TOKEN` variable.
How do I test the connection to Actual?
Run `node build/index.js --test-resources`. It reports whether the server can reach the budget data.
Does Actual Budget need a server?
No, a local data directory `ACTUAL_DATA_DIR` is enough. For a remote server set `ACTUAL_SERVER_URL` and a password.
Discussion
No questions or reviews yet.
Related
MCP serversThe official RiseUp MCP server: budget, transactions, account balances and mortgage data, read-only, in Claude Desktop
The official Xero MCP server: an agent reads invoices, contacts, journals and reports and creates invoices, payments and timesheets
Financial Datasets MCP
Financial Datasets MCP Server
An MCP server for the Financial Datasets API: company financials, stock and crypto prices and news for the agent
Investment and spending tracker with a built-in MCP server: the agent reads the portfolio and writes through drafts
A financial analysis MCP server: 500+ methods from company statements, ratios, indicators, risk metrics and macro data
The server gives agents read access to your bank accounts and transactions through Enable Banking, without payment tools.
README in short
Tools, installation through Docker or npx, Claude Desktop and Codex CLI setup, SSE mode and a package in the official MCP Registry.