使用说明
GnuCash MCP服务器
A. 模型上下文协议 (MCP)服务器,提供对以SQLite格式存储的GnuCash财务数据的只读访问。这使得像克劳德这样的人工智能助手能够直接查询和分析您的个人财务数据。
特性
- 只读访问 --您的财务数据永远不会被修改
- 6工具 用于探索账户、余额、交易和支出模式
- 纯Go --无需CGO,单一静态二进制
- 标准运输 --适用于Claude Desktop和任何兼容MCP的客户端
先决条件
- 转到1.21+
- GnuCash文件保存在 SQLite格式 (文件→ 另存为→ SQLite3)
构建
git clone https://github.com/michelgermain/gnucash-mcp.git
cd gnucash-mcp
go build -o gnucash-mcp .
配置
克劳德桌面版
添加到您的Claude桌面配置(~/.config/claude/claude_desktop_config.json 在macOS/Linux上):
{
"mcpServers": {
"gnucash": {
"command": "/absolute/path/to/gnucash-mcp",
"env": {
"GNUCASH_FILE": "/path/to/your/file.gnucash"
}
}
}
}
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
GNUCASH_FILE |
是 | GnuCash SQLite文件的绝对路径 |
工具
list_accounts
列出所有帐户及其层次结构和类型。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_type |
string | 否 | 按类型筛选: ASSET, BANK, CASH, CREDIT, EQUITY, EXPENSE, INCOME, LIABILITY |
get_balance
获取特定账户的当前余额。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_name |
string | 是 | 帐户名(不区分大小写,部分匹配) |
date |
string | 否 | 截至日期的余额(YYYY-MM-DD),默认为今天 |
get_transactions
检索日期范围内帐户的交易记录。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
account_name |
string | 是 | 帐户名(不区分大小写,部分匹配) |
start_date |
string | 否 | 开始日期(YYYY-MM-DD) |
end_date |
string | 否 | 结束日期(YYYY-MM-DD) |
limit |
number | No | 最大结果数(默认值:50) |
spending_by_category
按类别汇总支出,按最高支出排序。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
start_date |
string | 否 | 开始日期(YYYY-MM-DD),默认为当月开始 |
end_date |
string | 否 | 结束日期(YYYY-MM-DD),默认为今天 |
parent_account |
string | 否 | 按上级费用账户名称筛选 |
income_vs_expenses
每月收入和支出比较。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
months |
number | 否 | 要包含的月数(默认值:6) |
search_transactions
在交易描述和拆分备忘录中进行全文搜索。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
string | 是 | 搜索词 |
limit |
number | No | 最大结果数(默认值:20) |
项目结构
gnucash-mcp/
├── main.go # Entry point, MCP server setup
├── internal/
│ └── gnucash/
│ ├── models.go # Data structures (Account, Transaction, Split)
│ ├── db.go # SQLite connection and queries
│ └── service.go # Business logic and formatting
└── tools/
└── tools.go # MCP tool definitions and handlers
查询示例
配置后,您可以向Claude询问以下问题:
- “我的支票账户余额是多少?”
- “按类别显示我上个月的支出”
- “搜索所有提及‘亚马逊’的交易”
- “比较我过去6个月的收入与支出”
- “列出我的所有支出账户”
安全
- 数据库已在中打开 只读模式 (
?mode=ro)在SQLite驱动程序级别 - 未执行任何写入操作
- 文件路径通过环境变量提供,从不记录
许可证
麻省理工学院