Actual Budget MCP 服务器
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个功能完备的 MCP 服务器,用于在 AI 助手(如 LibreChat、LobeChat)与 Actual Budget 之间提供标准化的上下文服务。核心能力包括资源管理、工具注册与执行、以及 Prompts 的定义与渲染,所有通过 JSON-RPC 进行通信。
-
主要功能点
- MCP 协议核心:实现工具加载、工具调用、并向客户端返回标准化的 JSON-RPC 响应,支持会话管理和能力声明。
- 资源与工具管理:对 62 种工具进行集中管理,提供分门别类的工具集合,便于 LLM 客户端按需调用。
- 数据访问与 Actual Budget 连接:通过 Actual Budget API 进行数据读写,提供账户、交易、预算、分类、支付人等操作的工具封装。
- 认证与安全:支持 Bearer Token 基础认证,以及可选的 OIDC/JWT 验证和按用户的预算 ACL 访问控制。
- 多传输与扩展性:HTTP(REST JSON-RPC) 作为默认传输,文档内还强调支持 SSE/WebSocket 传输的扩展能力(当前实现核心以 HTTP 为主)。
- 测试与演练支持:包含单元测试、工具 smoke 测试与 E2E 测试框架,确保工具和协议的正确性与稳定性。
-
安装步骤
- 本地开发
- Node.js 20 及以上环境
- 安装依赖并构建:npm install,npm run build
- 启动 HTTP MCP 服务:npm run dev -- --http
- Docker 部署
- 使用官方镜像部署,按照文档提供的命令运行容器,暴露端口3600,并配置真实的 Actual Budget 服务地址、口令和同步 ID。
- 典型运行参数示例(需环境变量覆盖实际环境):
- ACTUAL_SERVER_URL、ACTUAL_PASSWORD、ACTUAL_BUDGET_SYNC_ID
- MCP_SSE_AUTHORIZATION(Bearer 令牌)
- 如需 HTTPS,请配置 MCP_ENABLE_HTTPS、MCP_HTTPS_CERT、MCP_HTTPS_KEY
- 高可用部署
- 也可通过 docker-compose 部署全栈,并使用 production 配置文件实现生产化部署。
- 本地开发
-
服务器配置(供 MCP 客户端参考,不属于前端代码)
- 以下 JSON 为 MCP 客户端需要的基本启动信息模板(仅示例说明,不是代码片段)
- JSON 配置示例 { "serverName": "Actual Budget MCP Server", "command": "npm", "args": ["run", "dev", "--http"], "notes": "在本地开发环境下使用上述命令启动 HTTP 传输的 MCP 服务器。生产环境建议使用 Docker 镜像 agigante80/actual-mcp-server,并通过环境变量进行配置。" }
说明:
- MCP 客户端需要的其他配置信息(如服务器名称、命令、参数等)以 JSON 形式提供给用户即可,无需在客户端代码中硬编码。实际的启动参数应结合文档中的环境变量要求与部署方式进行配置。
- 服务器暴露的默认端点为 http://<host>:3600/http,可按需要在容器/服务中修改端口与路径。
-
基本使用方法
- 启动后,客户端(如 LibreChat/LobeChat)通过 MCP HTTP 路径与服务器建立会话,执行以下动作:
- 初始化会话,获取服务能力与工具列表
- 调用 tools/list 获取可用工具清单
- 使用 tools/call 按名称与参数调用具体工具,如实际账户、交易、预算等
- 使用服务器信息工具如 actual_server_info、actual_server_get_version 等进行自检
- 常见操作的目标是向 LLM 客户端提供可调用的工具集、资源视图与提示模板,用于实现自然语言对 Actual Budget 的操作和查询。
- 启动后,客户端(如 LibreChat/LobeChat)通过 MCP HTTP 路径与服务器建立会话,执行以下动作:
-
注意事项
- 生产环境请启用 HTTPS、强认证(OIDC 或强 Bearer)并对暴露接口进行访问控制。
- 端到端的工具集覆盖广泛,确保实际 Budgets 的服务器地址、同步 ID、以及所需权限在 MCP 服务器端正确配置。
- 如果使用 Docker,建议使用同一个 Docker 网络(容器互相直连)以降低网络延迟和提高安全性。