关于 Model Context Protocol (MCP) Server + Strava OAuth
这是一个基于 Cloudflare Workers 的 MCP 服务,内置 Strava OAuth 登录。用户通过 Strava 账号登录后即可连接服务并访问工具,适合希望将 Strava 认证接入 AI 工具的开发者。项目同时作为 OAuth 服务端和 Strava 的 OAuth 客户端,可作为参考示例。
主要功能
- 01内置 Strava OAuth 登录
- 02作为 OAuth 2.1 服务端颁发和校验令牌
- 03基于 workers-oauth-provider 库实现
- 04通过 KV 存储令牌
- 05支持远程 MCP 连接(SSE 端点)
适用场景
- 01为 MCP 客户端提供 Strava 账号登录
- 02学习将 OAuth 提供方接入远程 MCP 服务的方法
- 03在 Cloudflare Workers 上部署带认证的 MCP 服务
MCP 相关
该项目是远程 MCP 服务,通过 SSE 端点向 Claude、Cursor 等 MCP 客户端暴露工具,并在连接前完成 Strava 授权。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Model Context Protocol (MCP) 服务 + Strava OAuth
这是一个支持远程 MCP 连接的 Model Context Protocol (MCP) 服务,内置 Strava OAuth。它允许用户通过登录其 Strava 账户连接到你的 MCP 服务。
概述
该 MCP 服务(由 Cloudflare Workers 提供支持)承担两种角色:
- 作为 MCP 客户端的 OAuth 服务端
- 作为 Strava OAuth 服务的 OAuth 客户端
本项目是一个参考示例,展示如何使用 workers-oauth-provider 库 将 OAuth 提供商与部署到 Cloudflare 的 MCP 服务集成。
前提条件
- 一个 Strava 账户
- 一个 Cloudflare 账户
- 已安装 Node.js 和 npm
- 已安装 Wrangler CLI(
npm install -g wrangler)
快速开始
-
克隆仓库:
git clone https://github.com/kw510/strava-mcp.git cd strava-mcp npm install -
设置你的 Strava API 凭据(参见设置 Strava API 凭据)
-
设置你的 Cloudflare KV 命名空间:
wrangler kv:namespace create "OAUTH_KV"使用生成的 KV ID 更新
wrangler.toml文件。 -
部署到 Cloudflare:
wrangler deploy
设置 Strava API 凭据
用于生产环境
-
前往 Strava 的 API 设置 并创建一个新应用
-
配置你的应用:
- Application Name:为你的应用选择一个名称
- Category:选择合适的类别
- Website:你的网站 URL
- Application Description:应用的简要描述
- Authorization Callback Domain:
mcp-strava-oauth.<your-subdomain>.workers.dev - Authorization Callback URL:
https://mcp-strava-oauth.<your-subdomain>.workers.dev/callback
-
设置你的生产环境变量:
wrangler secret put STRAVA_CLIENT_ID wrangler secret put STRAVA_CLIENT_SECRET
用于开发环境
-
为开发创建一个单独的 Strava API 应用
-
配置你的开发应用:
- Authorization Callback Domain:
localhost - Authorization Callback URL:
http://localhost:8788/callback
- Authorization Callback Domain:
-
在项目根目录创建一个
.dev.vars文件:STRAVA_CLIENT_ID=your_development_strava_client_id STRAVA_CLIENT_SECRET=your_development_strava_client_secret
测试你的 MCP 服务
使用 Inspector
-
安装 Inspector 工具:
npx @modelcontextprotocol/inspector@latest -
连接到你的服务:
- 生产环境:
https://mcp-strava-oauth.<your-subdomain>.workers.dev/sse - 开发环境:
http://localhost:8788/sse
- 生产环境:
使用 Claude Desktop
- 打开 Claude Desktop 并前往 Settings -> Developer -> Edit Config
- 添加你的 MCP 服务配置:
{ "mcpServers": { "strava": { "command": "npx", "args": [ "mcp-remote", "https://mcp-strava-oauth.<your-subdomain>.workers.dev/sse" ] } } } - 重启 Claude Desktop 并完成 OAuth 流程
开发
本地开发
-
启动开发服务器:
wrangler dev -
服务将在
http://localhost:8788上可用
API 速率限制
Strava API 有以下速率限制:
- 每 15 分钟 200 次请求
- 每天 2,000 次请求
工作原理
OAuth 提供商
OAuth 提供商库处理:
- OAuth 2.1 服务端实现
- 令牌签发与验证
- 在 KV 中安全存储令牌
- Strava OAuth 集成
Durable MCP
提供:
- 持久化状态管理
- 安全存储认证上下文
- 通过
this.props访问用户信息 - 条件性工具可用性
MCP Remote
支持:
- 客户端-服务端通信
- 工具定义与管理
- 请求/响应序列化
- SSE 连接维护
故障排除
- 如果你在 Claude Desktop 中看到错误消息,请将鼠标悬停在 🔨 图标上以验证连接
- 对于 Cursor 集成,使用 "Command" 类型并将 command 和 args 合并为一个字符串
- 确保你的回调 URL 与 Strava 应用中配置的完全一致
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。