{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.henfrydls/actual-budget-mcp","description":"Spending analysis and safe writes for Actual Budget: every delete previews and asks first.","title":"Actual Budget","repository":{"url":"https://github.com/henfrydls/actual-budget-mcp.git","source":"github","id":"henfrydls/actual-budget-mcp"},"version":"0.9.0","websiteUrl":"https://actual-mcp.henfrydls.com","packages":[{"registryType":"npm","identifier":"actual-budget-mcp","version":"0.9.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"URL of your Actual Budget server, for example http://localhost:5006","isRequired":true,"name":"ACTUAL_SERVER_URL"},{"description":"Password for your Actual Budget server. Not needed if you set ACTUAL_SESSION_TOKEN","isSecret":true,"name":"ACTUAL_PASSWORD"},{"description":"Session token for servers behind OIDC, which have no password. Use instead of ACTUAL_PASSWORD; if both are set, the token wins","isSecret":true,"name":"ACTUAL_SESSION_TOKEN"},{"description":"Your budget's Sync ID, found under Settings > Show advanced settings","isRequired":true,"name":"ACTUAL_BUDGET_ID"},{"description":"Only needed if your budget file is end-to-end encrypted","isSecret":true,"name":"ACTUAL_ENCRYPTION_PASSWORD"},{"description":"Set to 1 to hide every write tool from the model, exposing only reads and analysis","name":"ACTUAL_READ_ONLY"},{"description":"Directory for the local budget cache","name":"ACTUAL_DATA_DIR"}]},{"registryType":"oci","identifier":"ghcr.io/henfrydls/actual-budget-mcp:0.9.0","transport":{"type":"stdio"},"environmentVariables":[{"description":"URL of your Actual Budget server. Inside the container localhost is the container, so use host.docker.internal","isRequired":true,"name":"ACTUAL_SERVER_URL"},{"description":"Password for your Actual Budget server. Not needed if you set ACTUAL_SESSION_TOKEN","isSecret":true,"name":"ACTUAL_PASSWORD"},{"description":"Session token for servers behind OIDC, which have no password. Use instead of ACTUAL_PASSWORD; if both are set, the token wins","isSecret":true,"name":"ACTUAL_SESSION_TOKEN"},{"description":"Your budget's Sync ID, found under Settings > Show advanced settings","isRequired":true,"name":"ACTUAL_BUDGET_ID"},{"description":"Set to 1 to hide every write tool from the model, exposing only reads and analysis","name":"ACTUAL_READ_ONLY"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-09-13T00:48:19.763955Z","publishedAt":"2026-09-13T00:48:19.763955Z","updatedAt":"2026-09-13T00:48:19.763955Z","isLatest":true}}}
