使用 Rube MCP 与 Composio Strava Toolkit 在 Codex 中自动化 Strava 工作流
【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills
本指南基于 awesome-codex-skills 仓库中的 strava-automation 技能,讲解如何通过 Rube MCP(Composio 的 MCP 网关)让 Codex Agent 以自然语言驱动 Strava 的读取、分析与数据整理等操作。读完本文,你将掌握从连接 Strava 账户、动态发现工具、执行调用到规避常见坑位的完整实操方案,并能把这套「先搜索、再连接、后执行」的通用模式迁移到同一仓库下其他数百个应用自动化技能中。
技能概览:strava-automation 是什么
strava-automation是仓库 composio-skills 目录下众多「xxx-automation」技能之一,其元数据定义在 SKILL.md 的 YAML frontmatter 中:
--- name: strava-automation description: "Automate Strava tasks via Rube MCP (Composio). Always search tools first for current schemas." requires: mcp: [rube] ---这段元数据遵循 Codex Skills 的规范:name标识技能名称,description告诉 Codex 何时触发该技能,requires.mcp声明技能运行依赖名为rube的 MCP 服务器。正如仓库 README.md 所说明的,Codex 会先读取元数据决定是否触发技能,命中后才加载正文,从而保持上下文精简;技能安装到$CODEX_HOME/skills(默认~/.codex/skills)后需重启 Codex 才会被加载。
该技能的作用是:通过 Composio 提供的 Strava toolkit,经 Rube MCP 统一网关调用 Strava 相关能力,将「查询训练记录、汇总运动数据、管理活动信息」等任务转化为可执行的工具调用,全程无需在客户端配置 API Key。
前置条件
开始前需要满足以下三个条件,缺一不可:
- Rube MCP 已连接:客户端配置中存在 Rube MCP 服务器,且
RUBE_SEARCH_TOOLS工具可用,这是后续一切调用的前提。 - Strava 连接处于 ACTIVE 状态:通过
RUBE_MANAGE_CONNECTIONS建立并激活 toolkit 为strava的连接。 - 始终先搜索工具:任何工作流执行前都必须先调用
RUBE_SEARCH_TOOLS获取当前的工具 schema,因为工具契约随时可能变化。
环境搭建:接入 Rube MCP 并激活 Strava 连接
获取 Rube MCP
在 Codex(或其他支持 MCP 的客户端)的配置中添加 MCP 服务器,端点地址为https://rube.app/mcp。该接入方式不需要任何 API Key,添加端点后即可直接使用,这是整个方案中唯一的环境配置动作。
四步激活流程
- 验证可用性:确认
RUBE_SEARCH_TOOLS能正常响应,证明 Rube MCP 已就绪。 - 发起连接:调用
RUBE_MANAGE_CONNECTIONS,指定 toolkit 为strava。 - 完成授权:若返回的连接状态不是 ACTIVE,则按返回的授权链接完成 Strava 账号的 OAuth 授权。
- 状态确认:在任何工作流运行之前,确认连接状态已变为 ACTIVE。
注意:这里的授权是基于 OAuth 的账号级连接,而非传统的 API Key 配置;连接建立后,技能内的工具即可代表该账号执行操作。部分 Strava 能力(如涉及订阅权益的功能)仍受账号本身权限约束,这是平台侧的限制。
工具发现:为什么必须先用 RUBE_SEARCH_TOOLS
工具 schema 会随 Composio 平台更新而变化,硬编码 tool slug 或参数名是导致调用失败的最常见原因。因此技能强制要求在每次工作流执行前先做工具发现:
RUBE_SEARCH_TOOLS queries: [{use_case: "Strava operations", known_fields: ""}] session: {generate_id: true}该调用会返回:
- 当前可用的工具 slug(tool slug)列表;
- 每个工具的输入 schema(字段名、类型、必填项);
- 针对该 use case 的推荐执行计划;
- 已知的坑位提示(known pitfalls)。
首次调用时session.generate_id为true,由系统生成新的会话 ID 用于后续串联;在已有会话中继续操作时,则改为传入既有的session.id。
核心工作流模式:三步调用链
整个技能的核心是一条「搜索 → 连接 → 执行」的三步链路,每一步都有明确的请求体规范。
Step 1:发现可用工具
RUBE_SEARCH_TOOLS queries: [{use_case: "your specific Strava task"}] session: {id: "existing_session_id"}把use_case替换为你的具体 Strava 任务描述(例如「获取最近活动列表」或「按时间范围汇总骑行数据」),并复用当前工作流的会话 ID。返回结果中的 tool slug 将作为第三步的执行依据。
Step 2:检查连接状态
RUBE_MANAGE_CONNECTIONS toolkits: ["strava"] session_id: "your_session_id"在执行任何工具前确认stravatoolkit 的连接状态为 ACTIVE。若为其他状态,应返回 Setup 流程重新授权,而不是继续执行。
Step 3:执行工具
RUBE_MULTI_EXECUTE_TOOL tools: [{ tool_slug: "TOOL_SLUG_FROM_SEARCH", arguments: {/* schema-compliant args from search results */} }] memory: {} session_id: "your_session_id"tool_slug必须来自 Step 1 搜索结果,不能凭记忆硬编码;arguments必须严格遵循搜索返回的 schema(字段名、类型、必填项);memory参数必须始终携带,即使为空也要传{};session_id贯穿同一工作流的全部调用。
已知坑位详解
技能的 SKILL.md 列出了六条实战中反复出现的坑位,逐条说明如下:
| 坑位 | 说明 | 规避方式 |
|---|---|---|
| 先搜索再执行 | 工具 schema 会变,硬编码 slug 或参数必然出错 | 每次执行前都调用RUBE_SEARCH_TOOLS获取最新 schema |
| 检查连接 | 连接失效时调用会静默失败或报鉴权错误 | 执行前用RUBE_MANAGE_CONNECTIONS确认 ACTIVE 状态 |
| Schema 合规 | 字段名或类型不符会直接导致调用被拒 | 严格使用搜索结果返回的精确字段名与类型 |
| memory 参数 | 漏传memory会导致RUBE_MULTI_EXECUTE_TOOL调用失败 | 即使无状态也要显式传{} |
| 会话复用 | 同一工作流内换 ID 会丢失上下文与连接绑定 | 同一工作流复用 session ID;新工作流才生成新 ID |
| 分页处理 | 数据量大的响应会分页返回,不处理就取不完整 | 检查响应中的分页 token,持续拉取直至取完 |
这六条不仅适用于 Strava,也适用于仓库 composio-skills 下所有xxx-automation技能——它们是共享同一套 Rube MCP 协议的通用约束。
快速参考
以下是技能内置的操作速查表,覆盖日常五种操作场景:
| 操作 | 方式 |
|---|---|
| 查找工具 | RUBE_SEARCH_TOOLS,传入 Strava 相关的 use case |
| 建立连接 | RUBE_MANAGE_CONNECTIONS,toolkit 为strava |
| 执行工具 | RUBE_MULTI_EXECUTE_TOOL,使用搜索到的 tool slug |
| 批量操作 | RUBE_REMOTE_WORKBENCH,配合run_composio_tool() |
| 获取完整 schema | RUBE_GET_TOOL_SCHEMAS,用于返回schemaRef引用的工具 |
进阶:完整 Schema 与批量执行
当搜索结果中工具带有schemaRef(即 schema 以引用形式返回,而非内联展开)时,需要使用RUBE_GET_TOOL_SCHEMAS单独拉取完整 schema,确保参数构造准确。
当需要批量执行多个 Strava 操作(例如循环处理一组活动并逐项写入结果)时,可改用RUBE_REMOTE_WORKBENCH并调用其中的run_composio_tool()函数,在远程工作台环境中以代码方式编排工具调用,适合需要循环、条件分支或结果聚合的场景。
生态横向参考:同一模式覆盖数百个应用
strava-automation并不是孤例。仓库 composio-skills 下存在数百个结构完全一致的自动化技能(覆盖广告、CRM、邮件、财务、开发者工具等众多领域),它们共享同一套 Rube MCP 协议与「先搜索 → 再连接 → 后执行」的三步模式,差异仅在 toolkit 名称与 use case 描述。
以结构更完整的 spotify-automation 技能 为参照可以更直观地理解这套模式的落地形态:连接激活后,SPOTIFY_*系列工具即可用,随后可按「工具 + 参数表」的方式编排具体操作(如搜索目录、管理歌单)。同理,Strava 连接激活后,实际可用的工具 slug 与参数应以RUBE_SEARCH_TOOLS返回为准,技能文档刻意不写死具体 slug,正是为了对抗 schema 漂移。这种「文档给模式、运行时给 schema」的设计,保证了数百个技能在平台演进中仍能保持可用。
安装到 Codex
该技能位于仓库内,安装方式与仓库其他技能一致:
- 推荐方式:使用仓库自带的 skill-installer 脚本,通过 install-skill-from-github.py 拉取并安装到
$CODEX_HOME/skills/strava-automation:python skill-installer/scripts/install-skill-from-github.py --repo <owner>/awesome-codex-skills --path composio-skills/strava-automation - 手动方式:将
composio-skills/strava-automation目录复制到$CODEX_HOME/skills/(默认~/.codex/skills/),重启 Codex 加载元数据即可。
安装完成后重启 Codex,在会话中自然描述 Strava 相关任务,Codex 会根据 frontmatter 中的description自动触发该技能。
小结
strava-automation技能的本质,是用一份轻量指令把「Strava 自动化」封装成 Codex 可触发、可执行的确定性流程:接入零配置的 Rube MCP 网关,通过RUBE_SEARCH_TOOLS动态发现工具契约,用RUBE_MANAGE_CONNECTIONS维护 OAuth 连接,最终以RUBE_MULTI_EXECUTE_TOOL完成调用,并以「先搜索、带 memory、复用会话、处理分页」四条铁律规避最常见的失败模式。掌握这一模式后,你不仅能够自动化 Strava 工作流,也能零成本迁移到仓库中其余数百个xxx-automation技能,构建跨应用的统一自动化能力。
【免费下载链接】awesome-codex-skillsA curated list of practical Codex skills for automating workflows across the Codex CLI and API.项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-codex-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考