Home › Finance › Actual Budget
Actual Budget
Actual Budget, carefully: deletes preview first, and new transactions check for duplicates.
Topics: Finance & Fintech
Connect
Review any command before running it. Package names and URLs come from the server's own registry entry.
Package (npm 0.12.0)
npx -y [email protected]
Or add to your MCP client config:
{
"mcpServers": {
"actual-budget-mcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"ACTUAL_SERVER_URL": "<YOUR_VALUE>",
"ACTUAL_PASSWORD": "<YOUR_VALUE>",
"ACTUAL_SESSION_TOKEN": "<YOUR_VALUE>",
"ACTUAL_BUDGET_ID": "<YOUR_VALUE>",
"ACTUAL_ENCRYPTION_PASSWORD": "<YOUR_VALUE>",
"ACTUAL_ENCRYPTION_PASSWORDS": "<YOUR_VALUE>",
"ACTUAL_HTTP_TOKEN": "<YOUR_VALUE>",
"ACTUAL_HTTP_WRITE_TOKEN": "<YOUR_VALUE>"
}
}
}
}
ACTUAL_SERVER_URLrequired — URL of your Actual Budget server, for example http://localhost:5006ACTUAL_PASSWORDsecret — Password for your Actual Budget server. Not needed if you set ACTUAL_SESSION_TOKENACTUAL_SESSION_TOKENsecret — Session token for servers behind OIDC, which have no password. Use instead of ACTUAL_PASSWORD; if both are set, the token winsACTUAL_BUDGET_IDrequired — Your budget's Sync ID, found under Settings > Show advanced settingsACTUAL_ENCRYPTION_PASSWORDsecret — Only needed if your budget file is end-to-end encryptedACTUAL_BUDGET_IDS— Every budget this server serves, comma separated, when it is more than one. Each tool then takes a budget_id, and each budget is opened in a process of its ownACTUAL_ENCRYPTION_PASSWORDSsecret — A JSON object of budget sync id to encryption password, for when more than one of the budgets is encrypted. Each worker is given its own and never the mapACTUAL_BUDGET_WORKERS— How many budgets stay open at once. Defaults to 3. A fourth budget closes the one that went longest without a callACTUAL_WORKER_IDLE_MINUTES— How long an open budget with nothing to do stays open. Defaults to 15ACTUAL_WORKER_READY_SECONDS— How long a call waits for a budget that is still opening before it answers that it is still opening. Defaults to 45ACTUAL_READ_ONLY— Set to 1 to hide every write tool from the model, exposing only reads and analysisACTUAL_TOOLSET— Set to chat to offer the 18 everyday tools instead of all 44, which is 17.4 KiB of tool descriptions instead of 39.7 KiB on every connection. Defaults to fullACTUAL_DATA_DIR— Directory for the local budget cacheACTUAL_HTTP_TIMEOUT_MS— How long to wait for your server to start replying, in milliseconds. Defaults to 60000; raise it if a GoCardless bank sync is being cut offACTUAL_HTTP_PORT— Serve MCP over HTTP on this port instead of stdio. Only for a server you run yourself and point clients at: a client that starts this package itself speaks stdio and cannot reach it once this is setACTUAL_HTTP_TOKENsecret — The credential for the read path, /mcp. Required once ACTUAL_HTTP_PORT is set, and at least 32 charactersACTUAL_HTTP_WRITE_TOKENsecret — A second credential, for the write path, /mcp-write. Without it the server serves no write path at allACTUAL_HTTP_HOST— What to bind to. Defaults to 127.0.0.1; inside a container that is unreachable, so 0.0.0.0 together with ACTUAL_HTTP_ALLOW_REMOTEACTUAL_HTTP_ALLOW_REMOTE— Set to 1 to bind somewhere other than loopback. Nothing here terminates TLS, so put something in front of it that doesACTUAL_HTTP_ALLOWED_HOSTS— Hostnames to accept in the Host header, comma separated and without ports, for a server that is not on loopback. Anything else is answered 403
Package (oci)
docker run -i --rm -e ACTUAL_SERVER_URL=<YOUR_VALUE> -e ACTUAL_PASSWORD=<YOUR_VALUE> -e ACTUAL_SESSION_TOKEN=<YOUR_VALUE> -e ACTUAL_BUDGET_ID=<YOUR_VALUE> -e ACTUAL_ENCRYPTION_PASSWORDS=<YOUR_VALUE> -e ACTUAL_HTTP_TOKEN=<YOUR_VALUE> -e ACTUAL_HTTP_WRITE_TOKEN=<YOUR_VALUE> ghcr.io/henfrydls/actual-budget-mcp:0.12.0
Or add to your MCP client config:
{
"mcpServers": {
"actual-budget-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ACTUAL_SERVER_URL=<YOUR_VALUE>",
"-e",
"ACTUAL_PASSWORD=<YOUR_VALUE>",
"-e",
"ACTUAL_SESSION_TOKEN=<YOUR_VALUE>",
"-e",
"ACTUAL_BUDGET_ID=<YOUR_VALUE>",
"-e",
"ACTUAL_ENCRYPTION_PASSWORDS=<YOUR_VALUE>",
"-e",
"ACTUAL_HTTP_TOKEN=<YOUR_VALUE>",
"-e",
"ACTUAL_HTTP_WRITE_TOKEN=<YOUR_VALUE>",
"ghcr.io/henfrydls/actual-budget-mcp:0.12.0"
]
}
}
}
ACTUAL_SERVER_URLrequired — URL of your Actual Budget server. Inside the container localhost is the container, so use host.docker.internalACTUAL_PASSWORDsecret — Password for your Actual Budget server. Not needed if you set ACTUAL_SESSION_TOKENACTUAL_SESSION_TOKENsecret — Session token for servers behind OIDC, which have no password. Use instead of ACTUAL_PASSWORD; if both are set, the token winsACTUAL_BUDGET_IDrequired — Your budget's Sync ID, found under Settings > Show advanced settingsACTUAL_BUDGET_IDS— Every budget this server serves, comma separated, when it is more than one. Each tool then takes a budget_id, and each budget is opened in a process of its ownACTUAL_ENCRYPTION_PASSWORDSsecret — A JSON object of budget sync id to encryption password, for when more than one of the budgets is encrypted. Each worker is given its own and never the mapACTUAL_BUDGET_WORKERS— How many budgets stay open at once. Defaults to 3. A fourth budget closes the one that went longest without a callACTUAL_WORKER_IDLE_MINUTES— How long an open budget with nothing to do stays open. Defaults to 15ACTUAL_WORKER_READY_SECONDS— How long a call waits for a budget that is still opening before it answers that it is still opening. Defaults to 45ACTUAL_READ_ONLY— Set to 1 to hide every write tool from the model, exposing only reads and analysisACTUAL_TOOLSET— Set to chat to offer the 18 everyday tools instead of all 44, which is 17.4 KiB of tool descriptions instead of 39.7 KiB on every connection. Defaults to fullACTUAL_HTTP_TIMEOUT_MS— How long to wait for your server to start replying, in milliseconds. Defaults to 60000; raise it if a GoCardless bank sync is being cut offACTUAL_HTTP_PORT— Serve MCP over HTTP on this port instead of stdio. Only for a server you run yourself and point clients at: a client that starts this package itself speaks stdio and cannot reach it once this is setACTUAL_HTTP_TOKENsecret — The credential for the read path, /mcp. Required once ACTUAL_HTTP_PORT is set, and at least 32 charactersACTUAL_HTTP_WRITE_TOKENsecret — A second credential, for the write path, /mcp-write. Without it the server serves no write path at allACTUAL_HTTP_HOST— What to bind to. Defaults to 127.0.0.1; inside a container that is unreachable, so 0.0.0.0 together with ACTUAL_HTTP_ALLOW_REMOTEACTUAL_HTTP_ALLOW_REMOTE— Set to 1 to bind somewhere other than loopback. Nothing here terminates TLS, so put something in front of it that doesACTUAL_HTTP_ALLOWED_HOSTS— Hostnames to accept in the Host header, comma separated and without ports, for a server that is not on loopback. Anything else is answered 403
Related servers
atilaahmettaner/tradingview-mcp
Market analysis for AI assistants: screeners, multi-timeframe analysis, backtests, in-chat charts.
tradememory-protocol
Tamper-evident decision audit trail and outcome-weighted memory for AI trading agents.
CNEquity
Open-source China A-share data lake for AI agents: prices, fundamentals, flows, events, PIT.
metatrader-mcp-server
Execute trades on the MetaTrader 5 platform.
OpenAccountants
Open-source AI accounting skills verified by licensed accountants (tax, VAT, payroll).
mcp_massive
Access Polygon.io financial market data APIs for stocks, indices, forex, options and more.
Listed in punkpeye/awesome-mcp-servers (MIT)
Data from the Official MCP Registry