使用说明
拆分MCP服务器🪙🤝
一个轻量级的模型上下文协议(MCP)服务器,提供Splitwise集成和工具,用于管理用户、组、朋友、费用和通知。此项目使用持久对象为Cloudflare Workers构建,并公开OAuth端点以授权Splitwise访问。
🚀 已部署服务器
实时URL: https://splitwise-mcp.hifi.click
- MCP端点:
https://splitwise-mcp.hifi.click/sse - OAuth授权:
https://splitwise-mcp.hifi.click/authorize
💡 准备使用:服务器已部署并准备好与Claude Desktop、Cursor或任何兼容MCP的客户端集成。
目录
- 🚀 已部署服务器
- 关于
- 特性
- 快速开始
- 环境和配置
- 地方发展
- 端点和OAuth流
- 可用的MCP工具
- MCP检验员——测试与开发
- 使用示例
- 安全
- 故障排除
- 互动示例
- 部署MCP服务器——集成首选
- 贡献
- 许可证和联系方式
关于
Splitwise MCP是一种MCP服务器实现,旨在充当MCP客户端(如代理)和Splitwise API之间的桥梁。它公开了一组MCP工具来执行创建费用、管理组和检索通知等操作。此存储库使用Cloudflare Workers(Wrangler)、Durable Objects和Splitwise的小型OAuth提供程序。
特性✨
- 用于有状态服务器行为的持久基于对象的MCP代理(MyMCP)
- Splitwise集成的OAuth端点
- 一套丰富的MCP工具,用于用户、群组、朋友、费用和通知管理
- TypeScript、用于格式化/linting的Biome和用于本地开发和部署的Wrangler
🚨 部署第一个建议:此项目旨在从公共部署的MCP服务器用于实际集成(Claude、Cursor、代理)。仅将本地(wrangler-dev)用于开发和测试。下面的README侧重于部署的服务器工作流。
快速开始🚀
先决条件
- Node.js(推荐16+)
- pnpm(因为这个仓库包含一个pnpm-lock.yaml)或npm/yarn
- 牧马人(Cloudflare CLI)
安装
# Clone the repository
git clone <your-repo-url>
cd splitwise-mcp-server
# Install dependencies
pnpm install
有用的脚本
来自package.json:
pnpm dev--在本地运行wrangler-devpnpm start--别名为wrangler-devpnpm deploy--运行wrangler-deploy以发布到Cloudflare
本地运行(开发)
pnpm dev
# or
pnpm start
部署到Cloudflare
pnpm deploy
环境和配置🔐
服务器需要几个环境变量(将这些设置为Wrangler secrets或在Cloudflare环境中):
SPLITWISE_CONSUMER_KEY-拆分API消费者密钥SPLITWISE_CONSUMER_SECRET-拆分API消费者机密SPLITWISE_CALLBACK_URL--Splitwise的OAuth回调URLBACKEND_URL--服务器使用的可选后端URLPHONE_NUMBER--验证工具使用的电话号码(可选地用+格式化)
与牧马人一起设定秘密
wrangler secret put SPLITWISE_CONSUMER_KEY
wrangler secret put SPLITWISE_CONSUMER_SECRET
wrangler secret put SPLITWISE_CALLBACK_URL
持久对象绑定
Durable Object类是 MyMCP和in wrangler.jsonc 一个名为的绑定 MCP_OBJECT 定义。Wrangler将在您运行本地开发和部署时使用它。
地方发展
运行开发服务器:
pnpm dev
服务器将在以下时间可用 http://127.0.0.1:8787 (或Wrangler显示的URL)。
端点和OAuth流🔁
此项目使用以下路由装载OAuth提供程序和MCP API处理程序(如中所配置 src/index.ts):
POST /sse-MCP API处理程序(服务器通过MyMCP.mount("/sse"))-MCP流量的主要API端点GET /authorize--使用Splitwise启动OAuth授权POST /register--客户端注册端点POST /token--用于交换授权授予的令牌端点
备注:OAuth流是交互式的,通常从访问
/authorize浏览器中的URL。
可用的MCP工具🧰
MCP服务器注册了许多与Splitwise交互的工具。关键因素包括:
服务器工具
about--返回包裹/关于信息validate--基本服务器验证(返回电话号码格式)
用户工具
splitwise_get_current_usersplitwise_update_user
组工具
splitwise_get_groupssplitwise_get_groupsplitwise_create_groupsplitwise_delete_groupsplitwise_undelete_groupsplitwise_add_user_to_groupsplitwise_remove_user_from_group
好友工具
splitwise_get_friendssplitwise_get_friend
支出工具
splitwise_get_expensesplitwise_get_expensessplitwise_create_expensesplitwise_update_expensesplitwise_delete_expensesplitwise_undelete_expense
通知工具
splitwise_get_notificationssplitwise_check_auth
每个工具都包括通过zod进行的输入验证(参见 src/index.ts 用于参数形状)。
MCP检验员——测试与开发🧩
测试和与部署的MCP服务器交互的最简单方法是使用官方的MCP检查器工具。这提供了一个基于网络的界面来探索和测试所有可用的MCP工具。
MCP检查器快速入门
-
确保您的服务器已部署且可访问
pnpm deploy # Note your deployed URL: https://your-deployed-url.workers.dev -
启动MCP检查器
# Using pnpx (recommended) pnpx @modelcontextprotocol/inspector@latest # Or using npx npx @modelcontextprotocol/inspector@latest # Or using bunx bunx @modelcontextprotocol/inspector@latest -
连接到您的MCP服务器
- 检查器将在您的浏览器中打开
- 请输入您的服务器URL:
https://your-deployed-url.workers.dev/sse - 检查员将自动发现所有可用工具
-
测试OAuth流
- 首次访问
https://your-deployed-url.workers.dev/authorize完成Splitwise OAuth - 然后返回检查员处测试经过身份验证的工具
- 首次访问
Inspector中的可用工具
连接后,您将看到所有可用的工具,包括:
察看连接信息
about--获取服务器信息和版本validate--测试服务器连接
用户管理
splitwise_get_current_user--获取经过身份验证的用户详细信息splitwise_update_user--更新用户信息
组管理
splitwise_get_groups--列出所有组splitwise_create_group--创建新组splitwise_add_user_to_group--将成员添加到组
费用跟踪
splitwise_create_expense--创建新支出splitwise_get_expenses--用过滤器列出费用splitwise_update_expense--修改现有费用
认证
splitwise_check_auth--验证身份验证状态
检查员福利
✅ 可视化接口 --无需手动处理JSON请求
✅ 架构验证 --内置参数验证和提示
✅ 实时测试 --对工具响应的即时反馈
✅ 工具发现 --自动列出所有可用工具
✅ 调试错误 --清除错误消息和堆栈跟踪
工作流示例
- 启动检查器:
pnpx @modelcontextprotocol/inspector@latest - 连接到:
https://your-deployed-url.workers.dev/sse - 测试连接
about工具 - 在以下位置完成OAuth
/authorize端点 - 测试经过身份验证的工具,如
splitwise_get_current_user - 创建费用、管理组等。
用于生产集成
使用检查器进行测试后,使用部署的服务器:
克劳德桌面
{
"mcpServers": {
"splitwise": {
"command": "node",
"args": [
"path/to/mcp-client.js",
"https://your-deployed-url.workers.dev/sse"
]
}
}
}
游标或其他MCP客户端
- 配置MCP服务器URL:
https://your-deployed-url.workers.dev/sse - 客户端将自动发现并使用可用工具
自定义应用程序
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
const client = new Client({
name: "your-app",
version: "1.0.0",
});
// Connect to your deployed server
await client.connect("https://your-deployed-url.workers.dev/sse");
💡 专业提示:在与其他客户端集成之前,始终先使用MCP Inspector测试您的工具。这是调试问题和了解工具行为的最快方法。
使用示例📝
创建支出
{
"tool": "splitwise_create_expense",
"input": {
"cost": "20.00",
"description": "Dinner at restaurant",
"users": [
{ "user_id": 123, "paid_share": "10.00", "owed_share": "10.00" },
{ "user_id": 456, "paid_share": "10.00", "owed_share": "10.00" }
]
}
}
获取当前用户信息
{
"tool": "splitwise_get_current_user",
"input": {}
}
创建组
{
"tool": "splitwise_create_group",
"input": {
"name": "Weekend Trip",
"type": "trip"
}
}
使用过滤器获取费用
{
"tool": "splitwise_get_expenses",
"input": {
"group_id": 123,
"limit": 10,
"dated_after": "2024-01-01"
}
}
安全🔒
- 所有Splitwise API调用都使用OAuth 2.0
- 秘密存储为Wrangler/Cloudflare环境变量
- Redis连接使用经过身份验证的令牌
- 生产中没有记录敏感数据
故障排除🔧
OAuth重定向问题
- 确保
SPLITWISE_CALLBACK_URL与Splitwise应用程序中配置的完全匹配 - 验证回调URL是否可公开访问
Redis连接错误
- 验证
REDIS_URL和REDIS_TOKEN是正确的 - 检查Redis实例是否可以从Cloudflare Workers访问
MCP工具身份验证
- 大多数工具都需要有效的经过身份验证的用户会话
- 使用
splitwise_check_auth验证身份验证状态的工具 - 在以下位置完成OAuth流程
/authorize端点(如果未通过身份验证)
速率限制
- 服务器遵守Splitwise API速率限制
- 如果遇到速率限制,服务器将返回相应的错误消息
- 考虑使用指数回退实现客户端重试逻辑
互动示例🧪
-
启动本地开发服务器并在浏览器中打开授权URL以运行OAuth流:
pnpm dev # then open http://127.0.0.1:8787/authorize (or the URL shown by Wrangler) -
通过MCP客户端使用about工具检查服务器是否处于活动状态 (需要MCP客户或代理)。服务器将返回一个关于有效载荷的JSON。如果您需要手动测试工具,请咨询您使用的MCP客户端(此仓库提供服务器端)。工具需要有效的经过身份验证的用户道具才能执行许多操作。
部署MCP服务器——集成首选✅
您已经部署了MCP服务器——太好了。将部署的实例用作托管LLM平台(Claude、Cursor)、外部代理和任何生产工作流的主要集成目标。
部署服务器的优势
- 适用于OAuth重定向和平台集成的公共、稳定的URL
- 持久对象和Redis的行为类似于生产环境(没有本地环境差距)
- 更容易与队友或第三方LLM平台共享,而不会暴露您的机器
典型部署URL: https://<your-deployed-subdomain>.workers.dev (或您的自定义域)。MCP API安装在 /sseOAuth端点仍位于 /authorize, /token,以及 /register.
快速检查(关于工具部署)
curl -X POST "https://your-deployed-url.workers.dev/sse" \
-H "Content-Type: application/json" \
-d '{"tool":"about","input":{}}'
如果您与托管的LLM平台集成,请将其工具/插件/拦截器配置指向已部署的 /sse 端点或使用小型代理适配器来调整请求信封。如果返回错误,请咨询您的MCP客户端以获取确切的请求信封。目标是达到部署 /sse 端点具有客户端期望的工具调用。
贡献🤝
欢迎捐款。请遵循以下小指南:
- 分叉回购并打开PR
- 提交前运行格式化和linting:
pnpm format和pnpm lint:fix - 确保TypeScript类型检查通过:
pnpm type-check
建议的低风险改进
- 为SplitwiseAuthService包装器添加单元测试
- 添加CI以运行
pnpm type-check,pnpm format --check和pnpm lint