zenmoney-mcp
MCP server for ZenMoney โ access your personal finance data from any MCP-compatible AI client (Claude Desktop, Cursor, etc.).
Features
| Tool | Description |
|---|
sync_data | Sync data with ZenMoney (run first) |
list_accounts | List wallets, cards, and cash accounts |
list_categories | List expense/income categories with hierarchy |
list_merchants | List known merchants/payees |
list_transactions | List and filter recent transactions |
add_expense | Add an expense transaction |
add_income | Add an income transaction |
add_transfer | Transfer money between accounts (including cross-currency) |
update_transaction | Change an existing transaction โ category, amount, date, payee, comment, account |
suggest_category | Get auto-suggested category for a payee |
Prerequisites
Quick start
No cloning or building needed โ just add to your MCP client config:
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"zenmoney": {
"command": "npx",
"args": ["-y", "zenmoney-mcp"],
"env": {
"ZENMONEY_TOKEN": "your_token_here"
}
}
}
}
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"zenmoney": {
"command": "npx",
"args": ["-y", "zenmoney-mcp"],
"env": {
"ZENMONEY_TOKEN": "your_token_here"
}
}
}
}
Claude Code
claude mcp add zenmoney -- npx -y zenmoney-mcp
Replace your_token_here with your token from zerro.app/token.
Claude Desktop (MCPB bundle)
If you prefer a one-click install without editing JSON, build a .mcpb bundle and drag it into Claude Desktop โ Settings โ Extensions:
npm install
npm run pack:mcpb
On install, Claude Desktop will prompt for your ZenMoney token (stored in the OS keychain).
From source
git clone https://github.com/artarasov/zenmoney-mcp.git
cd zenmoney-mcp
npm install
npm run build
cp .env.example .env
Usage
Once configured, start a conversation and ask your AI client to:
- Sync first โ "Sync my ZenMoney data"
- Browse โ "Show me my accounts", "List my categories"
- Query โ "Show expenses for the last 7 days", "List transactions from January 1โ31", "How much did I spend on groceries?"
- Add transactions โ "Add a 500 RUB expense for coffee today"
- Transfer โ "Transfer 1000 USD from Checking to Euro Card, received 920 EUR"
- Fix mistakes โ "Recategorize yesterday's Amazon expense to Household", "Change the comment on that 500 RUB coffee"
list_transactions prints each transaction's id, and update_transaction takes one id or a list of them โ so a whole batch can be recategorized in a single call.
Contributing
PRs welcome! Feel free to open issues for bugs or feature requests.
License
MIT