Strava MCP服务器

基于Cloudflare Workers的Strava模型上下文协议(MCP)服务器,提供Strava API集成和OAuth认证功能,适用于运动数据分析和管理。

  • by iAgar
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 iAgar/Strava-MCP

使用说明

Strava MCP服务器(Cloudflare Workers)

Strava的模型上下文协议(MCP)服务器,基于Cloudflare Workers构建,具有适当的MCP OAuth。用户通过Strava使用标准的“与Strava连接”流程进行身份验证,而不是手动复制会话ID。

特性

  • 8 Strava工具:
    • get_athlete_profile:全面的用户元数据。
    • get_activities:具有丰富字段的可筛选活动列表。
    • get_activity_details:深入了解具体活动。
    • create_activity:记录手动活动。
    • update_activity:编辑现有活动。
    • get_athlete_stats:所有时间和年初至今总计,包括游泳总计。
    • get_segments:使用半径和活动类型过滤探索附近的细分市场。
    • get_segment_efforts:查看运动员在某段比赛中的表现。
  • 丰富的有效载荷:将Strava API响应转换为具有额外字段的LLM友好对象,如 average_speed, average_heartrate, suffer_score以及更多。
  • 自动认证:MCP OAuth集成允许客户端通过Strava获得身份验证令牌,而无需手动交换凭据。
  • 速率限制:使用响应标头反馈尊重Strava速率限制。
  • Cloudflare员工:在具有MCP持久对象和OAuth状态KV存储的Workers上运行。

设置

1.Strada API应用程序

  1. 首选 Strava设置->我的应用程序.
  2. 创建应用程序或更新现有应用程序。
  3. 设置 授权回调域 到您的工作域(例如 https://your-worker-url.workers.dev 或 http://localhost:8788 在开发过程中)。

2.Cloudflare配置

  1. 克隆此仓库。
  2. 跑 npm install.
  3. 创建一个名为的KV命名空间 OAUTH_KV:
    wrangler kv:namespace create "OAUTH_KV"
    
  4. 复制返回的命名空间ID。
  5. 更新 wrangler.toml 或 wrangler.jsonc 说完这个 OAUTH_KV 身份证件。
  6. 在Cloudflare secrets中设置Strava凭据:
    wrangler secret put STRAVA_CLIENT_ID
    wrangler secret put STRAVA_CLIENT_SECRET
    

3.地方发展

  1. 复制本地vars文件:
    cp .dev.vars.example .dev.vars
    
  2. 更新 .dev.vars 和你一起 STRAVA_CLIENT_ID, STRAVA_CLIENT_SECRET,以及 AUTH_CALLBACK_DOMAIN.
  3. 在本地运行:
    npm run dev
    

4.部署

npm run deploy

来自Claude的连接

在Claude或其他支持MCP的客户端中使用工作者的Streamable HTTP端点。连接器URL应为:

https://your-worker-url.workers.dev/sse

用户第一次与连接器交互时,Strava OAuth将重定向他们登录并授权访问。

开发人员说明

  • AUTH_CALLBACK_DOMAIN 必须为您的回调URL进行配置。
  • .dev.vars 仅用于本地开发,Git会忽略它。
  • 该项目使用 wrangler.jsonc 以及Cloudflare Workers特定的持久对象和KV绑定。

技术细节

  • 运行时:Cloudflare员工
  • 认证: @cloudflare/workers-oauth-provider +MCP OAuth流程
  • 状态:Cloudflare KV用于OAuth状态和会话令牌
  • 代理: McpAgent 从 agents
  • 端点: /sse, /authorize, /callback, /token, /register