快速开始:5 分钟跑通第一个工具
零依赖 Node 18+ 单文件模板,本地三条 curl 验证,然后部署公网提交上架。
要点(30 秒)
- 零依赖 Node 18+ 单文件模板(hello-server.mjs)——5 分钟跑通第一个可上架工具。
- 生态全旅程 7 步:入驻 → 认证 → 建服务 → 测试 → 审核 → 发布 → 看数(每步标真实入口与状态)。
- 本地三条 curl 全通 = 服务端就绪;再部署公网 https(工具必须公网可达)。
- 提交通道与审核标准见「上架流程」;商品线(扫码建草稿)与本页工具线分离。
展开全文(完整表格 / 代码 / 细节)
生态全旅程(7 步)
从入驻到看数,一条链走完。每步都标出真实入口与当前状态:已在线 / 上线在途。
- ① 入驻:手机号验证码登录即注册(
POST /account/login);与协作者配对(/pair/request、/pair/accept、GET /peers;机器配对面·非用户身份)。入口:商家后台。 已在线 - ② 认证:提交申请(
POST /merchant/apply)→ 登记材料(POST /merchant/materials)→ 按缺件补齐(GET /merchant/missing)→ 核验(GET /merchant/verify/items)→ 状态自查(GET /merchant/status)。状态机APPLIED → VERIFYING → APPROVED / REJECTED;缺件是「进行中」不是打回。 已在线 - ③ 建服务:工具线=按开发规范实现 MCP 服务(本页第 0–5 步);商品线=App 扫码生成商品草稿(
POST /merchant/product/draft,契约已定)与草稿台。 工具线在线 / 已上线 - ④ 测试:工具=三条 curl 自检(本页第 2 步);商品=草稿台预览。 工具线在线 / 已上线
- ⑤ 审核:工具=服务端四道卡 + 人工审核(见上架流程);商家=资质人工核验(核验项台账),驳回附理由、可修改重提。 已在线
- ⑥ 发布:工具=并入
registry.json即刻生效;商品=发布后买家可见。 工具线在线 / 已上线 - ⑦ 看数:店铺健康分四维(信息完整度 / 响应时延 / 纠纷率 / 资质时效,
GET /merchant/health)+ 买家信任信号(GET /merchant/health/{shop_id}·需商家台账号登录)。 已在线
认证/类目决定表
先看你的类目要备哪些材料——按类目直查,不用猜:
| 类目(category) | 必备材料 | 法规锚 |
|---|---|---|
food 食品 | 营业执照 + 食品经营许可证 | 《电子商务法》第 27 条 · 《食品安全法》第 35 条 |
cosmetic 化妆品 | 营业执照 + 产品备案凭证 | 《电子商务法》第 27 条 · 《化妆品监督管理条例》 |
general 一般 | 营业执照 | 《电子商务法》第 27 条 |
核验方式(MVP=人工,按审核要求执行):受控拍摄 / 实人核验 / 对公打款 / 要素核验;只留核验结果与凭证号,不存人脸原图。材料提交即进入核验中(VERIFYING);驳回(REJECTED)修改后可重新提交(回到 APPLIED)。
第 0 步 · 准备
你只需要:一台能跑 Node 18+ 的机器(本地即可)、一个能部署公网 https 的位置(上线前再准备,本地调试用 127.0.0.1 就够)。
官方模板:templates/hello-server.mjs(本仓库 official-web/developers/templates/),全文只有一个 HTTP 服务器和一份工具声明,见下方第 1 步。
第 1 步 · 本地起服务
# 模板文件:hello-server.mjs(核心结构如下,完整文件见上方模板包)
import http from 'node:http';
const TOOLS = [ { // ① 工具声明四件套
name: 'hello_world',
description: '收到问候语(hello / hi 等)时调用;返回问候语 "Hello world"。',
inputSchema: { type: 'object', properties: {}, additionalProperties: false },
level: 'readonly', // 当前版本只做只读工具
} ];
http.createServer((req, res) => {
let body = ''; req.on('data', c => body += c);
req.on('end', () => {
let rpc = null; try { rpc = JSON.parse(body || '{}'); } catch {}
if (!rpc || !rpc.method) { // ② 健康检查:空 body → 200 即存活
res.writeHead(200).end('{}'); return;
}
const reply = r => res.writeHead(200, {'Content-Type':'application/json'})
.end(JSON.stringify({jsonrpc:'2.0', id:rpc.id ?? null, result:r}));
if (rpc.method === 'tools/list') return reply({ tools: TOOLS }); // ③ 发现
if (rpc.method === 'tools/call')
return reply({ content:[{type:'text', text:`Hello, ${rpc.params?.arguments?.who ?? 'world'}!`}],
isError:false }); // ④ 调用
res.writeHead(404).end('{}');
});
}).listen(8787);
# 运行
node hello-server.mjs # → http://127.0.0.1:8787
第 2 步 · 三条 curl 自检(全通 = 服务端就绪)
# ① 健康检查:应为 200(405 也会被 app 接受)
curl -s -o /dev/null -w '%{http_code}' -X POST http://127.0.0.1:8787 \
-H 'Content-Type: application/json' -d '{}'
# ② 工具清单:应返回 result.tools 数组
curl -s -X POST http://127.0.0.1:8787 \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
# ③ 真实调用一次
curl -s -X POST http://127.0.0.1:8787 \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"hello_world","arguments":{"who":"MOV"}}}'
三条的真实应答(本模板实测):
① 200
② {"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"hello_world",
"description":"收到问候语(hello / hi 等)时调用;返回问候语 \"Hello world\"。",
"inputSchema":{"type":"object","properties":{},"additionalProperties":false},
"level":"readonly"}]}}
③ {"jsonrpc":"2.0","id":2,"result":{"content":[{"type":"text","text":"Hello, MOV!"}],"isError":false}}
想看线上真实案例?市场目录里已有一个
hello-world 包,服务 /hello-mcp/,上面第 ② ③ 条 curl 把地址换成 <当前域名>/hello-mcp/ 即可直接体验(工具名 hello_world,应答 "Hello world")。第 3 步 · 部署公网 https
- app 端全局禁明文 http(仅放行回环地址),所以正式上架的服务必须 https;
- 本地调试期间可以用任意内网穿透工具把 127.0.0.1:8787 临时映射成 https 地址;
- 用户调用你的工具时,请求从用户设备直发你的服务器(我们不做转发),确认防火墙/网关允许公网直连;
- 超时预算:连接 5s / 读取 30s——长任务请先返回再异步处理。
第 4 步 · 提交上架
带齐目录条目字段(id / 名称 / 一句话简介 ≤20 字 / 分类 / 作者 / 联系方式 / 服务 URL),走上架流程:网页提交或 app 内对话提交。服务端会现场做健康检查(空 POST,200/405 即通),通过后进入人工审核。
上架前请过一遍自检清单——三条 curl 全通 + 字段合规 = 可以提交。
第 5 步 · 在用户设备上会发生什么
- 用户在能力市场点「安装」,app 对你的服务做健康检查 + tools/list 发现;
- 你的工具以
ext.<服务器名>.<工具名>出现在用户的 AI 工具面(热挂载,无需重启 app); - AI 下一轮对话即可直接调用;用户可随时在市场里停用/卸载(热摘除)。