我的 MCP 集成被拒了——服务器几乎一行没改
来源:dev.to — 2026-09-07
📋 概述
作者七月要把自家 MCP 服务器加进 ChatGPT 应用目录——服务器早已上线,在 Claude 和 Cursor 里正常运行、OAuth 工作正常,提交看似只是走个形式。一个月后收到一封拒信,服务器本身几乎什么都没改(它全程都在正常工作),真正修的是周边的一切:ChatGPT 如何发现工具、扫描器期望什么、描述里写了什么、审阅者能否真的登录。文章拆解了六类被坑的地方。
🔑 核心要点
- 工具列表会冻成石头:ChatGPT 在创建应用时读工具列表,若当时返回零个工具应用就卡住(零时刷新被禁、保存置灰),只能删了重建——服务器返回零是因为 tools/list 本身就要求 token,而 ChatGPT 在授权前就抓列表,Claude 先登录再抓所以从没暴露
- 扫描器要的注解 spec 并不强制:OpenAI 扫描器要求每个工具给出显式 readOnlyHint/openWorldHint/destructiveHint 值,四个只读工具缺 destructiveHint——按 MCP spec 它只在 readOnlyHint:false 时才有意义,扫描器却照要,于是补上并写了四十多个注解值的理由
- 域名验证要裸字符串且永久存活:期望端点返回裸 token 串而非 JSON;它不是一次性验证端点,得一直留在生产环境按同样方式应答
- 自己抓到了漂移:公共 mcp-server 仓库定义了 18 个工具含四个 LinkedIn 分析工具,线上服务器只暴露 16 个且没有一个分析工具——仓库落后于线上,而应用描述基于仓库,于是在给用户描述一个 MCP 实际拿不到的分析功能;同样的过时描述还散落在 Zed 扩展 README 与 Docker Catalog PR 里
- 被拒的真正原因不在代码:审阅账户用 Google 登录、作者们没想过让审阅者用自己的 Google 账号会撞上自己手机上的二次验证——修法是建独立审阅账号并预确认,加 30 行 publora-playground 假发布目标让审阅者能走完整发布流程而不弄脏真实时间线,重投后获批
💡 金句
Go through the product as the reviewer, not as yourself.
👍 0
👎 0
← 返回 dev.to 首页