Bookie MCP server
io.github.yuens1002/bookie·v0.8.5Double-entry bookkeeping MCP server — import bank CSVs, categorize, reconcile, tax reports.
0 stars
Reviews
Write oneNobody has reviewed Bookie yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Bookie tools (16, 7 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
account_balancesCompute the current balance of every account (sum of its postings). Optionally filter by segment or as of a date.
add_transactionRecord a single transaction as a balanced double-entry. Money flows FROM one account TO another: for spending, from your bank/card to an expense account; for income, from an income account to your bank. Amounts are positive, in dollars.
categorize_transactionChange the category account on an existing journal entry — useful for fixing an imported entry posted to the wrong account, or for categorizing an entry that was added without one. Works on entries with exactly one income/expense leg; for split entries (multiple category legs), delete and re-enter with split_transaction. Supply either targetAccountId (explicit) or ruleId (apply a stored categorize
delete_transactionwrite actionPermanently delete a journal entry and its postings (used to correct mistakes or remove duplicate imports). Returns what was deleted. This cannot be undone.
export_reportwrite actionRun a report and render it as markdown or CSV. Accepts the same parameters as generate_report plus a format. Markdown is human-readable; CSV is suitable for spreadsheet import. The report data is fetched fresh — no need to call generate_report first.
generate_reportGenerate a financial report. type='monthly-reconciliation': opening/closing balance for an optional bank/card account, income/expense totals by segment, uncategorized entries, and uncleared postings — requires year + month. type='schedule-c': fiscal-year P&L for sole-proprietor segments (taxSchedule=C) grouped by Schedule C tax line — requires year only. type='schedule-e': fiscal-year rental P&L f
import_transactionsImport a bank/card statement (CSV) for one account, as balanced double-entry transactions. Two-step: run with mode='preview' (default) to parse, deduplicate, and flag possible matches — this writes nothing — then review the plan, decide a category account per row, and call again with mode='commit' and `mappings`. The amount sign is handled per profile; posting direction follows the statement (a ch
manage_accountswrite actionCreate, list, or archive ledger accounts. Income/expense accounts double as spending categories and belong to a segment (which sets the tax form); attach a taxLine for the specific Schedule line. Bank/card (asset/liability) accounts are usually segment-neutral (omit segmentId).
manage_propertieswrite actionCreate, list, or archive rental properties. Schedule E is filed per property, so rental transactions are tagged with a propertyId (and optional unit) in add_transaction. Non-rental work doesn't need properties.
manage_receiptsmanage_ruleswrite actionCreate, list, delete, test, or get suggestions for auto-categorization rules. A rule matches a case-insensitive substring of a transaction's description and either routes it to a category account (action=categorize, optionally tagging a rental property) or marks it to skip on import (action=exclude — e.g. transfers between your own accounts). Higher priority wins; ties break on longer pattern. The
manage_segmentswrite actionCreate, list, or archive segments — lines of business (or 'Personal'). Each segment is its own P&L and tax filing (Schedule C, Schedule E, or none for personal), but all share one ledger so they combine at year-end. Income/expense accounts belong to a segment; bank/card accounts stay segment-neutral.
query_transactionsList journal entries with their postings, filtered by date range and/or account. Returns newest first.
reconcileMatch a bank/card statement (CSV) against the ledger to mark postings as cleared. Two-step: run with mode='preview' (default) to see matched postings, statement lines missing from the ledger, and uncleared ledger postings absent from the statement — writes nothing. Call again with mode='commit' to persist the matches (mark cleared=true). Uses the same CSV profiles as import_transactions. Idempoten
send_reportwrite actionRun a report and email it via Resend. Same parameters as generate_report plus a recipient address. The report is rendered as markdown and sent as the email body. Requires RESEND_API_KEY and RESEND_FROM env vars.
split_transactionRecord one purchase (or deposit) that splits across multiple categories — e.g. a receipt with both business and personal items. Creates a single balanced journal entry: one leg on the payment account (the bank/card — this is what a statement shows and what reconciliation matches) plus one leg per category. Use this instead of add_transaction when a single statement line maps to several categories.
Public scan report
scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it
- Code scan33 source files scanned15/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 8 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (2)
- mediumnpm install lifecycle script present
install.script - mediumnpm install lifecycle script present
install.scriptpackage.json: …t run", "test:watch": "vitest", "postinstall": "prisma generate" }, "dependencies"…
How Bookie compares
Against every graded Finance MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 68/100
- higher than 35% of 1,761 Finance servers
- Tools
- 16
- the typical Finance server has 8
- Tools that change things
- 44%
- typical: 0%. Fewer write tools means less an agent can break
What its tools let an agent do: 6 read · 3 create · 5 change · 1 delete · 1 send or post
Install Bookie in Claude Code, Cursor or VS Code
Runs npx -y bookie-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add bookie -- npx -y bookie-mcp
What the publisher says
From the Bookie repository's README, as published. We do not edit it. Read it on GitHub
bookie
An MCP server that keeps books for freelancers and landlords — driven from Claude or GPT instead of QuickBooks.
Ask your LLM to import a bank statement, categorize spending, reconcile a month, or generate a Schedule C. Bookie provides the correct double-entry ledger underneath — so the model reasons over real numbers, not a spreadsheet it's improvising on the fly.
This is for you if: you're a solopreneur, freelancer, or rental property owner already living in Claude or GPT, you're comfortable with a 5-minute setup, and you want books that are actually correct.
Not for you if: you want a dashboard UI, you need multi-user access, or you're satisfied with QuickBooks / a spreadsheet.
What you need before starting
- Node ≥ 24
- neonctl — npm install -g neonctl (free Neon account; needed for the DB)
- An MCP-capable host: Claude Desktop, Claude.ai, Cursor, VS Code, or any host supporting the MCP stdio or HTTP transport
Quick start (local, stdio)
Recommended — from source, fully automated:
git clone https://github.com/yuens1002/bookie
cd bookie
npm install
npm run setup # creates Neon DB, generates secrets, writes .env, runs db:push
npm run buildnpm run setup opens a browser to log into Neon; new to Neon? Use the "Sign up for an account" link and pick GitHub/Google/Microsoft rather than email+password — it completes in the same browser round-trip, no email-verification detour that could interrupt the CLI mid-wait.
npm run setup prints a ready-to-paste Claude Desktop config block at the end:
{
"mcpServers": {
"bookie": {
"command": "node",
"args": ["/absolute/path/to/bookie/dist/index.js"],
"env": {
"BOOKIE_DB_URL": "<printed by setup>",
"BOOKIE_DB_DIRECT_URL": "<printed by setup>",
"BOOKIE_API_KEY": "<printed by setup>"
}
}
}
}Adding another machine to the same ledger — no clone needed: stdio is a local process — every machine running a stdio MCP client spawns its own copy of the server, so each one otherwise needs its own checkout. Once the Neon DB is provisioned (via npm run setup above, on any one machine), every other machine just needs the same connection strings — no git clone, no npm install, no npm run build to keep in sync. Point that machine's MCP host at the published package instead:
{
"mcpServers": {
"bookie": {
"command": "npx",
"args": ["-y", "bookie-mcp"],
"env": {
"BOOKIE_DB_URL": "<same value as your first machine>",
"BOOKIE_DB_DIRECT_URL": "<same value as your first machine>",
"BOOKIE_API_KEY": "<same value as your first machine>"
}
}
}
}npx fetches and runs the published version on demand — every machine pointed at the same BOOKIEDBURL shares one ledger, without any of them (besides the original) needing a checkout.
Bootstrapping a DB without cloning at all: if you don't have connection strings yet from any machine (e.g. you created the Neon project manually instead of via npm run setup), push bookie's bundled schema directly:
mkdir bookie-mcp && cd bookie-mcp
npm install bookie-mcp
BOOKIE_DB_URL=<pooled> BOOKIE_DB_DIRECT_URL=<direct> npx prisma db push --schema=node_modules/bookie-mcp/prisma/schema.prismaThen use the same npx -y bookie-mcp config above.
Quick start (remote, HTTP — for Claude.ai mobile)
Deploy to Railway with one click:
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Bookie: common questions
- Is Bookie MCP server safe?
- With care: it is graded C, so read the findings first (68/100). Read the Bookie safety report
- How do I install Bookie?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Bookie need an API key?
- Yes. The registry entry asks for
BOOKIE_DB_URL,BOOKIE_DB_DIRECT_URL,BOOKIE_API_KEY. - Is Bookie maintained?
- The last commit was 47 days ago (2026-09-18). The latest release is v0.8.5.
- What can I use instead of Bookie?
- Servers from other publishers that do the same job: Beancount.io MCP server, E Arveldaja MCP server and Norman Finance — AI Bookkeeping, Accounting & Taxes MCP server.
- How does Bookie compare with other Finance MCP servers?
- safety score 68/100 (higher than 35% of 1,761 Finance servers); tools 16 (the typical Finance server has 8); tools that change things 44% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Bookie
Same job from other publishers: the closest match first, then the best rated.
Beancount.ioQuery, edit, and reconcile a hosted Beancount ledger: BQL, reports, files, and bank imports.not reviewedEstablishedA- E ArveldajaEstonian e-arveldaja (RIK e-Financials) accounting — invoices, bank import, reports.not reviewedEstablishedB
Norman Finance — AI Bookkeeping, Accounting & TaxesBookkeeping, invoices and tax workflows for European businesses, including Polish KPiR and JPK.not reviewedGrowingA
Central Bank Rates (AllRatesToday)Official central-bank & tax-authority rates from 100+ sources. No API key needed to start.not reviewedGrowingB
BankMCP™Read-only MCP server for your own bank accounts via Enable Banking. Self-hosted, one user.not reviewedEstablishedA