Strava数据访问服务器

一个用于访问Strava数据的单用户服务器,提供获取活动、分析性能趋势和获取运动员统计信息的功能,并支持实时Webhook。

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

使用说明

Strava MCP服务器

用于访问Strava数据的模型上下文协议(MCP)服务器。此单用户服务器提供工具来获取活动、分析性能趋势,并通过实时webhook支持获取运动员统计数据。

建造于 @madebydia

特性

  • 获取活动:使用日期范围和运动类型筛选器列出最近的活动
  • 活动详情:获取详细信息,包括分割、分段和地图数据
  • 运动员统计:查看历史统计数据(最近、今年迄今和历史总计)
  • 搜索活动:查找符合特定条件的活动
  • 分析趋势:分析各种指标随时间的性能趋势
  • 实时Webhooks:在创建、更新或删除活动时获取即时通知

建筑学

  • 运行时:Node.js/TypeScript
  • 框架:MCP SDK(@modelcontextprotocol/SDK v1.29.0)
  • 运输:StreamableHTTP(SSE)用于铁路部署,stdio用于本地开发
  • API客户端:Node.js原生Fetch API
  • 令牌存储:环境变量被播种到持续的铁路量中
  • 认证:OAuth 2.0
  • 会话管理:基于UUID的会话ID mcp-session-id 头球

设置

先决条件

  • Node.js>=20.0.0
  • 斯特拉瓦账户
  • Strava API应用程序证书

1.创建Strava应用程序

  1. 首选https://www.strava.com/settings/api
  2. 创建新应用程序:
    • 应用程序名称:您的选择(例如,“个人MCP服务器”)
    • 类别:健身应用程序
    • 授权回调域: localhost (用于初始设置)
  3. 注意你的 客户端ID 和 客户端密钥

2.获取OAuth令牌(本地设置)

# Install the exact locked dependencies without lifecycle scripts
npm ci --ignore-scripts

# Set your Strava credentials
export STRAVA_CLIENT_ID=your_client_id
export STRAVA_CLIENT_SECRET=your_client_secret

# Run the OAuth setup script
npm run setup-auth

这将:

  1. 打开浏览器窗口进行Strava授权
  2. 启动本地服务器以捕获OAuth回调
  3. 显示您的令牌以复制到Railway

3.部署到铁路

  1. 在上创建新项目 铁路
  2. 连接您的GitHub存储库
  3. 在Railway中添加以下环境变量:
STRAVA_CLIENT_ID=your_client_id
STRAVA_CLIENT_SECRET=your_client_secret
STRAVA_ACCESS_TOKEN=from_setup_script
STRAVA_REFRESH_TOKEN=from_setup_script
STRAVA_EXPIRES_AT=from_setup_script
STRAVA_TOKEN_FILE=/data/strava-tokens.json
USE_SSE=true
PORT=3000
WEBHOOK_VERIFY_TOKEN=your_random_secure_string  # Optional, only if using webhooks
  1. 在以下位置附上持久的铁路卷 /data 因此,旋转的Strava令牌在部署后不会写入日志
  2. 部署应用程序
  3. 一旦部署,Railway将为您提供一个URL(例如。, https://your-app.up.railway.app)

4.连接到Poke.com

部署到Railway后,您可以将Strava MCP服务器连接到Poke.com:

  1. 首选 Poke.com

  2. 导航到“连接”→ 添加集成→ 自定义集成

  3. 点击“添加服务器”或“添加MCP服务器”

  4. 输入您的铁路SSE端点URL:

    https://your-app.up.railway.app/sse
    

    替换 your-app.up.railway.app 使用您的实际铁路域名

  5. 给它起个名字,比如“斯特拉瓦”,然后保存

  6. 服务器现在应该已连接并在Poke.com中可用

注: 服务器URL必须以结尾 /sse -这是维护连接的服务器发送事件端点。

克劳德桌面(stdio模式)

  1. 完成 设置 获取OAuth令牌的上述步骤
  2. 构建项目: npm run build
  3. 编辑您的Claude Desktop配置:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 视窗`%APPDATA%\Claude