开发者中心 › 上架流程

上架流程:注册 → 开发 → 提交 → 审核 → 上架

当前为自助提交 + 人工审核制:服务端四道校验自动过卡,通过后人工审核,通过即并入目录即刻生效。

要点(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提交被拒,缺哪项报哪项
2id 不撞车(对既有 registry + 待审队列查重)409 冲突,换 id 重提
3desc ≤ 20 字(码点计)直接拒绝,删到 20 字内
4server.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/密钥类字段。

全过 = 可以提交。