🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

COROS 接入修复 red-tassel-zhang/dsh-coros-mcp

DeepSeek Harness
red-tassel-zhang16 天前有提交已提供中文文档扫描:含敏感能力

修复 COROS 工具 Schema,避免整轮对话报错

28.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add red-tassel-zhang/dsh-coros-mcp
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · other
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 16 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
  • 读取本地文件
    coros-mcp-proxy.js:61
    if (existsSync(candidate)) return candidate;
  • 执行外部命令来自配置/变量
    coros-mcp-proxy.js:145
    ? spawn(process.execPath, [npxCli, '-y', MCP_REMOTE_SPEC, url, ...extraArgs], {
  • 执行外部命令来自配置/变量
    coros-mcp-proxy.js:150
    : spawn(
扫描于 2026/11/4(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把 COROS 官方 MCP 接进 DeepSeek Harness:一个 100 行的 $defs 提升代理,解开 Pointer '/$defs/Section' does not exist 导致的整轮 400

README

由 DeepSeek 最新模型翻译生成
dsh-coros-mcp 把 COROS 官方 MCP 接进 DeepSeek Harness(DSH)的完整方案 + 踩坑实录。 一句话:COROS 官方 MCP 的 6 个写工具 JSON Schema 不合规,会让整轮对话直接失败(不是那个工具失败,是这一轮全部 400)。本仓库提供一个 100 行、零依赖的 stdio 代理把它修掉,外加一份可以照抄的接入教程。 Invalid schema for function 'mcp__coros__createScheduledWorkout': Pointer '/$defs/Section' does not exist 如果你在别的地方见过这句报错,找对地方了。
展开完整文档(README 剩余 1 节)
dsh-coros-mcp

把 COROS 官方 MCP 接进 DeepSeek Harness(DSH)的完整方案 + 踩坑实录。

一句话:COROS 官方 MCP 的 6 个写工具 JSON Schema 不合规,会让整轮对话直接失败(不是那个工具失败,是这一轮全部 400)。本仓库提供一个 100 行、零依赖的 stdio 代理把它修掉,外加一份可以照抄的接入教程。

Invalid schema for function 'mcp__coros__createScheduledWorkout':
Pointer '/$defs/Section' does not exist

如果你在别的地方见过这句报错,找对地方了。

下载这两个文件就能用

| 文件 | 用途 | 直链 |
| coros-mcp-proxy.js | 唯一需要下载的代码,零依赖、单文件 | [下载][dl-proxy] |
| cordis.patch.yml | 合并进 profile 的配置片段 | [下载][dl-patch] |

[dl-proxy]: https://raw.githubusercontent.com/red-tassel-zhang/dsh-coros-mcp/main/coros-mcp-proxy.js
[dl-patch]: https://raw.githubusercontent.com/red-tassel-zhang/dsh-coros-mcp/main/cordis.patch.yml

不需要 clone,也不需要 npm install。具体往哪放、怎么改,见 30 秒接入。

目录

- 下载这两个文件就能用
- 为什么需要这个仓库
- 官方资料
- 30 秒接入
- 原理:为什么必须是两层
- 代理做了什么
- 验证
- 仓库结构
- 排错
- 什么时候可以直接删掉这个代理
- 已知局限

为什么需要这个仓库

两个独立的问题,缺一个都跑不起来:

问题 1:鉴权 COROS 只提供 OAuth 2.0 保护的远程 MCP(https://mcpcn.coros.com/mcp,另有 mcpeu / mcpus)。
而 DSH 的 dsh-mcp-client 只支持 stdio 与 streamable-http,后者只能加静态 headers,没有 OAuth 授权流程。
→ 需要一个本地桥来做 OAuth 登录 / token 刷新,社区现成方案是 mcp-remote。

问题 2:Schema 不合规 COROS 服务端把 $defs 写在子 schema 内部,$ref 却按文档根去指:

{
"type": "object",
"properties": {
"course": {
"$defs": { "Section": { /* ... / } }, // ← 嵌在这里
"properties": {
"sections": { "items": { "$ref": "#/$defs/Section" } } // ← 却指文档根
}
}
}
}

表示文档根,根上没有 $defs → 指针解析失败。
→ 需要一层能在 schema 到达模型之前把它修好的东西。

受影响的是 6 个工具,全是写操作(读操作都正常,所以现象是"看数据没事,一做课表就炸"):

| 工具 | 用途 |
| createScheduledWorkout | 在某天新建课表 |
| updateScheduledWorkout | 改某天的独立课表 |
| createTrainingPlan | 新建训练计划 |
| updateTrainingPlan | 改训练计划 |
| createSingleWorkout | 新建课表模板(库) |
| updateWorkoutDetails | 改课表模板(库) |

官方资料

COROS 官方提供了 MCP 接入,官方自述是「主要运动手表品牌首个官方支持的 MCP」。对外只给两条路径:HTTP OAuth URL 或 Skill(npm install -g coros-mcp),公开支持的平台是 WorkBuddy、ChatGPT、豆包、Claude、OpenClaw。

COROS 官方公告:支持的 AI 平台与两种接入方式

- 官方推文(微信公众号):COROS MCP 介绍 —— 微信文章,需在微信内打开,可能要求过验证
- 官方仓库与接入指南:coroslab/COROS-MCP
- 官方网关:<https://mcp.coros.com/mcp>

这份列表里没有 DeepSeek Harness;而 DSH 的 dsh-mcp-client 也不支持需要 OAuth 授权的远程 MCP —— 这正是下面两个问题的来历。

截图与链接版权归 COROS 所有,此处仅作事实引用。

30 秒接入

1. 先脱离 DSH,确认 OAuth 能通

npx -y mcp-remote@0.14.3 https://mcpcn.coros.com/mcp
浏览器登录 COROS。成功时 stderr 会打印 Proxy established successfully between local STDIO and remote StreamableHTTPClientTransport。
登录态落在 ~/.mcp-auth/mcp-remote-v1/(带 offline_access,30 天有效且能自动续)。

2. 把代理放到一个固定位置

只需要 coros-mcp-proxy.js 这一个文件,零依赖,放哪都行——建议放在不会被清理的地方,比如 ~/.dsh/coros-proxy/:

curl -O https://raw.githubusercontent.com/red-tassel-zhang/dsh-coros-mcp/main/coros-mcp-proxy.js

3. 写进 profile 的 patch 层

文件:<DSH_HOME>/profiles/<profile>/cordis.patch.yml(顶层是 YAML 数组)

- insert:
- id: mcp-coros
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: coros
transport: stdio
command: node
args:
- '/绝对路径/coros-mcp-proxy.js'
- 'https://mcpcn.coros.com/mcp'
toolCallTimeoutMs: 120000

Windows 上 command: node 建议写成 node.exe 的绝对路径(例如 C:/Program Files/nodejs/node.exe),避免 PATH 里没有。

4. 重启 DSH

插件树只在启动时结算,刷新页面没用。重启后工具会以 mcp__coros__<tool> 出现。

原理:为什么必须是两层

DSH
└─ dsh-mcp-client(stdio row,serverName: coros) └─ coros-mcp-proxy.js ← 本仓库:修 schema + 透传 └─ npx mcp-remote ← 社区桥:OAuth 登录 / 刷新 / token 缓存 └─ https://mcpcn.coros.com/mcp ← COROS 官方远程 MCP

两层的职责不可合并:mcp-remote 解决「怎么登录」,代理解决「schema 不合规」。

为什么不直接实现成 DSH 插件?
因为那等于 fork 一份 dsh-mcp-client(要自己实现握手、tools/list、tools/call、content 投影、超时与取消),换来的只是「配置从一行 YAML 加一个 .js 变成纯 YAML」。而这个代理解决的是通用问题,任何 MCP 客户端(Claude Desktop、Cursor、自研)都能用,不该绑死在一个宿主上。

代理做了什么

只有两件事:

1. 拦截 tools/list 的响应,把每个工具 inputSchema 里嵌套的 $defs 提升到根;同名冲突时改名(Name$nested)而不是覆盖。
2. 其余所有消息逐字节透传,包括 tools/call 的参数体(那里面全是用户数据,不该被碰)。

不碰 token、不联网、不落盘。启动方式:

node coros-mcp-proxy.js <mcp-url> [传给 mcp-remote 的额外参数...]

可用环境变量:

| 变量 | 作用 |
| MCP_REMOTE_NPX_CLI | 手动指定 npx-cli.js 路径(找不到时用) |
| MCP_REMOTE_SPEC | 覆盖 mcp-remote 的版本,默认 mcp-remote@0.14.3 |

代理在改写任何 schema 时会把工具名打到 stderr,方便确认它真的生效了。

验证

最小验证是拿到真实数据,不是「工具出现了」:

调用 mcp__coros__queryUserInfo → 返回身高/体重/生日等资料调用 mcp__coros__queryRecoveryStatus → 返回恢复百分比调用 mcp__coros__querySleepOverview → 返回最近睡眠

再验证写操作(这才是原本会炸的那一半):

调用 mcp__coros__createScheduledWorkout / updateScheduledWorkout

仓库结构

.
├── coros-mcp-proxy.js # ← 唯一需要下载的代码:$defs 提升代理(零依赖) ├── cordis.patch.yml # ← 要合并进 profile 的配置片段 ├── test/ │ └── hoist.test.js # 核心逻辑单测(node:test,6 个用例) ├── docs/ │ ├── tutorial.md # 完整接入教程:分步、排错表、回滚、方法论 │ └── assets/ # 文档里用到的图 ├── promo/ # 推广素材,跟使用无关(视频、封面、生成脚本) └── README.md

跑一遍单测(不需要网络、不需要 DSH):

node --test test/hoist.test.js

排错

| 症状 | 原因 | 处理 |
| Pointer '/$defs/Section' does not exist,整轮失败 | schema 缺陷被 API 严格校验 | 确认代理在链路上;或临时只留读工具 |
| 工具列表里没有 mcp__coros__ | 行没生效 / 未登录 / 启动失败 | 单独跑一次 npx -y mcp-remote@0.14.3 <url> 确认登录 |
| spawn npx ENOENT / EINVAL | Windows 下 npx 解析到无扩展名脚本 | 代理已内置解析,或用 MCP_REMOTE_NPX_CLI 指定 |
| 调用超时 | toolCallTimeoutMs 默认 60s | 调到 120000 |
| 授权过期 | refresh_token 失效 | 手动跑一次 mcp-remote 重新登录 |
| 换了机器失效 | 配置里写死了路径 | 改 command 与 args[0] |

更多细节见 docs/tutorial.md。

什么时候可以直接删掉这个代理

COROS 把 $defs 挪到根之后。 判断标准只有一条:

不挂代理重启一次,直接调 mcp__coros__createScheduledWorkout,不报 schema 错。

那时候配置可以缩成:

- insert:
- id: mcp-coros
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: coros
transport: stdio
command: npx
args: ['-y', 'mcp-remote@0.14.3', 'https://mcpcn.coros.com/mcp']
toolCallTimeoutMs: 120000

已知局限

- 只修 inputSchema。outputSchema 不需要修:dsh-mcp-client 对它能解析则用、不能解析则回退 JsonValue,不会让请求失败。
- 依赖 mcp-remote 的 OAuth 实现。它自己维护 ~/.mcp-auth/ 的 token 缓存;coros-mcp CLI 用的是另一套 ~/.coros-mcp-skill-gateway-ts/,两者不通用("CLI 登录过了" ≠ "mcp-remote 登录过了")。
- 每次启动多 3~5 秒:npx 解析 + OAuth 发现 + tools/list。
- 这个代理是等宽补丁,不是通用 JSON Schema 规范化器;它只处理"$defs 嵌在子 schema 里、$ref 指向文档根"这一种模式。
- 与 COROS / DeepSeek 官方无隶属关系,仅为个人集成记录。

参与

| 参与者 | 角色 | 做了什么 |
| red-tassel-zhang | 维护者 | 提出思路、在真机上验证、拍板取舍、发布 |
| DeepSeek Harness | 协作智能体 | 撞上报错并定位 $defs 根因、写代理与测试、起草教程与视频脚本 |

如实记一笔:这个方案是人机协作做出来的——报错是它先撞上的,代理是它先写的,文档和视频脚本是它先起草的,人负责判断哪儿该改、哪儿该停。

需要说明的是,这只表示本仓库在 DeepSeek Harness 这个智能体的协助下完成, 不代表 DeepSeek 官方对本仓库的背书,也不代表 COROS 认可这套做法。
COROS、DeepSeek Harness 及相关商标、截图版权归各自所有者。

想复现同样的协作方式:把 docs/tutorial.md 和本文档一起喂给它,让它照着踩一遍坑。

License

MIT

推广素材

跟使用无关,单独放在 promo/ 里:两分钟视频、封面、生成脚本。

- promo/promo.mp4 —— 能当教程看的两分钟视频:症状 → 根因 → 架构 → 下载 → 写配置 → 重启 → 验证 → 排错,走完就等于装完
- promo/cover.png —— 封面(也用作仓库社交预览图)
- promo/README.md —— 想改文案的话怎么重跑
预览分享卡片长什么样 ↓red-tassel-zhang/dsh-coros-mcp
分享 · DeepSeek Harness Hub
red-tassel-zhang/dsh-coros-mcp

修复 COROS 工具 Schema,避免整轮对话报错

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部