Claude Desktop Finance MCP: Connect Your Own Ledger
Connect Claude Desktop or Claude Code to your own Open Net Worth ledger over MCP: the setup steps, what Claude can change, and where approval happens.
You connect Claude to Open Net Worth by pasting a config from Settings → MCP into Claude Desktop, or by running one claude mcp add-json command for Claude Code. Claude then reads and changes your ledger, and approval happens in Claude, because Open Net Worth shows no confirm card to outside apps.
Open Net Worth is the Open-source Personal Wealth Agent you host yourself, with Lucius as its built-in AI agent. It is also an MCP server (MCP, the Model Context Protocol, is a standard way for AI apps to call tools). Setup is mostly copy and paste; the permission decisions take longer, so each one sits where it comes up.
Short answer: Open Settings → MCP, choose Claude Desktop, click Copy config and paste it into Claude Desktop under Settings → Developer → Edit Config. For Claude Code, run
claude mcp add-jsonwith the same block. Claude then acts as you with no Open Net Worth confirm card, so block the write tools you don’t want first.
Note: Open Net Worth is software, not a financial advisor. This guide shows how a connection works. It is not financial, investment, tax or legal advice.
What you need before you start
- Open Net Worth, running whenever Claude uses it. The desktop app must be open or running in the background.
- Your API token. One exists already. It lives in Settings → Security → API token, and Copy config puts it into the config for you.
- Claude Desktop or Claude Code. These are the two Claude routes we walk through in the connect AI apps docs.
Open Net Worth’s first run asks you to connect an AI model for Lucius and has no skip.
This guide covers Claude Desktop and Claude Code. claude.ai in the browser isn’t covered, so don’t expect it to work. Apps that run on a provider’s servers can’t reach localhost and need a public HTTPS address, which is a bigger step than this guide covers (see exposing beyond localhost).
Block the write tools you don’t want, before you connect
An app that holds your token acts as you. A tool set to Needs approval “runs straight away when another app calls it”, and only tools set to Blocked are refused. Built-in reads just run. Built-in changes, such as logging a transaction, moving budget money, creating an account or sending an email, count as Needs approval until you decide otherwise, so for Claude they run.
Blocked is global. A Blocked tool is refused outright in every mode and every Automation (permissions page), so blocking a tool for Claude blocks it for Lucius too. There is one token for every app, so Claude can’t get a narrower key.
Where you set Blocked depends on the tool:
- Connector tools (Telegram, email, bank sync, web search): open Connectors, then the connector, then Tool permissions. Each tool can be Always allow, Needs approval or Blocked.
- Built-in tools (deleting transactions, creating accounts): the default Settings → Permissions list only shows tools you have already decided about, with a Reset button. For a searchable list of every built-in tool with Always allow, Ask or Block, turn on Permissions v2 under Settings → Developer → Experimental.
Permissions v2 is experimental and off by default, and it changes how Lucius asks too, so read the Permissions v2 docs before you switch it on. It covers this case: a request from another app calling Open Net Worth’s MCP server “can’t be asked, so it runs”, and the fix is to set the tool to Block.
Start with deletes and anything that sends something out of the app. Two bulk tools act on every row a filter matches, delete transactions where and apply payee rules, whose tool names are delete_transactions_where and apply_payee_rules. Accounts are removed with delete_accounts. Tool names change between releases, so copy the exact names from Claude’s tool list once connected. For the same job from a script, the personal finance MCP server guide has the commands.
Copy the config from Open Net Worth
- In Open Net Worth, open Settings → MCP.
- Under Connect from…, click Claude Desktop. Claude Code has no tab of its own and takes the same block.
- On a server install, pick Installed (onw) or Running from source.
- Click Copy config.
The screen shows the placeholder ONW_API_TOKEN_PASTED_ON_COPY; the clipboard holds the real token, so treat it like a password and don’t paste it into a chat or a note.
What the config runs depends on how you installed Open Net Worth:
| Install | What the config runs |
|---|---|
| Desktop app | Bundled Python, plus your book folder |
Installed (onw) | The onw command with mcp |
| Running from source | python3 -m backend.mcp.stdio_bridge |
The desktop app picks a new address on every start, so its config names your book folder (ONW_ROOT) and the bridge finds the current address there. If you move the app or switch book folders, copy the config again.
Set up Claude Desktop
- In Claude Desktop, open Settings → Developer → Edit Config. This opens
claude_desktop_config.json. The Model Context Protocol project lists its location as~/Library/Application Support/Claude/on macOS and%APPDATA%\Claude\on Windows. - Paste the copied block. If you already have other servers, merge it into
"mcpServers". - Save the file, quit Claude Desktop completely and start it again.
A config for a server installed with onw looks like this, with a placeholder where your token goes:
claude_desktop_config.json
{
"mcpServers": {
"open-net-worth": {
"command": "/Users/you/.local/bin/onw",
"args": ["mcp"],
"env": {
"ONW_BASE_URL": "http://127.0.0.1:8080",
"ONW_API_TOKEN": "your-api-token"
}
}
}
}
The second decision is where Claude asks. The Model Context Protocol project’s Claude Desktop guide says Claude can use a server’s tools “with your approval”. Read each request before you accept it. If you change Claude’s settings so a tool stops asking, nothing at the Open Net Worth end asks in its place.
Set up Claude Code
- In Settings → MCP, choose Claude Desktop and click Copy config.
- Take the part inside
"open-net-worth": { … }and add it from a terminal:
Terminal
claude mcp add-json open-net-worth '{"command":"/Users/you/.local/bin/onw","args":["mcp"],"env":{"ONW_BASE_URL":"http://127.0.0.1:8080","ONW_API_TOKEN":"your-api-token"}}'
- Add
--scope userto make it available in every project.
If Open Net Worth runs as a server rather than the desktop app, you can connect over HTTP instead:
claude mcp add --transport http open-net-worth http://127.0.0.1:8080/mcp \
--header "Authorization: Bearer your-api-token"
In Claude Code, the approval decision has two parts. First, the permission mode. Anthropic’s permission modes page says Manual mode stops to ask before most actions, while auto mode lets a second model, a classifier, review actions instead of you. As of November 2026 it also says auto mode is the starting mode for interactive terminal sessions on recent Claude Code versions, so a prompt may not appear for every write.
Second, deny rules. A deny rule blocks in every mode, and you write one for an MCP tool as mcp__<server>__<tool>. Put it in a Claude Code settings file such as ~/.claude/settings.json:
~/.claude/settings.json
{
"permissions": {
"deny": [
"mcp__open-net-worth__delete_transactions_where"
]
}
}
Run /mcp inside Claude Code and select a tool to see its full name before you write the rule. A wildcard such as mcp__open-net-worth__delete_* covers a family of tools. A deny rule only covers Claude Code; Blocked in Open Net Worth covers every app and Lucius, so use both.
Check that it works
In Claude Desktop, ask “Using open-net-worth, what’s my net worth?” It should answer with your figure, and the server also shows in its connectors and tools list. In Claude Code, claude mcp list should show open-net-worth as connected.
Try a read first. Ask for a write only after you’ve blocked what you wanted blocked.
What Claude can read and write once connected
Any MCP app can use the same tools Lucius has, such as looking up balances, searching and adding transactions and checking the budget. Lucius has a few hundred tools, and Claude chooses which ones to call.
Everything a tool returns becomes part of your Claude conversation, and Anthropic says your privacy settings apply to anything you share with Claude outside its Personal Finance hub. The where your financial data goes post lists the other outbound calls.
Each change another app makes is logged and saved as a checkpoint, so you can undo it like one Lucius made. Anything that leaves the app, such as a sent email or message, can’t be undone, so block send tools first.
Where approval happens
Confirm cards belong to Lucius’s own chats, in the app and on Telegram. Outside apps don’t get them. KNOWN_ISSUES.md records the design decision: inbound MCP does not re-ask, because “Those clients already prompt before executing a tool”. A tool whose level reads Needs approval therefore does not ask on this path; the note calls that a labelling matter.
| Layer | What it does to a Claude write |
|---|---|
| Open Net Worth, Needs approval | Runs straight away, no card |
| Open Net Worth, Blocked | Refused for every app and Lucius |
| Claude Desktop prompt | Asks you before the tool runs |
| Claude Code Manual mode | Asks before most actions |
| Claude Code auto mode | A classifier reviews instead of you |
| Claude Code deny rule | Refused in every mode |
Token and network exposure
One token works for every app, and the copied config contains it as text. Settings → Security → API token → Rotate invalidates it at once for every app and every iPhone Shortcut, with no confirmation. Setting a password for the first time also replaces the token. After either, copy the config again.
Claude Desktop and Claude Code start the bridge on your computer, so nothing has to listen on your network. A server install listens on 127.0.0.1:8080 by default, and the desktop app only accepts connections from its own computer. Leave that alone.
Before you make a server reachable from other devices, set a password. The exposing page warns against port-forwarding it or putting it on a public address as is: the app speaks plain HTTP and has one password.
If Claude doesn’t connect
- Server disconnected, or no tools appear: Open Net Worth isn’t running. Start it, then restart Claude Desktop.
- Command not found: replace
"command"with the full path fromwhich onw(where onwon Windows). - JSON error: paste only one block and leave no
//comment lines in the file. - 401 authentication required: the token is wrong or old. Copy the config again.
- It worked, then stopped: you rotated the token or set a first password, or a desktop config with a
127.0.0.1:<port>address went stale after a restart. Copy the config again from inside the desktop app.
How this differs from Personal Finance in Claude
Personal Finance in Claude, announced by Anthropic on Nov 5, 2026, is as of November 2026 rolling out in beta on the Pro, Max and Ultra plans in the US. It is read-only, and you link bank and card accounts through Plaid. This guide covers a ledger you host yourself, which Claude reaches over MCP and can change. Our Claude Personal Finance alternative post and the Claude and ChatGPT comparison cover the differences.
To run the server on a machine other than your laptop, start with the self-hosting how-to. For what Lucius does inside the app, read AI agent for personal finance.
Try it on fake data at demo.opennetworth.ai (no sign-up), or install it from the docs. Questions go to Discord, bugs to GitHub issues.
Frequently asked questions
Does claude.ai in the browser work with Open Net Worth?
We give setup steps for Claude Desktop and Claude Code, not claude.ai on the web, so don't expect it to work there. Apps that run on a provider's servers can't reach localhost, and they need a public HTTPS address.
Can Claude change my books?
Yes. An app that holds your API token acts as you, so it can read the whole book and make changes. There is one token for every app. The way to limit Claude is to set the tools you don't want used to Blocked.
Does Open Net Worth ask me before Claude changes something?
No. A tool set to Needs approval runs straight away when another app calls it, and only tools set to Blocked are refused. The approval step is Claude's own prompt, so check what Claude Desktop or Claude Code asks before you rely on it.
Do I need to open a port or put my ledger on the internet?
Not for Claude Desktop or Claude Code on the same computer. Claude starts a small bridge program on your machine, and a server install listens only on 127.0.0.1 by default. Exposing it is only for hosted apps.
How do I undo a change Claude made?
Each change another app makes is logged and saved as a checkpoint, so you can undo it like a change Lucius made. A sent email or message, or code that ran, cannot be undone.
Is this the same as Personal Finance in Claude?
No. Personal Finance in Claude is Anthropic's own read-only feature. It links bank and card accounts through Plaid and is rolling out in beta in the US. This guide connects Claude to a ledger you host yourself, which Claude can also write to.
Sources
- Use your book from other AI apps, Open Net Worth docsofficial
- How Lucius's permissions work, Open Net Worth docsofficial
- Permissions v2 (experimental), Open Net Worth docsofficial
- Security and privacy, Open Net Worth docsofficial
- Exposing this beyond localhost, Open Net Worth docsofficial
- Inbound MCP does not re-ask, KNOWN_ISSUES.md, Open Net Worth repositoryofficial
- Connect to local MCP servers, Model Context Protocolofficial
- Configure permissions, Claude Code docsofficial
- Choose a permission mode, Claude Code docsofficial
- Introducing Personal Finance in Claude, Anthropicofficial