Splitwise MCP服务器

一个独立的模型上下文协议(MCP)服务器,提供对Splitwise API的完整访问,可通过自然语言管理Splitwise费用。

  • by svarun115
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 svarun115/splitwise-mcp-server

使用说明

拆分MCP服务器

一个独立的模型上下文协议(MCP)服务器,提供对Splitwise API的完全访问。使用它 克劳德桌面, VS代码副本, ChatGPT,或任何兼容MCP的客户端,通过自然语言管理您的Splitwise费用。

特性

26个MCP工具 分为7类:

  • 👤 用户管理 (3) -配置文件和设置
  • 👥 群组管理 (7) -创建/管理费用组
  • 🤝 好友管理 (5) -添加/管理好友
  • 💰 费用管理 (6) -使用自定义拆分创建/跟踪费用
  • 💬 评论 (3) -费用评论
  • 🔔 通知 (1) -查看帐户活动
  • 🛠️ 公用事业 (2) -货币和类别

支持的客户

  • ✅ 克劳德桌面 (Anthropic的桌面应用程序)-使用stdio或WebSocket模式
  • ✅ VS代码与GitHub Copilot (通过 拆分mcp vscode扩展)
  • ✅ ChatGPT (具有自定义MCP集成)
  • ✅ 任何兼容MCP的客户端 (stdio或WebSocket+HTTP模式)

快速开始

1.安装依赖项

npm install
npm run build

2.获取Splitwise凭据

访问 secure.splitwise.com/apps 并注册您的应用程序:

  • 名字:我的Splitwise MCP
  • 主页网址: http://localhost
  • 回调URL: http://localhost:8080/callback

保存您的 消费者密钥 和 消费者秘密.

3.获取访问令牌

运行令牌帮助程序:

npm run get-token

或手动:

  1. 访问: https://secure.splitwise.com/oauth/authorize?client_id=YOUR_CONSUMER_KEY&response_type=code&redirect_uri=http://localhost:8080/callback
  2. 授权应用程序并复制 code 从重定向URL
  3. 代币兑换:
curl -X POST "https://secure.splitwise.com/oauth/token" \
  -d "grant_type=authorization_code" \
  -d "code=YOUR_AUTH_CODE" \
  -d "client_id=YOUR_CONSUMER_KEY" \
  -d "client_secret=YOUR_CONSUMER_SECRET" \
  -d "redirect_uri=http://localhost:8080/callback"

4.配置环境

创建 .env:

SPLITWISE_ACCESS_TOKEN=your_access_token_here

5.选择您的客户

选项A:克劳德桌面(推荐)

编辑您的Claude Desktop配置文件:

  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Mac/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json

Websocket模式 (需要适配器或直接连接):

{
  "mcpServers": {
    "splitwise": {
      "command": "splitwise-mcp-server",
      "args": [],
      "env": {
        "SPLITWISE_ACCESS_TOKEN": "your_access_token_here",
        "PORT": "3002"
      }
    }
  }
}

标准模式 (原始,使用stdio传输):

{
  "mcpServers": {
    "splitwise": {
      "command": "splitwise-mcp-server",
      "args": ["--stdio"],
      "env": {
        "SPLITWISE_ACCESS_TOKEN": "your_access_token_here"
      }
    }
  }
}

重新启动Claude Desktop并测试:

"Show me my Splitwise friends"
"List my recent expenses"
"Create a $50 dinner expense split equally"

选项B:VS代码与GitHub副本

安装 拆分MCP VS代码扩展:

# Install the VS Code extension
code --install-extension splitwise-mcp-1.0.0.vsix

在VS Code设置中配置您的访问令牌,然后使用Copilot Chat:

"Show my Splitwise balance"
"Add a $30 grocery expense to my Roommates group"

看 VS代码扩展README 详细设置。

选项C:自定义MCP客户端

服务器使用stdio传输并遵循MCP规范。连接任何MCP客户端:

// Example: Using MCP SDK Client
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';

const transport = new StdioClientTransport({
  command: 'splitwise-mcp-server',
  env: { SPLITWISE_ACCESS_TOKEN: 'your_token' }
});

const client = new Client({ name: 'my-client', version: '1.0.0' }, { capabilities: {} });
await client.connect(transport);
const tools = await client.listTools();

可用工具

用户管理

  • splitwise_get_current_user -获取您的个人资料信息
  • splitwise_get_user -获取其他用户的信息
  • splitwise_update_user -更新配置文件设置

群组管理

  • splitwise_get_groups -列出所有组
  • splitwise_get_group -获取组详细信息
  • splitwise_create_group -创建新组
  • splitwise_delete_group -删除组
  • splitwise_restore_group -还原已删除的组
  • splitwise_add_user_to_group -将成员添加到组
  • splitwise_remove_user_from_group -从组中删除成员

好友管理

  • splitwise_get_friends -列出所有有余额的朋友
  • splitwise_get_friend -获取好友详细信息
  • splitwise_add_friend -添加单身朋友
  • splitwise_add_friends -添加多个好友
  • splitwise_remove_friend -删除好友

费用管理

  • splitwise_get_expenses -列出/筛选费用
  • splitwise_get_expense -获取费用明细
  • splitwise_create_expense -创建费用(相等或自定义分割)
  • splitwise_update_expense -更新费用
  • splitwise_delete_expense -删除费用
  • splitwise_restore_expense -恢复已删除的费用

评论

  • splitwise_get_comments -获取费用备注
  • splitwise_add_comment -在费用中添加注释
  • splitwise_delete_comment -删除评论

通知

  • splitwise_get_notifications -获取最近的活动

公用事业

  • splitwise_get_currencies -获取支持的货币
  • splitwise_get_categories -获取费用类别

用法示例

查看余额:

"What do I owe each of my friends?"
"Show me my Splitwise balance"

创建费用:

"Add a $60 grocery expense split equally in my Roommates group"
"I paid $100 for dinner - I owe $40, John owes $60"
"Create a $1200 monthly rent expense split equally"

管理组:

"Create a group called 'Vegas Trip' and add alice@email.com"
"Who's in my Apartment group?"
"Show me all expenses in the Weekend Getaway group"

过滤费用:

"Show me restaurant expenses from last month"
"List all expenses over $100"
"What did I spend the most on this year?"

故障排除

身份验证失败:

  • 验证令牌 .env 匹配其中一个 claude_desktop_config.json
  • 令牌周围没有额外的空格或引号
  • 令牌尚未过期-请使用重新生成 npm run get-token

找不到服务器:

  • 在配置中使用绝对路径
  • Windows:使用 \\ (双反斜杠)
  • 跑 npm run build 代码更改后
  • 路径应指向 dist/index.js 不 src/index.ts

Claude中未出现的工具:

  • 验证JSON语法 claude_desktop_config.json
  • 完全关闭并重新启动Claude Desktop(检查系统托盘)
  • 检查克劳德桌面日志:帮助→ 显示日志

授权码已过期:

  • 代码将在10分钟后过期
  • 获取新代码并立即交换
  • 使用令牌助手脚本自动执行以下操作: npm run get-token

有关详细的设置说明,请参阅 设置.md

服务器模式

Splitwise MCP服务器支持多种部署模式:

Websocket模式(默认)

npm run dev:ws
# or
PORT=4001 npm start
  • 在端口4001上启动(可通过配置 PORT 任何人)
  • 使用WebSocket+HTTP JSON-RPC协议
  • 建议用于生产部署
  • 可以与HTTP适配器一起用于远程访问

标准模式

npm run dev:stdio
# or
npm start -- --stdio
  • 使用标准输入/输出(经典MCP协议)
  • 有利于直接客户端集成
  • 默认模式为 --stdio 旗帜传递
  • 建议用于Claude Desktop

HTTP适配器模式

npm run dev:adapter
# or in another terminal while WebSocket server is running:
WS_BACKEND_URL=ws://localhost:4001 npm run adapter
  • 在端口4000上运行(可通过配置 PORT 任何人)
  • 将HTTP/JSON-RPC请求代理到WebSocket后端
  • 提供用于测试的HTTP端点:
    • GET /health -健康检查
    • GET /status -后端连接状态
    • GET /listTools -列出可用工具
    • POST /rpc -JSON-RPC请求端点
    • POST / -替代JSON-RPC端点
    • WS / -WebSocket升级端点

发展

# Install dependencies
npm install

# Build TypeScript
npm run build

# Watch mode (auto-rebuild)
npm run watch

# WebSocket mode (default)
npm run dev:ws

# Stdio mode
npm run dev:stdio

# HTTP Adapter mode (in separate terminal with backend running)
npm run dev:adapter

# Get OAuth token
npm run get-token

开发与运行

地方发展

# Terminal 1: Start WebSocket backend
PORT=4001 npm run build
PORT=4001 npm run dev:ws

# Terminal 2: (Optional) Start HTTP adapter
PORT=4000 npm run dev:adapter

# Terminal 3: Test the server
curl http://localhost:4000/health
curl http://localhost:4000/listTools

使用克劳德桌面(WebSocket)

  1. 配置如上文“选项A:Claude桌面”所示
  2. 运行服务器: PORT=4001 npm start
  3. 重新启动克劳德桌面

配备克劳德桌面(Stdio)

  1. 配置为 --stdio 如上所示的标志
  2. 运行服务器: npm start -- --stdio
  3. 重新启动克劳德桌面

项目结构

SplitwiseMCPServer/
├── src/
│   ├── index.ts              # Main MCP server (WebSocket + Stdio modes)
│   ├── http-adapter.ts       # HTTP adapter for WebSocket backend
│   ├── splitwise-client.ts   # Splitwise API wrapper
│   ├── tools.ts              # Tool definitions (26 tools)
│   └── get-token.ts          # OAuth helper script
├── dist/                      # Compiled output
├── .env                       # Your credentials (not in git)
├── package.json
└── tsconfig.json

API 参考

所有工具都遵循Splitwise API v3.0规范: dev.splitwise.com

基本URL: https://secure.splitwise.com/api/v3.0
认证:OAuth 2.0承载令牌

安全

  • 永不承诺 .env 到版本控制
  • 保持您的访问令牌私有
  • 使用环境变量作为凭据
  • 设置适当的文件权限: chmod 600 .env (Unix/Mac)

需求

  • Node.js: 18+
  • NPM:最新
  • 拆分帐户:免费或付费

许可证

麻省理工学院

相关

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

支持

许可证

MIT许可证-有关详细信息,请参阅许可证文件


内置:TypeScript 5.3,MCP SDK 1.20.1,Axios 1.6.0