关于 SisRUN Training Plan
SisRUN Training Plan 是一款非官方、只读的 MCP 服务,可为 AI 助手获取并整理用户的 SisRUN 训练计划。它提供计划训练和已匹配的活动详情;当网站的距离字段不完整时,还会根据结构化训练步骤推算计划距离。
主要功能
- 01获取当前周或指定周的训练
- 02列出即将进行的计划训练
- 03提供配速、心率区间和训练结构
- 04附带教练备注及匹配的活动数据
- 05根据训练步骤推算计划距离
适用场景
- 01询问 AI 助手本周安排了哪些训练
- 02查看后续训练及其配速或心率范围
- 03对照计划训练与已匹配的完成记录
MCP 相关
该服务向 MCP 客户端提供 `get_current_week()`、`get_week(date)` 和 `get_upcoming(weeks_ahead=1)`。它使用用户凭据读取 SisRUN 页面,不会修改账户数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
3收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
sisrun-mcp
🇧🇷 下方提供葡萄牙语版本
非官方 MCP 服务,可将你的 SisRUN(appsisrun.com.br)训练计划提供给 Claude 等 AI 助手,这样你就可以询问“教练这周给我安排了什么?”,并获得结构化答案。
SisRUN 没有公开 API,因此本工具会使用你自己的凭据读取你在浏览器中看到的相同网页,并将其解析为结构化训练数据。本工具仅供读取,不会向 SisRUN 写入任何内容。
工具
| 工具 | 返回内容 |
|---|---|
get_current_week() | 当前一周的所有训练记录 |
get_week(date) | 包含某个 ISO 日期(YYYY-MM-DD)的一周 |
get_upcoming(weeks_ahead=1) | 从今天起已安排但尚未完成的训练 |
每条训练记录包含:日期、状态(Proposto = 已安排,Feito = 已完成,Feito Avulso = 自动导入,未安排)、训练类型、计划距离、配速和心率范围、教练整理的训练内容(热身、重复训练、恢复)、教练备注,以及 SisRUN 匹配到的实际完成情况(日期、距离、时间、平均心率、千卡;SisRUN 会自动导入你的 Garmin/Strava 活动)。
planned_km 与 distance_km: 对所有间歇、爬坡和基于时间的训练,SisRUN 自带的 Distância 字段均为空;在间歇训练日,该字段也只统计重复训练部分。对该字段求和会使实际训练计划距离少算约 35%(SisRUN 自带的“Evolução Semanal”面板也存在同样的问题)。planned_km 会根据教练整理的训练内容计算准确距离,并展开 Repetir Nx 区块;planned_km_is_est: "yes" 表示有时间限制的训练步骤必须按假定配速换算。
安装
uvx sisrun-mcp # zero-install run from PyPI
# or
pipx install sisrun-mcp
# or straight from GitHub
uvx --from git+https://github.com/cdutr/sisrun-mcp sisrun-mcp
凭据
你自己的 SisRUN 登录凭据(教练提供给你的那组)。可以使用环境变量:
export [email protected]
export SISRUN_PASSWORD=yourpassword
也可以使用凭据文件:
mkdir -p ~/.sisrun
cat > ~/.sisrun/credentials <<'EOF'
[email protected]
password=yourpassword
EOF
chmod 600 ~/.sisrun/credentials
⚠️ 密码以明文形式存储。 SisRUN 不提供令牌或 OAuth 机制,因此没有更好的选择。请将文件权限设为 chmod 600,并且绝不要提交该文件。
Claude Desktop / Claude Code 配置
{
"mcpServers": {
"sisrun": {
"command": "uvx",
"args": ["sisrun-mcp"]
}
}
}
调试
无需使用任何 MCP 客户端,即可获取并打印当前一周的训练:
python -m sisrun_mcp selftest
如果结果中出现关于缺少详细信息面板的 warning,则表示 JSF 表单状态的累积逻辑出现回归。请附上输出内容提交 issue(其中不包含凭据)。
工作原理(供感兴趣的读者参考)
SisRUN 使用 JSF + PrimeFaces 8.0。每个请求都携带 javax.faces.ViewState 令牌,所有组件 ID 均由服务器生成:每次重新部署都会变化,因此本工具不会将其写死。按钮通过稳定且由人工设置的 title 属性定位,并从每个响应中重新读取 ViewState。容易忽略的一点是,日期详情面板是折叠面板,只有当请求携带其展开状态(在多次页面跳转间累积)以及 javax.faces.partial.execute=@all 时,服务器才会渲染面板。否则,你会在不知情的情况下只获取到没有训练计划详情的摘要记录。请参阅 client.py 中的注释。
客户端刻意保持礼貌:每个请求仅获取一周的数据,间隔 0.6 s,并在进程内缓存每周的 HTML。
参与贡献
欢迎用英语或葡萄牙语提交错误报告、功能建议和 PR。请参阅 CONTRIBUTING.md。
状态与免责声明
- 非官方。 与 SisRUN 无关联,未获其认可或支持。SisRUN 更改网站时,本工具可能会失效;欢迎提交 issue 和 PR。
- 仅限你的数据。 本工具使用你自己的凭据访问你自己的训练计划,这与 LGPD 赋予你的数据可携带权一致。请勿用于访问他人账户,并遵守 SisRUN 的服务条款。
- 自 2026-07 起在真实账户上测试。Python ≥ 3.10,只有一个依赖项(
mcp)。
葡萄牙语(pt-BR)
非官方的 MCP 服务,可将你的 SisRUN 训练计划表(appsisrun.com.br)提供给 Claude 等 AI 助手使用。你可以询问“教练这周安排了什么训练?”,并获得结构化的训练信息:状态(已安排 / 已完成 / 额外完成)、距离、配速和心率区间、训练结构(热身、间歇、恢复)、教练的备注,以及 SisRUN 关联为已完成的训练(SisRUN 会自动导入你的 Garmin/Strava 活动)。
SisRUN 没有公开 API,因此该服务会使用你自己的凭据读取你在浏览器中看到的相同页面。它是只读的:绝不会向 SisRUN 写入任何内容。
工具: get_current_week()(当前周)、get_week(date)(指定日期所在周)、get_upcoming(weeks_ahead)(未来几周已安排的训练)。
安装:
uvx sisrun-mcp
# ou
pipx install sisrun-mcp
凭据: 使用你自己的 SisRUN 登录信息,通过环境变量(SISRUN_EMAIL / SISRUN_PASSWORD)或文件 ~/.sisrun/credentials 提供:
[email protected]
password=suasenha
chmod 600 ~/.sisrun/credentials
⚠️ 密码会以纯文本形式保存。 SisRUN 不提供令牌或 OAuth,因此没有更好的选择。请使用 chmod 600 限制文件权限,且绝不要提交该文件。
关于 planned_km: SisRUN 自带的 距离 字段在所有间歇、爬坡或按时间安排的训练中都为空;在间歇训练日,它只统计重复次数。对该列求和会使实际安排的距离被低估约 35%(SisRUN 自带的“每周进度”面板也有同样的错误)。planned_km 根据教练的结构化训练安排计算准确的距离,并展开 重复 Nx 区块。
注意: 本项目与 SisRUN 无关联、未获其认可,也不受其支持。网站变更时项目可能会失效(欢迎提交 issues 和 PRs)。它只会使用你的凭据访问你的数据,这与 LGPD 赋予你的数据可携权相同。请勿用于非本人账户,并遵守 SisRUN 的使用条款。
无需 MCP 客户端即可调试:python -m sisrun_mcp selftest 会以 JSON 格式输出当前周的训练。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。