MCP-based personal finance AI Agent powered by Beancount
Project description
QuidClaw
Your AI-powered Personal CFO.
Local-first. Privacy by design. Your data never leaves your machine.
QuidClaw is an open-source MCP server that gives AI assistants the ability to manage your personal finances using Beancount double-entry accounting. Connect it to Claude, ChatGPT, or any MCP-compatible client — and you have a Personal CFO that tracks every dollar, generates reports, and keeps your books clean.
"Lunch was $12, paid with Apple Pay" → AI calls QuidClaw → proper double-entry transaction recorded in your local ledger.
Why QuidClaw
- Privacy first — All data stored locally as plain text. No servers, no cloud, no telemetry. Nothing ever leaves your machine.
- You own your data — Standard Beancount
.beanfiles you can read, edit, and version control. No vendor lock-in, no proprietary formats. - AI-powered, not AI-dependent — QuidClaw is just tools. The intelligence comes from your AI client. Switch AI providers anytime.
How It Works
You ──(natural language)──→ AI Client ──(MCP)──→ QuidClaw ──→ Beancount
↓
~/.quidclaw/*.bean
- You talk naturally to your AI assistant
- AI understands your intent and decides which tools to call
- QuidClaw provides 10 MCP tools that read/write Beancount ledger files
- Data is stored locally as plain text — you own it completely
QuidClaw doesn't run any AI model. It's a bridge between your AI client and the Beancount accounting engine.
Features
- Record transactions via natural language
- Multi-currency support (USD, EUR, CNY, etc.)
- Balance queries and reconciliation
- Financial reports (income statement, balance sheet)
- Flexible BQL (Beancount Query Language) queries
- Price tracking for stocks, crypto, and forex
- Interactive account setup for new users
Prerequisites
| Requirement | Description |
|---|---|
| Python 3.10+ | Check with python3 --version. |
| An MCP client | Any app that supports the Model Context Protocol. See setup options below. |
Quick Install
The fastest way to install QuidClaw into all your MCP clients at once:
npx add-mcp --uvx quidclaw -a claude-code -a claude-desktop -a cursor -a codex
This installs QuidClaw via add-mcp and configures it for all specified clients in one command. Remove any
-a <client>you don't use, or add others like-a zed,-a vscode,-a windsurf.
That's it. Restart your client and start chatting.
Manual Setup
If you prefer to configure a specific client manually, or if add-mcp doesn't support your client yet:
Claude Desktop
Add to your claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"quidclaw": {
"command": "uvx",
"args": ["quidclaw"]
}
}
}
Claude Code
claude mcp add quidclaw -- uvx quidclaw
Cursor / Windsurf
Add to your MCP config (Settings → MCP Servers):
{
"mcpServers": {
"quidclaw": {
"command": "uvx",
"args": ["quidclaw"]
}
}
}
Codex
Add to ~/.codex/config.toml (or run codex mcp add):
[mcp_servers.quidclaw]
command = "uvx"
args = ["quidclaw"]
type = "stdio"
VS Code (Copilot)
Add to your .vscode/mcp.json:
{
"servers": {
"quidclaw": {
"command": "uvx",
"args": ["quidclaw"]
}
}
}
Other MCP clients
QuidClaw is a standard MCP server using stdio transport. Configure your client to run:
uvx quidclaw
Install from Source (for development)
git clone https://github.com/thorb/quidclaw.git
cd quidclaw
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Usage
Once connected, just talk to your AI naturally:
You: Help me set up my ledger
AI: (calls init_ledger) Created 20 default accounts. What bank accounts do you have?
You: Chase checking and Amex credit card
AI: (calls add_account twice) Done. Want to set initial balances?
You: Chase has $5,200
AI: (calls add_transaction) Recorded opening balance.
You: Lunch was $12, paid with Apple Pay
AI: (calls add_transaction) Recorded: Expenses:Food $12.00 from Assets:ApplePay
Data Storage
All data is stored locally as plain text Beancount .bean files:
~/.quidclaw/
├── main.bean # includes all other files
├── accounts.bean # account definitions
├── prices.bean # price directives
└── 2026/
├── 2026-01.bean # January transactions
├── 2026-02.bean # February transactions
└── ...
Default directory: ~/.quidclaw/. To customize:
export QUIDCLAW_DATA_DIR="/path/to/your/ledger"
MCP Tools
QuidClaw exposes 10 tools to AI clients:
| Tool | Description |
|---|---|
init_ledger |
Initialize ledger with default or custom accounts |
add_account |
Open a new account |
close_account |
Close an account |
list_accounts |
List accounts, optionally filtered by type |
add_transaction |
Record a transaction |
get_balance |
Query account balances |
balance_check |
Verify balance for reconciliation |
query |
Execute arbitrary BQL queries |
report |
Generate income statement or balance sheet |
fetch_prices |
Fetch commodity prices |
See MCP Tools Reference for full parameter details.
Development
See Install from Source above, then:
pytest
See Architecture for design details.
License
This project is licensed under the GNU General Public License v2.0, the same license used by Beancount.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quidclaw-0.1.0.tar.gz.
File metadata
- Download URL: quidclaw-0.1.0.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f60f0c4c6c333e659319097c989f54816b93457638ef4030d869f1ed7ffc7867
|
|
| MD5 |
2eca331ef9e0499e7d92af1ef23cf350
|
|
| BLAKE2b-256 |
2463c54711a0a9db9b4b4201daeb536f0e53c40c4a7f5f36feb656e05ca930fd
|
File details
Details for the file quidclaw-0.1.0-py3-none-any.whl.
File metadata
- Download URL: quidclaw-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74c64077966ce551c1c4fca992a37dd6b358c54380b76fb4a85ddcb742799c7b
|
|
| MD5 |
32c52b024d15b2f2d50af2a19fe02450
|
|
| BLAKE2b-256 |
f3a2158fd87964f76a75dc5ef5a972ed3762572a890324c19bc2628750ec4ad6
|