财务数据查询服务器

GnuCash MCP服务器是一个提供只读访问GnuCash财务数据的服务,支持AI助手直接查询和分析个人财务数据。

  • by michMartineau
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 michMartineau/gnucash-mcp

使用说明

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驱动程序级别
  • 未执行任何写入操作
  • 文件路径通过环境变量提供,从不记录

许可证

麻省理工学院