Cursor + LedgerMCP

Do your bookkeeping in Cursor

Cursor is a capable agent; it just needs a ledger it can operate. LedgerMCP is real double-entry accounting software that connects to Cursor over MCP with one API key. Free to start, every action logged and reversible.

Cursor, connected

Import ./statements/june.csv and categorize everything.
Imported 84 transactions and categorized 81. Three are flagged for review. Two internal transfers matched so nothing double-counts. Want me to reconcile against the statement balance?

Connect Cursor in four steps

Cursor connects with an API key in an MCP config block, the same shape as Claude Code and Claude Desktop.

  1. 1

    Create an API key

    In LedgerMCP, go to Settings, then Agent access, and mint a key. New accounts are created free during sign-in; the key is shown once.

  2. 2

    Add the MCP server to Cursor

    Open Cursor Settings, then MCP, then “Add new MCP server”, and paste the JSON on this page with your key in the Authorization header.

  3. 3

    Confirm the tools loaded

    Cursor lists the LedgerMCP tools once connected. Ask it to “list my businesses” to confirm the key works end to end.

Step 4: keep the books from the editor. Drop a statement CSV into the workspace and ask Cursor to import and categorize it. Everything posts as balanced journal entries you can review in the app. From there Cursor works like staff: you ask in plain language, it calls the tools, and the web app is your review surface.

Prefer read-only? Mint a read-only key in Settings → Agent access and use it in the same config. Cursor can run reports and answer questions but cannot write a line to the books.

Connect your agent
{
  "mcpServers": {
    "ledgermcp": {
      "type": "http",
      "url": "https://ledgermcp.com/mcp",
      "headers": { "Authorization": "Bearer lmcp_YOUR_KEY" }
    }
  }
}

Things to ask your editor

Cursor reads statements from your workspace, asks when a category is ambiguous, and posts everything as balanced journal entries. You review its work in the web app; the audit log shows every action it took, attributed to its key, with a one-click reverse next to each.

Under each request, Cursor is calling real MCP tools, the same 63-tool surface documented at /docs. The calls below are what “categorize that” actually does.

  • List my businesses and set up books for the consulting one.
  • Import ./statements/june.csv and categorize everything.
  • What did I spend on software last quarter?
  • Reconcile checking against a statement balance of $8,214.55.
  • Split that Costco charge: $180 supplies, $95 meals.
  • Tag everything from Acme LLC as a vendor and show the 1099 total.
  • Run verify_books and tell me if anything is off.
  • Close out the month and give me a P&L.
Tool callcategorize_transaction
{
  "business_id": "b_9f2…",
  "transaction_id": "tx_58c1…",
  "category_account_id": "acct_software",
  "idempotency_key": "close-jun-tx58c1"
}
Posted a balanced entry: Software expense ↔ Business checking. Reversible from the audit log.
Tool callverify_books
{
  "business_id": "b_9f2…"
}
All invariants hold: every entry balances, trial balance ties, accounting equation intact.

Four ways developers use it

Books next to your code

You already live in Cursor. Keep a client’s or your own books in the same window: drop a CSV into the workspace, ask Cursor to import and categorize, and review the postings without leaving the editor.“Import ./statements/june.csv, categorize everything, and flag anything ambiguous.”

Scripted month-end

Because the tools are deterministic and idempotent, a month-end close reads like a runbook: import, categorize, match transfers, reconcile to the bank balance, book depreciation, lock. Re-running is safe.“Close out June: import the statement, reconcile checking to $12,410.22, and lock the month.”

Catch-up in a batch

Behind on books? Feed Cursor a folder of statements. Bulk import dedupes rows and bulk categorize posts each row independently, so one odd transaction never blocks the rest; you review only what it flags.“Work through ./statements month by month and flag anything you are unsure about.”

Read-only analysis

Point a read-only key at your books and let Cursor answer questions without any risk of a write: burn rate, top vendors, category trends, a quick P&L, all from the live postings.“With read-only access, what’s my average monthly profit over the last six months?”

Why an editor agent can be trusted with money

Giving an agent a spreadsheet means trusting it not to make mistakes. Giving it LedgerMCP means it cannot make the expensive ones. Entries must balance to the cent or the database refuses them. Nothing is edited or deleted; corrections post as linked reversals. Replayed requests return the original entry instead of double-posting.

The ledger enforces the rules so you do not have to check Cursor’s arithmetic. You check its judgment, in a review queue, which is a much shorter job. The full guarantees are on the security page.

Always balanced

Debits equal credits at commit, enforced in Postgres, not hoped for in app code.

Nothing edits history

Postings are immutable for everyone, including us. Corrections are linked reversals.

Retries are harmless

Idempotency keys mean a replayed request returns the original entry, never a duplicate.

Everything reversible

Every write sits in the audit log with a one-click reverse.

Common questions

Can Cursor do bookkeeping?

Yes, once it has a ledger to operate. Connected to LedgerMCP over MCP, Cursor gets 63 accounting tools: it imports statements, posts balanced journal entries, splits transactions, matches transfers, reconciles accounts, and runs reports. The database enforces the accounting rules, so Cursor cannot corrupt the books.

How do I connect Cursor to LedgerMCP?

Mint an API key in Settings → Agent access, then in Cursor open Settings → MCP → “Add new MCP server” and paste the JSON on this page with your key in the Authorization header. Cursor lists the LedgerMCP tools once it connects.

Is this different from connecting Claude?

Only the connection step. claude.ai connects by URL over OAuth; Cursor, Claude Code, and Claude Desktop connect with an API key in an MCP config block. After that the tool surface and the ledger are identical: same 63 tools, same books.

Can I give Cursor read-only access?

Yes. Mint a read-only key for an agent that should analyze but never write a line to the books. It is the safe default when you are exploring: Cursor can run reports and answer questions, but cannot post, edit, or reverse anything.

Can Cursor break my books?

No. The database rejects unbalanced entries, postings are immutable, and every correction is a linked reversal. Each write lands in an audit log where you can reverse it in one click, and idempotency keys mean a retried request never double-posts.

Do I need to keep Cursor open for the books to work?

No. Cursor is just one client. Your books live on LedgerMCP: use the web app directly, connect Claude or ChatGPT as well, or switch clients entirely. The ledger does not depend on any one agent.

What does it cost?

Free. Unlimited books, CSV import, reports, and the full tool surface cost nothing. Live bank feeds are the one paid upgrade, from $9 per month pooled across all your books.

Keep the books from Cursor

Free for CSV and manual books. Connected with one key, and everything it does is reversible.