使用说明
项目简介
Beancount MCP Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,专为 Beancount 纯文本复式记账系统设计。它允许大型语言模型 (LLM) 客户端通过标准化的 MCP 协议,安全、便捷地访问和操作 Beancount 账本数据,例如查询账户余额、提交新的交易记录等。
主要功能点
- 账本数据访问 (Resources):
- 提供Beancount账本中的账户列表和文件列表,方便LLM理解账本结构。
- 账本查询 (Tools):
- 支持使用 Beancount Query Language (BQL) 查询账本数据,例如查询特定时间段内的账户余额、交易记录等,并将结果以JSON格式返回。
- 交易提交 (Tools):
- 允许LLM提交新的 Beancount 交易记录到账本,实现自动化记账。
- 实时文件监控:
- 自动监控 Beancount 账本文件的变化,并在文件更新时自动重新加载,保持数据同步。
安装步骤
- 克隆仓库:
git clone https://github.com/StdioA/beancount-mcp.git cd beancount-mcp - 安装依赖:
确保你的Python环境中安装了 'uvicorn' 和 'pip',然后使用 'pip' 安装项目依赖:
pip install .
服务器配置
MCP 客户端需要配置以下信息以连接到 Beancount MCP Server。以下是 JSON 格式的配置信息,可以直接复制到 MCP 客户端的配置文件中。
{ "server_name": "beancount", "command": "uvx", "args": [ "beancount-mcp", // 运行 beancount-mcp 服务器 "--transport=sse", // 使用 SSE (Server-Sent Events) 传输协议,也可以选择 stdio "<your_ledger.bean>" // **请替换为你的 Beancount 账本文件路径** ] }
参数说明:
- 'server_name': 服务器名称,设置为 "beancount"。
- 'command': 运行服务器的命令,这里使用 'uvx' 启动 'beancount-mcp'。 你需要确保 'uvx' 命令在你的系统路径中可用。 如果你没有安装 'uvx', 你可以使用 'python -m beancount_mcp.main' 代替 'uvx beancount-mcp', 并确保 Python 环境配置正确。
- 'args': 传递给 'beancount-mcp' 命令的参数列表。
- '"beancount-mcp"': 指定运行 'beancount-mcp' 服务器。
- '"--transport=sse"': 指定使用 SSE 传输协议。 可以根据客户端和网络环境选择 'sse' 或 'stdio'。
- '"<your_ledger.bean>"': 请务必替换为你的实际 Beancount 账本文件的路径。 例如 '/path/to/your/ledger.bean'。
注意: MCP 客户端需要能够执行 'uvx beancount-mcp' 命令。 请确保 'uvx' 已安装,或者根据你的环境调整 'command' 和 'args' 配置。
基本使用方法
-
启动服务器: 在命令行中,使用 'uvx beancount-mcp <your_ledger.bean>' 命令启动服务器,将 '<your_ledger.bean>' 替换为你的 Beancount 账本文件路径。 例如:
uvx beancount-mcp my_ledger.bean或者,如果选择 'stdio' 传输协议,可以这样启动:
uvx beancount-mcp --transport=stdio my_ledger.bean -
配置 MCP 客户端: 将上面提供的服务器配置 JSON 添加到你的 MCP 客户端配置中。
-
通过 MCP 客户端与服务器交互: 客户端启动后,即可通过 MCP 协议与 Beancount MCP Server 进行通信,调用 'beancount_query' 查询账本数据,调用 'beancount_submit_transaction' 提交交易等。 具体工具和资源的使用方法请参考 MCP 客户端的文档。
常用工具 (Tools):
- 'beancount_query': 执行 BQL 查询。 例如,查询 "SELECT sum(position) WHERE account ~ 'Expenses' AND date >= 2024-01-01"。
- 'beancount_accounts': 获取所有账户列表。
- 'beancount_submit_transaction': 提交 Beancount 交易。 例如,提交一段符合 Beancount 语法的交易字符串。
- 'beancount_get_transaction': 根据交易 ID 获取交易详情。
- 'beancount_current_date': 获取当前日期。
常用资源 (Resources):
- 'beancount://accounts': 获取所有账户列表。
- 'beancount://files': 获取所有账本文件列表。
请根据你的 MCP 客户端的具体使用方式,参考客户端文档来调用这些工具和资源。
信息
分类
商业系统