上架流程:注册 → 开发 → 提交 → 审核 → 上架
当前为自助提交 + 人工审核制:服务端四道校验自动过卡,通过后人工审核,通过即并入目录即刻生效。
要点(30 秒)
- 两条提交通道(按包形态选其一)。
- 服务端四道卡:提交即校验,不过关不进人工。
- 审核标准明文(什么会被拒)——上架被打回的高频原因前置。
- 上架前自检清单:本地先跑一遍再提交。
展开全文(完整表格 / 代码 / 细节)
一、全流程
| 阶段 | 你要做什么 | 系统做什么 |
|---|---|---|
| ① 注册 | 无需注册账号。作者信息随提交填写(author + contact)。 | — |
| ② 开发 | 按快速开始与开发规范实现 MCP 服务(自带服务器、公网 https、只读工具)。 | — |
| ③ 自检 | 跑一遍自检清单(三条 curl + 字段合规)。 | — |
| ④ 提交 | 网页提交(市场站)或 app 内对话提交(见下)。 | 四道卡现场校验,全过进入审核队列。 |
| ⑤ 审核 | 等待;状态可查。 | 人工审核:服务可达、工具清单与描述相符、不碰敏感数据边界。 |
| ⑥ 上架 | — | 并入 registry.json 即刻生效,用户可搜可装。 |
| ⑦ 更新 | 改服务不用重新上架(工具清单以安装后发现为准);目录信息变化重新提交即可。 | 重新走 ④⑤。 |
二、两条提交通道
| 通道 | 入口 | 支持范围 |
|---|---|---|
| 网页提交 | 能力市场「提交工具」页(市场站表单) | byo 自带服务器包:id / 名称 / 简介≤20字 / 分类 / 作者 / 联系方式 / 服务 URL。id 校验口径:小写字母/数字/短横线。 |
| app 内对话提交 | MOV app 对话里说「我要上架工具」,AI 逐项收集、向你复述确认后才提交(market.submit 需要 confirm:true,确认前不会提交) | byo 与 declarative 剧本包。 |
查询进度(app 内):market.submitStatus 带 id → 返回 pending / rejected(附理由)/ approved。网页提交同样可用市场站的审核状态查询。
限流:公开提交端单 IP 每分钟 3 次、队列上限 100 条,超限返回 429;提交动作进审计(IP 记段)。请自检通过后再提交。
三、服务端四道卡(提交即校验)
| # | 校验 | 不过的典型表现 |
|---|---|---|
| 1 | 字段齐:id / name / desc / cat / author / contact | 提交被拒,缺哪项报哪项 |
| 2 | id 不撞车(对既有 registry + 待审队列查重) | 409 冲突,换 id 重提 |
| 3 | desc ≤ 20 字(码点计) | 直接拒绝,删到 20 字内 |
| 4 | server.url 必须 https 且现场健康检查能通(空 POST,5s 超时,200/405 即通) | 「服务不可达」——检查证书/防火墙/公网直连 |
另有两条结构性拒收:server.token 非空直接拒绝(token 由用户安装后自填,永不进目录);提交 body 超 8KB 拒收(413)。
四、审核标准(明文,什么会被拒)
直接打回(命中即拒)
- 工具实际行为超出目录描述——装上后发现的工具与
toolPreview/描述明显不符; - 索取与功能无关的用户数据(尤其身份/支付/通讯类);
- 工具名命中保留黑名单(
sms.read / pay.query / identity.read / a2a.message / contact.read / call.log / location.read); - 只读声明下暗藏写操作(
level=readonly却有副作用); - description / inputSchema 占位(空 Schema、"MOV 工具: xxx" 式敷衍描述);
- 目录条目携带 token / apiKey / secret / password 类字段(结构性拒收)。
降低通过率的常见问题
- description 写给程序员而不是写给 AI——AI 靠它决定何时调用,要写清「什么时候该用、返回什么」;
- 服务在国内访问不稳/证书链不全——用户设备直连你的服务器,稳定性直接影响体验;
- 分类随意(
cat决定市场分组),建议看市场现有分类取近似值。
打回会附理由,修改后可重新提交。
五、自检清单(上架前自己先跑一遍)
# 1. 健康检查:应为 200(405 也接受)
curl -s -o /dev/null -w '%{http_code}' -X POST https://你的服务器/mcp \
-H 'Content-Type: application/json' -d '{}'
# 2. 工具清单:应返回 result.tools 数组
curl -s -X POST https://你的服务器/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# 3. 真实调用一次
curl -s -X POST https://你的服务器/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"你的工具","arguments":{}}}'
- ☑ 三条 curl 全通;
- ☑ id 符合口径、全库未撞车;desc ≤ 20 字;
- ☑ description 真实完整、inputSchema 为有效 JSON Schema、全部
level=readonly; - ☑ 工具名避开保留黑名单;
- ☑ 目录条目无 token/密钥类字段。
全过 = 可以提交。