远程MCP服务器
一个用于在 Cloudflare Workers 上托管模型上下文协议(MCP)工具的服务器,支持 OAuth 认证,允许 Claude AI 和其他 MCP 客户端访问扩展功能。
服务介绍
远程 MCP 服务器
这是一个基于 Cloudflare Worker 的 MCP (Model Context Protocol) 服务器,用于提供各种工具 API,包括 Gmail、Google Calendar 等功能。该项目使用 TypeScript 开发,并使用 @remote-mcp/server 库来简化 MCP 服务器的实现。
功能特点
- 基于 Cloudflare Workers 的无服务器架构
- 提供 Gmail 邮件发送和读取功能
- 提供 Google Calendar 事件创建和列表功能
- 集成 OAuth2 认证
- 使用 Durable Objects 进行状态管理
安装
# 克隆仓库
git clone https://github.com/yourusername/remote-mcp-server.git
cd remote-mcp-server
# 安装依赖
npm install
配置
OAuth 配置
- 在 Google Cloud Console 创建一个项目
- 启用 Gmail API 和 Google Calendar API
- 创建 OAuth 客户端ID和密钥
- 修改
src/config.ts文件中的 OAuth 配置
export const GOOGLE_OAUTH_CONFIG = {
clientId: '你的客户端ID',
clientSecret: '你的客户端密钥',
redirectUri: 'https://your-worker.your-subdomain.workers.dev/oauth/gmail/callback',
scopes: [
'https://www.googleapis.com/auth/gmail.send',
'https://www.googleapis.com/auth/gmail.readonly',
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.events'
]
};
Cloudflare KV 命名空间配置
对于生产环境,你需要配置 KV 命名空间来存储 OAuth 令牌:
- 在 Cloudflare Dashboard 创建 KV 命名空间
- 获取 KV 命名空间 ID
- 取消注释
wrangler.jsonc中的 KV 配置部分,并添加你的命名空间 ID:
"kv_namespaces": [
{
"binding": "OAUTH_KV",
"id": "你的KV命名空间ID"
}
]
构建和部署
本地开发
# 运行开发服务器
npm run dev
部署到 Cloudflare Workers
# 构建并部署
npm run deploy
项目结构
remote-mcp-server/
├── src/ # 源代码
│ ├── index.ts # 主入口文件
│ ├── config.ts # 配置文件
│ ├── services/ # 服务实现
│ │ └── google.ts # Google服务(Gmail, Calendar)
│ └── utils.ts # 工具函数
├── dist/ # 编译后的文件
├── static/ # 静态资源
├── build.js # 构建脚本
└── wrangler.jsonc # Cloudflare Workers配置
API 端点
/tools- 获取可用工具列表/api/mcp- MCP API 端点/oauth/gmail- Gmail OAuth 认证/oauth/gmail/callback- Gmail OAuth 回调
故障排除
常见问题
- 部署错误 - KV 命名空间无效: 确保在
wrangler.jsonc中配置了正确的 KV 命名空间 ID,或者暂时注释掉 KV 配置部分进行测试部署 - OAuth 错误: 检查重定向 URI 是否正确配置在 Google Cloud Console 和项目配置中
- 编译错误: 确保 TypeScript 配置中
noEmit设置为false,允许生成 JavaScript 文件
日志和调试
使用 Cloudflare Workers 控制台查看日志和调试信息。
贡献指南
- Fork 仓库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
许可证
MIT