费用分摊管理服务器

一个基于TypeScript的MCP服务器,用于管理社交活动的费用分摊和支付跟踪,方便朋友之间的报销和结算。

  • by abutbul
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 abutbul/gatherings-mcp

使用说明

MCP服务器集合

用于管理聚会和费用分担的模型上下文协议服务器。

这是一个基于TypeScript的MCP服务器,有助于跟踪社交活动的费用和付款,使计算报销和结算朋友之间的余额变得容易。

架构说明

重要:此项目为Node.js应用程序使用非标准架构。TypeScript MCP服务器充当Python后端实现的包装器。Node.js服务器接收MCP请求,将其转换为Python脚本的命令行调用,并返回结果。

虽然这种架构适用于我们当前的需求,但它不是生产应用程序最有效或最可维护的方法。

全部

  • 重构实现以使用更标准的架构:
    • 要么将后端完全迁移到Types/JavaScript
    • 或者在Node.js和Python组件之间实现适当的进程间通信
    • 或者替换为REST API方法,其中Python后端提供MCP服务器使用的API
  • 改进Node.js和Python组件之间的错误处理
  • 为组件之间的集成添加自动化测试
  • 优化Dockerfile

特性

工具

  • create_gathering -创建新聚会
    • 拿 gathering_id 和 members 根据所需参数
  • add_expense -为会员添加费用
    • 拿 gathering_id, member_name,以及 amount 根据所需参数
  • calculate_reimbursements -计算聚会的报销费用
    • 拿 gathering_id 作为必需参数
  • record_payment -记录会员的付款
    • 拿 gathering_id, member_name,以及 amount 根据所需参数
  • rename_member -重命名未命名成员
    • 拿 gathering_id, old_name,以及 new_name 根据所需参数
  • show_gathering -显示聚会的详细信息
    • 拿 gathering_id 作为必需参数
  • list_gatherings -列出所有聚会
  • close_gathering -结束聚会
    • 拿 gathering_id 作为必需参数
  • delete_gathering -删除聚会
    • 拿 gathering_id 作为必需参数,可选 force 参数
  • add_member -向聚会添加新成员
    • 拿 gathering_id 和 member_name 根据所需参数
  • remove_member -从聚会中删除成员
    • 拿 gathering_id 和 member_name 根据所需参数

发展

安装依赖项:

npm install

构建服务器:

npm run build

对于自动重建的开发:

npm run watch

安装

配置

要与Claude Desktop一起使用,请添加服务器配置:

{
  "mcpServers": {
    "gatherings": {
      "command": "node",
      "args": ["/path/to/gatherings-server/build/index.js"],
      "env": {
        "GATHERINGS_DB_PATH": "gatherings.db",
        "GATHERINGS_SCRIPT": "/path/to/gatherings-server/gatherings.py"
      },
      "disabled": false,
      "autoApprove": [],
      "alwaysAllow": [
        "create_gathering",
        "add_expense",
        "calculate_reimbursements",
        "record_payment",
        "rename_member", 
        "show_gathering",
        "list_gatherings",
        "close_gathering",
        "delete_gathering",
        "add_member",
        "remove_member"
      ],
      "timeout": 300
    }
  }
}

配置选项

  • command 和 args:指定如何运行服务器
  • env:环境变量
    • GATHERINGS_DB_PATH:数据库文件的路径
    • GATHERINGS_SCRIPT:用于处理收集操作的Python脚本的路径
  • alwaysAllow:将在没有提示的情况下自动允许的工具列表
  • timeout:最大执行时间(秒)

调试

由于MCP服务器通过stdio进行通信,调试可能具有挑战性。我们建议使用 MCP检查员,可作为包脚本使用:

npm run inspector

检查器将提供一个URL,用于访问浏览器中的调试工具。