MCP.Market

GnuCash MCP server

by tillawy·io.github.tillawy/gnucash-mcp·v0.1.1

Read a GnuCash book and import bank statements into it.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

0 stars653 downloads/wk

Reviews

Write one

Nobody has reviewed GnuCash yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

GnuCash tools (10, 3 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • add_transaction

    Add a balanced two-split transaction unless it already exists.

  • copy_transaction

    Add a copy of an existing transaction, keeping all its splits.

  • create_accountwrite action

    Create an account, e.g. 'Expenses:Dining' of type 'EXPENSE'.

  • delete_transactionwrite action

    Permanently delete a transaction and its splits.

  • find_transactions

    Find transactions across all accounts by a word, newest first.

  • get_account

    Get one account by full name (e.g. 'Assets:Current Assets:Savings Account').

  • import_transactions

    Import many statement rows at once; duplicates are reported, not added.

  • list_accounts

    List every account in the GnuCash book with its type and balance.

  • list_transactions

    List transactions of an account, newest first, within optional date bounds.

  • update_transactionwrite action

    Change an existing transaction; fields left out stay as they are.

Public scan report

scanner v0.1.10 · 2026-10-13 · same rubric, same numbers if you re-run it

no findings
  • Code scan6 source files scanned25/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 qualitylocal package, no credentials required12/15
  • Maintenancelast push 3 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How GnuCash compares

Against every graded Finance MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 1,761 Finance servers
Tools
10
the typical Finance server has 8
Tools that change things
30%
typical: 0%. Fewer write tools means less an agent can break
Downloads a week
653
more than 94% of 421 Finance servers with a package

What its tools let an agent do: 5 read · 3 create · 1 change · 1 delete

Install GnuCash in Claude Code, Cursor or VS Code

claude mcp add gnucash-mcp -- uvx gnucash-mcp
Add to Cursor

What the publisher says

From the GnuCash repository's README, as published. We do not edit it. Read it on GitHub

gnucash-mcp

<!-- mcp-name: io.github.tillawy/gnucash-mcp -->

An MCP server that lets Claude read your GnuCash book and import bank statements into it. Upload a statement CSV from any bank, and Claude works out its layout, proposes a category for each row, and shows a preview. It flags duplicates before writing anything.

It has two parts:

idempotent writes.

  • gnucash_storage: a piecash wrapper, configured per book, with read helpers and
  • gnucash_mcp: the MCP server that exposes the tools and prompts over stdio.

Requirements: a SQLite book

GnuCash saves books as XML by default, usually gzip-compressed. piecash, which this project is built on, can't read XML. It only reads GnuCash's SQL formats, and this server opens SQLite files. To convert your book:

  1. Open it in GnuCash.
  2. Choose File > Save As.
  3. Set Data Format to sqlite3, pick a file name, and save.
  4. Point book_path in your book TOML at the new file.

Keep using the SQLite file in GnuCash from then on. The XML file won't see the imported transactions. If book_path points at an XML book, every tool fails with a message explaining this conversion.

You also need uv and Python 3.13 or newer. uv installs Python for you if needed.

Configure a book

Create a TOML file for your book, for example ~/gnucash/personal.toml:

book_path = "personal.gnucash"   # relative to this TOML file, or an absolute path
bank_account = "Assets:Current Assets:Checking Account"  # default bank side for imports
open_if_lock = false             # open for writing even while GnuCash has the file open
do_backup = true                 # piecash writes a timestamped backup before writing

# Optional: "posting" (booking date) or "transaction" (when the purchase happened).
date_source = "posting"

# Optional hints about your bank's statement format, added to the import prompts.
statement_notes = '''
Details holds the merchant and a card reference "REF <12 digits>" (use it as
external_id). The card date inside Details is YY/MM/DD.
'''

Only book_path is required.

statement_notes is the place for your bank's quirks: where a reference ID hides, which of two date columns to use, or what an odd column means. Claude reads the notes during the column-mapping step, but still shows you the mapping to confirm. That way the server stays bank-agnostic, and each user's bank knowledge lives in their own config.

datesource picks which date becomes the transaction date when a statement has two: the bank's posting (booking) date, or the transaction date when you actually paid. Card purchases often post a day or two later, and the card date is often only inside the description. If datesource is unset, Claude asks during import whenever a statement has both. Setting it is recommended. For rows without a reference ID, the date is part of duplicate detection, so switching between the two dates across imports could let the same row in twice.

Install

The server runs with uvx, so there's nothing to install globally. Point GNUCASHMCPCONFIG at your book TOML, using an absolute path.

Claude Code:

claude mcp add gnucash -e GNUCASH_MCP_CONFIG=/absolute/path/to/personal.toml -- uvx gnucash-mcp

Claude Desktop: add this to claudedesktopconfig.json (on macOS it's in ~/Library/Application Support/Claude/) and restart Claude Desktop:

{
  "mcpServers": {
    "gnucash": {
      "command": "uvx",
      "args": ["gnucash-mcp"],
      "env": {"GNUCASH_MCP_CONFIG": "/absolute/path/to/personal.toml"}
    }
  }
}

If Claude Desktop can't find uvx, replace "uvx" with its full path (which uvx).

Tools and prompts

Tools:

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

GnuCash: common questions

Is GnuCash MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the GnuCash safety report
How do I install GnuCash?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does GnuCash need an API key?
No secret keys are declared. It reads 1 setting from the environment.
Is GnuCash maintained?
The last commit was 24 days ago (2026-10-11). The latest release is v0.1.1.
What can I use instead of GnuCash?
Servers from other publishers that do the same job: Beancount.io MCP server, E Arveldaja MCP server and Inter Bank MCP server. Compare all GnuCash alternatives.
How does GnuCash compare with other Finance MCP servers?
safety score 92/100 (higher than 95% of 1,761 Finance servers); tools 10 (the typical Finance server has 8); tools that change things 30% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to GnuCash

Same job from other publishers: the closest match first, then the best rated.

All GnuCash alternatives →
  • Beancount.io
    Query, edit, and reconcile a hosted Beancount ledger: BQL, reports, files, and bank imports.
    A
  • E Arveldaja
    Estonian e-arveldaja (RIK e-Financials) accounting — invoices, bank import, reports.
    B
  • Inter Bank
    Banco Inter — digital bank, boleto, PIX, statements, transfers
    B
  • Finance Toolkit
    200+ transparent financial metrics calculated from raw statements, not third-party endpoints.
    A
  • BankMCP™
    Read-only MCP server for your own bank accounts via Enable Banking. Self-hosted, one user.
    A