zenmoney-mcp
# zenmoney-mcp
MCP server for [ZenMoney](https://zenmoney.ru) — 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
- Node.js >= 18
- A [ZenMoney](https://zenmoney.ru) account
- API token from [zerro.app/token](https://zerro.app/token)
## 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):
```json
{
"mcpServers": {
"zenmoney": {
"command": "npx",
"args": ["-y", "zenmoney-mcp"],
"env": {
"ZENMONEY_TOKEN": "your_token_here"
}
}
}
}
```
### Cursor
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"zenmoney": {
"command": "npx",
"args": ["-y", "zenmoney-mcp"],
"env": {
"ZENMONEY_TOKEN": "your_token_here"
}
}
}
}
```
### Claude Code
```bash
claude mcp add zenmoney -- npx -y zenmoney-mcp
```
Replace `your_token_here` with your token from [zerro.app/token](https://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:
```bash
npm install
npm run pack:mcpb
# → dist/zenmoney-mcp-<version>.mcpb
```
On install, Claude Desktop will prompt for your ZenMoney token (stored in the OS keychain).
### From source
```bash
git clone https://github.com/artarasov/zenmoney-mcp.git
cd zenmoney-mcp
npm install
npm run build
cp .env.example .env # add your token
```
## Usage
Once configured, start a conversation and ask your AI client to:
1. **Sync first** — "Sync my ZenMoney data"
2. **Browse** — "Show me my accounts", "List my categories"
3. **Query** — "Show expenses for the last 7 days", "List transactions from January 1–31", "How much did I spend on groceries?"
4. **Add transactions** — "Add a 500 RUB expense for coffee today"
5. **Transfer** — "Transfer 1000 USD from Checking to Euro Card, received 920 EUR"
6. **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](LICENSE)
TDQS
Scored across 10 tools
Each tool targets a clearly distinct resource and action: sync_data, the three add_* tools map to distinct transaction types (income/expense/transfer), the four list_* tools target distinct entities, and suggest_category/update_transaction are unique operations. There is no meaningful overlap in purpose.
Every tool follows a consistent snake_case verb_noun pattern (sync_data, add_income, list_accounts, update_transaction). The convention is applied uniformly with no camelCase or stylistic deviations.
Ten tools is well-scoped for a personal-finance integration, covering sync, listing of the main entities, and transaction creation/updating without redundancy. Each tool earns its place.
The set covers sync, reading (accounts, categories, merchants, transactions), creating all transaction types, and updating transactions in batch. The main gap is deleting transactions (and managing accounts/categories/merchants), but core record-keeping and recategorization workflows are covered.