saldo-mcp
v0.1.9
Published
Saldo local connector — read-only MCP bridge between Nordic bank accounts and AI assistants.
Maintainers
Readme
saldo-mcp
Ask your AI about your money — without your money data ever leaving your machine.
saldo-mcp is the open-source engine behind Saldo: a read-only
MCP server that connects Swedish/Nordic bank
accounts to Claude, ChatGPT, and any MCP-compatible assistant. It runs on your
computer, fetches data directly from the bank via Enable Banking's
open-banking API, and keeps an encrypted local cache — so your transaction
history accumulates beyond the bank's ~90-day window, and nothing financial ever
touches anyone else's servers. Including ours.
Principles
- Read-only, always. Account-information consents only. Payment initiation isn't a disabled feature — it's a capability this codebase does not contain.
- Privacy by architecture. The engine calls the bank API from your device. The optional managed broker (hosted by us, for the paid tiers) handles consent and short-lived keys only; it has no endpoint that can receive financial data.
- Yours to run. Self-hosting with your own free Enable Banking application is free forever, no account with us required.
Quick start (self-host)
Requirements: Node 24+, a Swedish/Nordic bank account, and a free Enable Banking application (their Restricted Production tier: link your own accounts, real data, no contract).
No install needed to try it — state lives in ~/.saldo/, not in the package:
npx saldo-mcp init # wizard: managed or self-host (paste your EB app id + .pem path)
npx saldo-mcp institutions SE
npx saldo-mcp link "SE:Your Bank" # BankID in the browser
npx saldo-mcp sync # pull history into the encrypted cache
npx saldo-mcp doctor # ✓/✗ health checksnpx saldo-mcp connect-claude # register in Claude Desktop, restart Claudeconnect-claude registers the server in Claude Desktop (writes its
config) and in Claude Code (via claude mcp add, if the CLI is
installed) — launched via npx, absolute path, pinned to the current version;
re-run it after upgrades. Prefer a fixed install? npm install -g saldo-mcp
gives you the saldo command and pins Claude to that install instead.
Prefer running from source? git clone https://github.com/pixby/saldo-mcp.git && cd saldo-mcp && npm install && npm run build, then use node dist/cli/index.js in place of saldo.
Then ask Claude: "What did I spend on groceries last month?"
(npm package coming: npx saldo-mcp init — after which the command is just saldo.)
Uninstall
Everything lives on your machine — removal is ordinary file deletion:
npx saldo-mcp disconnect-claude # unregister from Claude Desktop + Claude Code
rm -rf ~/.saldo # config, encrypted cache + key
npm uninstall -g saldo-mcp # if you installed globallyBank consents live at your bank (revoke in Enable Banking's control panel; they also expire on their own after ~180 days).
MCP tools
Seven read-only tools, designed so assistants answer cheaply from pre-computed summaries instead of re-deriving totals from raw dumps:
list_accounts · get_balances · get_transactions (date + amount filters,
one or all accounts) · search_transactions (full-text) ·
spending_by_category (own Nordic merchant categorizer, or by exact counterparty) ·
get_recurring_charges · compare_periods
Architecture notes
- Provider-neutral core: everything above
src/providers/provider.ts(BankProvider) speaks provider-neutral domain types — Enable Banking is the backend today; others can slot in without touching the engine or tools. - Cache:
node:sqlite+ AES-256-GCM at rest (no native deps). Only ids and booking dates are stored in the clear (for indexed range queries); amounts, names, and descriptions never hit disk unencrypted. - Transports: stdio (this repo's default — your MCP client launches it) and
Streamable HTTP on
127.0.0.1(used by the Saldo desktop app). - Money is integer minor units (öre) internally; formatting to kr happens only at presentation.
- Tests:
npm test— 54 integration/unit tests over a deterministic fake provider (no bank, no network, no secrets).
Relationship to Saldo
This repo is the engine. Saldo wraps it in a desktop app (macOS/Windows/Linux) with one-click assistant connections and a managed tier where you bring only your BankID. Self-hosting this engine is and stays free.
License
MIT © Pixby Media AB
