Strava活动查询服务器

通过自然语言查询Strava活动的AI驱动服务器,支持数据同步、分析和多工具集成。

  • by joshdurbin
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 joshdurbin/strava-mcp

使用说明

Strava MCP

MCP服务器,用于通过LLM查询Strava活动。采用人工智能优先原则设计自然语言查询。

特性

  • 将Strava API的活动同步到本地SQLite数据库
  • 用于自动令牌刷新和活动同步的后台工作人员
  • 11种基于意图的MCP工具,具有人工智能友好的见解
  • HTTP/SSE传输(LM Studio)或stdio(Claude Desktop)
  • 区域数据同步(需要Strava Summit订阅)

需求

  • 转到1.24+
  • Strava API证书
  • Strava Summit订阅(可选,用于区域数据)

设置

1.获取Strava API证书

  1. 首选https://www.strava.com/settings/api
  2. 创建应用程序
  3. 注意客户端ID和客户端密码
  4. 将授权回调域设置为 localhost

2.建造

make build
# or
go build -o strava-mcp .

3.跑步

./strava-mcp

第一次运行时,系统将提示您输入Strava API凭据并通过浏览器进行身份验证。凭证和令牌存储在SQLite数据库中并自动刷新。

CLI选项

Usage:
  strava-mcp [flags]

Flags:
      --db string                    path to SQLite database file (default "strava_activities.db")
      --force-reauth                 force OAuth re-authentication, clearing existing tokens
  -h, --help                         help for strava-mcp
      --no-sync                      run MCP server only without Strava API sync (offline mode)
  -p, --port int                     MCP server port (0 for stdio mode) (default 8080)
      --sync-interval duration       interval between activity syncs (default 15m0s)
      --token-refresh-interval duration   interval between token refresh checks (default 30m0s)
  -v, --verbose count                increase verbosity (-v for debug, -vv for trace with HTTP headers)

MCP客户端配置

LM工作室(HTTP/SSE)

使用默认端口运行:

./strava-mcp

在LM Studio中配置:

{
  "mcpServers": {
    "strava": {
      "url": "http://127.0.0.1:8080/"
    }
  }
}

克劳德桌面(stdio)

使用stdio传输运行:

./strava-mcp --port 0

在Claude桌面中配置(claude_desktop_config.json):

{
  "mcpServers": {
    "strava": {
      "command": "/path/to/strava-mcp",
      "args": ["--port", "0"]
    }
  }
}

离线模式

在没有Strava API连接的情况下运行(使用现有数据库):

./strava-mcp --no-sync

示例问题

问你的法学硕士这些问题-MCP工具将自动使用:

进展与趋势

  • “我跑得更快了吗?”
  • “在过去的三个月里,我的速度有什么改善?”
  • “今年我的距离趋势是什么?”

训练负荷

  • “我训练过度了吗?”
  • “本周与我的平均水平相比如何?”
  • “我每周的工作量是多少?”

个人记录

  • “我骑自行车的PR是什么?”
  • “我有史以来跑得最长的是什么?”
  • “显示我最快的活动”

活动搜索

  • “显示我的最新活动”
  • “找到我今年骑行时间最长的地方”
  • “我上周做了什么?”

区域分析(需要Strava峰会)

  • “我在2区要花多少时间?”
  • “分析我的心率区域”
  • “我训练的强度合适吗?”

比较

  • “将本月与上月进行比较”
  • “今年和去年相比怎么样?”

每周总结

  • “我的一周过得怎么样?”
  • “这周我训练了什么?”

可用工具

活动搜索

工具 说明
find_activities 具有特殊查询(最新/最旧/最快/最长)、过滤器(类型/日期)和排序的统一活动搜索

汇总和总结

工具 说明
count_activities 活动计数,可选择按类型/月/周分组
get_training_summary 综合训练统计数据(距离、持续时间、速度、心率、卡路里、海拔高度)
get_week_summary 当前/上周活动和总计明细

分析和见解

工具 说明
compare_periods 两个时间段的并排比较,百分比变化
analyze_progress 趋势检测-回答“我变快了吗?”
check_training_load 每周交易量分析-回答“我训练过度了吗?”
get_personal_records 各类别个人最佳成绩(最快、最长、卡路里最多)

指标

工具 说明
get_metrics_summary 详细指标(距离/持续时间/速度/心率/卡路里/节奏/海拔)

区域(需要斯特拉瓦峰会)

工具 说明
get_activity_zones 特定活动的心率和功率区
analyze_zones 具有80/20培训见解的汇总区域统计数据

工具响应格式

所有工具返回结构化响应,包括:

  • 数据:所要求的信息
  • 洞察:对数据的人工智能友好观察
  • 建议操作:建议的后续工具调用

发展

make build      # Build binary
make test       # Run tests
make test-cover # Run tests with coverage
make generate   # Regenerate sqlc code
make vet        # Run go vet
make deps       # Tidy dependencies

数据库迁移

数据库迁移是通过以下方式管理的 鹅。迁移文件位于 sql/migrations/ 作为SQL文件 -- +goose Up 和 -- +goose Down 注释。

迁移在启动时自动运行。

许可证

麻省理工学院