关于 gnucash-mcp
gnucash-mcp 是一个面向 GnuCash 账本的 MCP 服务,让 AI 助手直接读取和写入本地的 .gnucash 文件。它适合个人理财用户和小型企业主,服务运行在本机,账本数据和审计日志不会离开用户的机器。
主要功能
- 01本地读取和写入 GnuCash 账本
- 02一次调用返回账本概览与财务仪表盘
- 03提供按模块划分的工具集合
- 04支持 SQLite 文件与 PostgreSQL、MySQL 数据库
- 05内置三套虚构的示例账本
适用场景
- 01用自然语言记录和查询交易
- 02查看余额、预算进度与应收账款
- 03在对话中完成账目对账
- 04通过 AI 助手管理客户发票与供应商账单
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
gnucash-mcp
与大模型协同工作的免费开源会计软件。
通过 Claude(或任何支持 MCP 的 AI 助手)与您的 GnuCash 账簿对话。询问“我这个月的财务状况怎么样”,直接口述交易记录,让 AI 接手账簿维护,您则专注于经营生活或业务。
服务在您的设备上运行,并操作本地 GnuCash 文件;文件及其审计日志绝不会离开本地。您的 AI 助手可以看到工具调用返回的内容(余额、收款人、发票),就像您在屏幕上看到的一样。
从 1.4 升级? 首次使用 1.5 写入数据前,请阅读升级指南。
一键安装: 在 Claude Desktop 上,下载最新版本中的 .mcpb 安装包,双击即可运行——无需终端,也无需配置文件。其他所有 MCP 客户端——ChatGPT/Codex、Gemini、Antigravity 等——都只需几行设置即可连接。无论使用哪种方式,您已经付费的 AI 订阅都能变成一位永远不会寄账单的记账员。
三本逼真的示例账簿可让您在提交任何数据前先行试用:包含全年活动记录、多种货币、客户、发票和预算。Claude Desktop 安装包中已包含这些账簿;从克隆的仓库开始,只需一条命令即可生成。花五分钟体验其中一本;如果觉得合适,将服务指向您自己的账簿即可。
看起来是什么样?
当您的 AI 助手打开一本示例账簿时,它看到的就是这样——一次调用即可获得完整的财务概览:
Book: alex-chen-morales.gnucash
Currency: USD
Data range: 2025-01-01 to 2026-10-08
Last entry: 2026-10-08 (today)
Chart of accounts: 111 total (109 active) — drill into any branch with list_accounts(root="Assets:Investments"):
Assets (25 total): Investments (9), Current Assets (5), Fixed Assets (3), Receivables (3), Retirement (3)
Liabilities (8 total): Credit Card (3), Loans (3)
Equity (3 total)
Income (11 total): Investment Income (6)
Expenses (64 total): Business (14), Taxes (10), Utilities (6), Auto (4), Housing (4), Interest (4), Insurance (3), Pet (3)
Assets: USD 874270.54
Condo: USD 475000.00
VTSAX: 453.4039 VTSAX @ 185.53 (USD 84120.03)
UWRP 403(b): USD 74778.40
Savings Account: USD 60000.00
Cascade Code LLC Checking: USD 41390.64
...
Liabilities: USD 389695.79
Credit cards (2): USD 1319.99
Loans & other (2): USD 385873.30
Top 3: Mortgage USD 373846.80, Auto Loan USD 12026.50, Chase Sapphire USD 876.31
Receivables: 2 accounts, USD 27324.47 (4 invoices, 0 overdue; included in Assets total)
Accounts Receivable: USD 22425.00
Accounts Receivable EUR: USD 4899.47
Payables: 1 account, USD 2502.50 (1 bill, 0 overdue; included in Liabilities total)
Accounts Payable: USD 2502.50
Jobs: 3 active
Frequently used accounts (last 180 days — any account parameter accepts the %guid or the full name; a %guid is fewer tokens and faster to write):
%528b7d9 Assets:Current Assets:Checking Account [BANK]
%8799a0a Liabilities:Credit Card:Chase Sapphire [CREDIT]
%839fcf8 Expenses:Dining
...
Reconciliation:
6 accounts current
Net worth trajectory:
12mo ago: USD 345,969
6mo ago: USD 381,961
3mo ago: USD 429,392
1mo ago: USD 443,546
now: USD 484,575
Monthly net (income - expenses, last 6 months):
Oct 2026 (MTD): +11,955 (vs Sep 1-8: -2,365)
Sep 2026: +25,894
Aug 2026: +7,588
Jul 2026: +10,307
Jun 2026: +24,092
May 2026: +9,017
Runway: 579 days (USD 246,844 liquid / USD 426/day cash out incl. debt paydown, 180-day avg; cards owe USD 1,320)
Budget (2026 Annual Budget): USD 27,736 spent / USD 28,683 expected by today (-3%)
Transactions: 2227
Scheduled: 20 recurring, 16 due in next 7 days (USD 15,128 out)
Business: 8 customers, 3 vendors
Budgets: 2
Commodities: AAPL, CAD, ETH, EUR, MSFT, USD, VBTLX, VTSAX
这不是截图——而是 AI 实际看到的概览。净资产变化趋势、资金可维持时间、预算进度、谁欠您钱、哪些款项逾期、哪些账目尚未对账。一条调用,就能让您的助手在您打完招呼之前掌握全貌。
适合哪些人?
- 个人理财用户:使用 GnuCash 记账,希望口述交易、询问助手钱都花到哪里去了、获得对账帮助并规划预算。
- 小型企业主:使用 GnuCash 记账,希望开具发票、跟踪应收款、查看供应商支出、管理现金流,同时无需离开对话。
- 在意数据保留在本地的人:没有云同步,没有 SaaS。您的
.gnucash文件是记录系统;本项目只是让 AI 能够像 GnuCash 本身那样读取和写入数据。
您无需是开发者,只需要:
- 一台电脑(Mac、Windows 或 Linux)
- GnuCash,或愿意安装它(可从 gnucash.org 免费获取)
- 一个支持 MCP 的 AI 助手(最常见的是 Claude Desktop;Claude Code、Continue.dev 等也可使用)
- 花 10 分钟运行示例账簿,再花 10 分钟将服务指向您自己的账簿
无风险试用
此仓库提供三种示例人物设定——合成账簿,您可以与之对话,而无需触碰自己的真实数据。安装包中已包含完整构建的账簿;从克隆的仓库开始,只需一条命令即可生成。选一本账簿,将服务指向它,然后开始提问。
samples/alex-chen-morales.gnucash — 个人财务 + 自由职业
这是一位居住在西雅图的独立软件承包商,拥有一家单一成员有限责任公司,配偶则在医院受雇。默认货币为 USD。账簿包含 111 个账户,以及从 2025 年至生成日期的 2,000 多笔交易。涵盖房贷、持有 VTSAX/VBTLX/AAPL/MSFT/ETH 的证券账户、与配偶的 403(b) 并列的个人 Solo 401(k)、以 USD、EUR 和 CAD 开具发票的 8 位客户、通过应付账款(A/P)结算的分包商、华盛顿州 B&O 税、定期账单、预算——基本囊括了此服务能做的一切。
samples/lin-wei.gnucash — 深圳软件工作室
一位深圳开发者经营着一家已注册的个人独资工作室,开发跨境电商软件;其配偶在医院领工资。默认使用 CNY,采用原生 zh_CN 科目表。101 个科目和约 3,000 笔交易。深圳科技客户(Tencent、DJI、SF Tech 等)以 CNY 付款;USD/EUR 客户以外币付款,并因汇率变动产生已实现汇兑损益;投资于中国境内的资产(宁德时代和两只 ETF);有一名兼职员工、一张 HKD 信用卡、一笔房贷,以及混合支付渠道(公司账户 + Alipay + WeChat Pay)。
samples/sabine-brenner.gnucash — 德国自由职业者,SKR03 科目表
一位常驻慕尼黑的自由职业设计师。默认使用 EUR,采用德国 SKR03 会计科目表——每个科目名称均为德语。125 个科目和约 1,900 笔交易,包含实时增值税申报和按 1% 规则计税的公司用车。如果某项功能假定科目名称为英文或货币为 USD,那么 Sabine 的账簿就能暴露问题。
三本账簿均为虚构。各账簿内容的完整说明请参见 samples/README.md。
快速开始
一键安装(Claude Desktop)
从最新版本下载 .mcpb bundle,然后双击。Claude Desktop 会安装 MCP 服务——无需终端、配置文件或 Python。安装程序会询问三项内容:
- 你的 GnuCash 账簿——通过文件选择器选择。账簿必须采用 SQLite 格式;如果你的账簿仍是较旧的 XML 格式,请先完成一次性转换。选择多本账簿,即可在聊天中切换使用。
- 演示账簿——勾选一个复选框即可启用上述三本样例账簿,让你先用虚构数据进行探索,再决定是否连接自己的账簿。
- “你会向客户开具发票吗?”——选择“是”会启用业务套件(客户发票、供应商账单、员工费用)。其他功能——预算、计划交易、投资跟踪——始终启用。
安装就这么简单。
试试看
向 Claude 提问:
- “总结一下账簿。”
- “我的净资产最近有什么变化?”
- “列出欠我钱的人。”
- “上个月我在餐饮上花了多少钱?”
- “设置每月 500 美元的杂货预算。”
首次回复通常会从上文提到的仪表板开始。之后的一切都可以通过对话完成。
准备好使用自己的账簿时,请参阅下文的连接自己的账簿。
其他 AI 客户端,或从源代码安装
ChatGPT 和 Codex、Claude Code、Gemini CLI、Google Antigravity,以及其他任何 MCP 客户端,都可通过克隆 Git 仓库并安装来连接。数据库账簿用户和参与 MCP 服务开发的人员也请参阅 docs/CLIENTS.md。
连接自己的账簿
一次性转换:GnuCash 文件格式
MCP 服务只读取 GnuCash 文件的 SQLite 格式,不读取较旧的 XML 格式。转换步骤如下:
- 在 GnuCash 中打开账簿
- 选择 File → Save As
- 将“Data Format”改为 SQLite3
- 使用新文件名保存(例如
mybook-sqlite.gnucash) - 保留 XML 原文件作为备份。
在 Linux(Debian/Ubuntu)上,“Data Format”下拉菜单中可能完全没有 SQLite3 选项——GnuCash 需要一个默认未安装的后端驱动程序。退出 GnuCash,安装该驱动程序,然后重新打开 GnuCash,选项便会出现:
sudo apt update && sudo apt install libdbd-sqlite3
此操作只需执行一次。之后,GnuCash 和 MCP 服务都会使用同一个 SQLite 文件。
GnuCash 3.8 或更新版本。 MCP 服务向账簿写入内容后,账簿会带有一个功能标记(“Use natural signs in budget amounts”),该标记由 GnuCash 3.8 引入;GnuCash 3.0–3.7 遇到不认识的功能标记时会拒绝打开账簿。GnuCash 3.8 及更高版本打开含有预算的账簿时,也会以相同方式添加此标记,因此只有仍在使用较旧 3.x 版本时才需要注意这一点。MCP 服务已通过 GnuCash 5.12 测试。
指定服务使用的账簿
使用安装包时,在 Claude Desktop 中的 GnuCash 扩展设置里选择账簿,然后重启 Claude Desktop。使用克隆安装时,将 GNUCASH_BOOK_PATH 设置为账簿的绝对路径;请参阅使用自己的账簿。
或者:将账簿保存在 PostgreSQL 或 MySQL 中
GnuCash 也可以将账簿保存在数据库中,而不是文件中,服务也支持这类账簿。将连接字符串传给它,而不是文件路径:
{
"command": "/Users/yourname/.local/bin/gnucash-mcp",
"args": ["--modules=all"],
"env": {
"GNUCASH_BOOK_URI": "postgresql://user:password@localhost:5432/gnucash",
"GNUCASH_LOG_DIR": "/Users/yourname/gnucash-mcp-logs"
}
}
在服务所在位置安装驱动——postgres 或 mysql(MariaDB 使用相同的驱动)。在克隆目录中(即 gnucash-mcp 文件夹;请参阅从源代码安装):
uv tool install -e ".[postgres]" --reinstall
对于 MySQL / MariaDB,连接字符串为
mysql+pymysql://user:password@localhost:3306/gnucash,额外依赖为
[mysql]:uv tool install -e ".[mysql]" --reinstall。GnuCash 自己写入的较短形式 mysql:// 和 postgres:// 也可以使用;服务会使用额外依赖安装的驱动。
按上述方法从克隆目录安装,不要按名称安装:PyPI 上名为 gnucash-mcp 的项目属于另一个项目。
迁移现有账簿:在 GnuCash 中打开账簿,选择
文件 → 另存为,选择 postgres 或 mysql,然后填写连接详细信息。(在 Debian/Ubuntu 上,这些选项需要安装 sudo apt install libdbd-pgsql 或 libdbd-mysql,与 SQLite3 需要
libdbd-sqlite3 的方式相同;macOS 和 Windows 版本已包含这三者。)
保留文件——它仍然是完整有效的备份,保存着切换那一刻之前的所有内容。
切换前需要了解:
GNUCASH_BOOK_PATH和GNUCASH_BOOK_URI不能同时设置——账簿要么是文件,要么是数据库;同时设置会导致启动错误,而不是随机决定将写入内容放到哪个账簿中。- 必须设置
GNUCASH_LOG_DIR。 审计日志和调试日志通常保存在账簿文件旁边的文件夹中;连接字符串没有“旁边”。 - 每个服务只能使用一个账簿。
switch_book根据文件名匹配,因此多账簿功能仅适用于文件。 - 服务不再创建备份。 这是真正的取舍:自动安全保障之所以存在,是因为服务可以对文件创建快照,但无法对数据库创建快照。
create_backup会明确说明这一点,而不会假装可以备份。迁移真实账簿前,请设置定时运行的pg_dump或mysqldump——请参阅docs/RESTORE_FROM_BACKUP.md。 - 服务在账簿名称所在的所有位置都会隐藏密码——包括工具结果、仪表板页眉和审计日志——也会在每条错误消息、日志行和启动错误中隐藏密码,包括数据库驱动写入的内容。以查询参数形式提供的密码(
?password=…、sslpassword=…)也会以相同方式隐藏。 - 将连接字符串放在
env块中,不要放在命令行中。--book-uri可以使用,但命令行中的密码会显示给机器上所有用户,进程列表中也能看到。在 PostgreSQL 上,也可以完全不在字符串中填写密码,让驱动读取PGPASSWORD或~/.pgpass。
这两种方言都经过测试套件和 CI 验证:PostgreSQL 16 和 MariaDB 11 均使用真实服务进行测试。
选择模块集
--modules=all 是简单的默认选项——包含所有工具,共 86 个。
日常使用时,你可能会想要少一些。选择与你和服务交互方式相符的角色;你也可以单独选择每个角色背后的模块,以便更精细地控制。
| 角色 | 提供的功能 | 工具 |
|---|---|---|
core | 账簿基础功能——账户、交易、余额、槽位、审计日志、备份、资产负债表、对账。始终加载。 | 29 |
bookkeeper | 除商业功能外的所有内容:报表、预算、计划交易、价格和投资批次。个人理财功能集。 | 30 |
investor | 仅成本基础追踪和价格管理(bookkeeper 的子集)。 | 13 |
business | 客户、供应商和员工;发票、账单、凭证和贷项通知单;销售税、付款条件、工作项目和供应商报表。 | 27 |
选择一个或多个,用逗号分隔:
"args": ["--modules=bookkeeper"] // personal finance
"args": ["--modules=investor"] // self-directed investor
"args": ["--modules=business"] // invoicing, freelance or small business
"args": ["--modules=bookkeeper,business"] // everything (same as all)
无论如何都会添加 core。freelancer 和 business_complete 是 1.4 使用的名称,仍然受支持,并且表示 business。每个角色背后的模块(reconciliation、reporting、budgets、scheduling、tax_lots、portfolio 等)也可以单独选择——在仓库中运行 uv run gnucash-mcp --help 查看完整选项。
可以让它做什么
以下只是部分示例。用自然的方式提出这些要求即可——助手会帮你转换。
录入整份对账单
“这是我的 8 月份支票账户对账单。”(附上 PDF)
已将 31 条记录与账簿进行预演比对:24 条是新记录,6 条已录入(已认领),1 条需要检查——以下是对比结果。 确认后,我会一步完成本月的录入、分类和对账,并与期末余额核对一致。
一份对账单,两次调用,账簿核对平衡。试运行会先对每条记录进行分类并提供依据,然后才写入任何内容;如果账目无法核平,提交操作会拒绝整体写入,不会录入无法核平的月份。
记录交易
“今天我在 Safeway 花了 $47.50 买杂货,用 Visa 付款。”
已于 2026 年 4 月 30 日记录:从 Credit Card:Visa 支付 $47.50 至 Expenses:Groceries。描述:“Safeway”。
设置定期账单
“将房租设为定期账单。每月 1 日从支票账户支付 $1,850。”
已创建计划交易“Monthly Rent”:每月 $1,850,从 Assets:Checking 转至 Expenses:Rent。下次到期日:2026 年 5 月 1 日。
投资追踪
“我在 401(k) 账户中以每股 $170.99 的价格买入了 $1,000 的 VTSAX。”
已记录 VTSAX 买入:5.85 股,每股 $170.99。成本基础:$1,000.00。已创建投资批次,以便在你之后卖出时追踪资本利得。
为客户开具发票
“创建名为 Acme Corp 的客户,并为咨询服务向其开具 $1,500 的发票。”
已创建客户 Acme Corp(id 000005)和发票 000019:1× 咨询服务,单价 $1,500.00,总计 $1,500.00。尚未结清。准备好过账时告诉我。
如果你在 GnuCash 的“处理付款”对话框中打开服务器过账的发票,请先将其“过账至”账户设为该发票的应收账款账户:对话框只会列出过账到所选账户的单据。
外币发票
“向 Berlin Digital 开具 €4,200 的 Q1 顾问费发票,30 天后到期。”
已为 Berlin Digital GmbH 创建 EUR 发票 000020: 1× Q1 顾问费,EUR 4,200,总计 EUR 4,200。付款期限为净 30 天。对方付款时,我会自动将已实现的汇兑损益记入你的外汇账户。
提问
“今年我在各个供应商那里分别花了多少钱?”
Office Depot:$2,340(4 张账单,未付 $0) CloudHost Inc:$1,200(2 张账单,未付 $600) Legal Associates:$3,500(1 张账单,未付 $3,500) 账单总额 $7,040 / 已付 $2,940 / 未付 $4,100。
对账
“帮我根据 4 月份的对账单核对支票账户。”
[引导你完成对账:提取未对账的拆分记录,请你确认已结清的交易,计算滚动余额,将匹配的记录标记为已对账,并将不匹配项留给你调查。]
隐私与安全
你的账簿文件绝不会离开你的设备。 此服务是一个读取和写入本地文件的本地进程。你正在与之对话的 AI 助手(Claude Desktop 等)会看到工具调用的结果——也就是你在屏幕上会看到的相同内容——但文件本身始终留在原处。
每次写入都会记录。 人类可读的审计记录保存在账簿文件旁的 <your-book>.gnucash.mcp/audit/ 中,每天一个日志文件。你可以随时查看,准确了解何时发生了哪些更改。示例条目:
2026-04-30 14:32 POST INVOICE id:000019
total: 1500.00 date: 2026-04-30
account: Assets:Accounts Receivable txn:a1b2c3d4
自动备份。 每个会话首次写入前(以及长期运行的会话跨入新的备份周期时),服务都会将账簿快照保存到 <your-book>.gnucash.mcp/backups/,这样一旦出错,你就可以回滚到已知的正常状态,而无需依赖 Time Machine 或自己的习惯。备份在标记为有效前会通过 PRAGMA integrity_check 验证;如果账簿自上次快照后没有更改,则会跳过备份。回滚流程请参阅 docs/RESTORE_FROM_BACKUP.md。
关于时间戳: 备份文件名使用 UTC 时间戳(适用于文件系统且在旅行和夏令时期间也不会产生歧义);审计和调试日志则按本地日期保存为每日文件,符合你查找“周二发生了什么”的习惯。午夜前后,两者的日期可能相差一天——将备份与某日的日志对应时请注意这一点。
已对账的拆分条目会受到保护。 未经明确覆盖,服务会拒绝删除或修改已对账的拆分条目,因此不够谨慎的提示词不会悄悄破坏你最近一次的银行对账结果。
作废 ≠ 删除。 当你告诉 AI“作废这笔交易”时,它会使用 GnuCash 正规的会计作废操作——保留交易以供审计追踪,并将数值归零。删除则是破坏性操作;AI 会告诉你它将执行哪种操作。
免责声明: 本软件根据 MIT License 按“原样”提供,不提供任何形式的保证。作者不对因使用本软件而导致的任何数据丢失、损坏或财务差异承担责任。你须自行负责维护备份并核实账簿的准确性。
已知限制
- 不要同时在 GnuCash 桌面应用和服务中编辑账簿。 服务遵守 GnuCash 的锁定机制,但不会自行持有锁(每次调用只会打开账簿一次),因此 GnuCash 不会警告你服务正在使用账簿。
- 启用了“Use Trading Accounts”的账簿: 涉及多种货币或商品的交易(包括股票和基金购买)会被拒绝,因为服务目前还无法像 GnuCash 那样写入交易拆分条目。请在 GnuCash 桌面应用中录入此类交易;所有单一货币的操作均可照常进行。
- GnuCash 3.8 或更高版本。 服务写入过的账簿会带有一个功能标记,GnuCash 3.0–3.7 无法打开此类账簿。
- 外币支出和收入在支出和收入报告中按每月收盘汇率估值,而非按支付款项的现金估值;
cash_flow报告则反映现金。
完整列表请见 CHANGELOG.md。
限制 AI 可查看的内容
每个工具的描述都位于 AI 的系统提示词中,每条消息都会占用上下文。将工具集缩小到你实际使用的范围,可以降低每次对话的成本。有关四种角色(core、bookkeeper、investor、business),请参阅上文的选择模块集。
你也可以将 GNUCASH_MCP_MODULES=core,bookkeeper 设置为环境变量,代替 JSON 参数中的 --modules=...。
v1.5.0 版本更新内容
- 将账簿存储在数据库中。 让服务连接到 GnuCash 保存在 PostgreSQL 或 MySQL/MariaDB 中的账簿,不再局限于 SQLite 文件 — 参见或者:将账簿保存在 PostgreSQL 或 MySQL 中。 PostgreSQL 支持由 @vchatela贡献。
- 所有内容都按 GnuCash 桌面应用的存储方式保存。 定期交易会在桌面应用的“自上次运行以来”中执行;预算、发票、贷项通知单、作废记录和价格在两者中的读取结果相同;发票总额也与 GnuCash 自身的结果精确到分。要从 1.4 升级?请先阅读升级指南。
- 预付款。 将客户或供应商的超额付款记录为代其持有的款项,用这笔款项结算后续发票,并在取消已付款发票过账时保留付款记录。
- 每个交易工具都支持编号和单据链接,并使用编号检查重复项。
- 仪表板上提供账户科目表,让助手在提问前就能了解每个账户的位置。
- 根据源代码构建的示例账簿,均按各自国家/地区的税务惯例(美国/华盛顿、德国、中国)核验,并更新至构建当天的最新状态。
早期版本请参阅 CHANGELOG.md。
故障排除
没有 🔨 锤子图标,或显示“找不到工具”
- 完全退出 Claude Desktop,然后重新打开。(仅关闭窗口还不够 — 必须退出应用程序。)
- 确认配置中的路径是绝对路径且正确无误。
- 检查 JSON 中是否有尾随逗号 — 它们会导致配置静默失效。
“找不到账簿”
- 使用绝对路径,不要使用
~或相对路径。 - Mac/Linux:
/Users/yourname/Documents/book.gnucash - Windows:
C:\\Users\\yourname\\Documents\\book.gnucash(双反斜杠 — JSON 格式要求)
“无法打开账簿”/piecash 错误
- 确认账簿使用的是 SQLite 格式,而不是 XML。
- 确保 GnuCash 没有打开同一本账簿 — 这会造成文件锁定。 服务会遵循 GnuCash 的锁定机制,但刻意不加自己的锁(每次调用只会占用账簿一次),因此 GnuCash 可以在服务正在使用账簿时打开它,且不会发出警告。不要同时在两处编辑。
- 尝试直接在 GnuCash 中打开账簿,确认文件未损坏。
Docker:“同时设置了 GNUCASH_BOOK_PATH 和 GNUCASH_BOOK_URI”
镜像默认将 GNUCASH_BOOK_PATH 指向随镜像附带的演示账簿。若要通过它提供数据库账簿,请在命令行中将该默认值清空(-e GNUCASH_BOOK_PATH=),并同时设置 GNUCASH_BOOK_URI;若要提供挂载的文件,请将 GNUCASH_BOOK_PATH 设为挂载路径,并以文件所有者身份运行容器(--user "$(id -u):$(id -g)")。
“找不到账户”
- 使用完整账户路径:
Expenses:Groceries,而不仅是Groceries。 - 或者让助手列出账户:“列出我的账户。”
客户端重启后出现多个服务进程
Claude Desktop(以及其他一些 MCP 客户端)在重新启动时可能会短暂启动两到三个服务副本。这是客户端行为,不是服务缺陷,而且基本无害:服务会在每次请求时打开账簿,并在调用间释放文件锁,因此进程重叠只会持续片刻。如果客户端重启后持续出现 Lock on the file 错误,请彻底退出客户端,使用 pgrep -fl gnucash-mcp 确认没有残留进程,然后重新启动。
出现错误
- 打开
<your-book>.gnucash.mcp/audit/中的审计日志 — 服务首次运行以来的每次写入都记录在其中,并附有变更前后的详情。 - 如果需要回滚,docs/RESTORE_FROM_BACKUP.md 中提供了操作说明。
支持本项目
如果 gnucash-mcp 对你有用,可以考虑请我喝杯咖啡。这有助于让开发持续进行。
面向开发者
贡献者指南和设计说明位于 CLAUDE.md。快速了解:
uv sync --extra dev
uv run pytest # 3,300+ tests as of v1.5.0, parallel by default
uv run ruff check src/ tests/
uv run black --check src/ tests/
已安装的 gnucash-mcp 命令会实时跟踪你的克隆:它会提供当前检出分支上的代码,因此切换分支后,在下次重启时提供的代码也会随之切换——便于测试,但要记得这一点,免得忘了自己还在某个分支上。若要运行另一个检出(第二个工作树)而不动安装内容,uv run --directory PATH gnucash-mcp 仍可运行你指定的任意目录。
该服务基于 piecash(用于访问 GnuCash SQLite 账簿的 Python 接口)和 MCP Python SDK 构建。 代码约有 18,000 行 Python 源码和 20,000 行测试,并采用模块化设计,因此禁用的模块不会带来任何运行时开销。
许可证
MIT。
致谢
- GnuCash — 这款免费开源的会计软件,让本服务能够以对话方式与之交互。
- piecash — 用于访问 GnuCash SQLite 账簿的 Python 接口。
- MCP Python SDK — Model Context Protocol 的实现。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。