开发者中心 › 快速开始

快速开始:5 分钟跑通第一个工具

零依赖 Node 18+ 单文件模板,本地三条 curl 验证,然后部署公网提交上架。

要点(30 秒)

  • 零依赖 Node 18+ 单文件模板(hello-server.mjs)——5 分钟跑通第一个可上架工具。
  • 生态全旅程 7 步:入驻 → 认证 → 建服务 → 测试 → 审核 → 发布 → 看数(每步标真实入口与状态)。
  • 本地三条 curl 全通 = 服务端就绪;再部署公网 https(工具必须公网可达)。
  • 提交通道与审核标准见「上架流程」;商品线(扫码建草稿)与本页工具线分离。
展开全文(完整表格 / 代码 / 细节)

生态全旅程(7 步)

从入驻到看数,一条链走完。每步都标出真实入口与当前状态:已在线 / 上线在途。

  1. ① 入驻:手机号验证码登录即注册(POST /account/login);与协作者配对(/pair/request、/pair/accept、GET /peers;机器配对面·非用户身份)。入口:商家后台。 已在线
  2. ② 认证:提交申请(POST /merchant/apply)→ 登记材料(POST /merchant/materials)→ 按缺件补齐(GET /merchant/missing)→ 核验(GET /merchant/verify/items)→ 状态自查(GET /merchant/status)。状态机 APPLIED → VERIFYING → APPROVED / REJECTED;缺件是「进行中」不是打回。 已在线
  3. ③ 建服务:工具线=按开发规范实现 MCP 服务(本页第 0–5 步);商品线=App 扫码生成商品草稿(POST /merchant/product/draft,契约已定)与草稿台。 工具线在线 / 已上线
  4. ④ 测试:工具=三条 curl 自检(本页第 2 步);商品=草稿台预览。 工具线在线 / 已上线
  5. ⑤ 审核:工具=服务端四道卡 + 人工审核(见上架流程);商家=资质人工核验(核验项台账),驳回附理由、可修改重提。 已在线
  6. ⑥ 发布:工具=并入 registry.json 即刻生效;商品=发布后买家可见。 工具线在线 / 已上线
  7. ⑦ 看数:店铺健康分四维(信息完整度 / 响应时延 / 纠纷率 / 资质时效,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 步 · 在用户设备上会发生什么

  1. 用户在能力市场点「安装」,app 对你的服务做健康检查 + tools/list 发现;
  2. 你的工具以 ext.<服务器名>.<工具名> 出现在用户的 AI 工具面(热挂载,无需重启 app);
  3. AI 下一轮对话即可直接调用;用户可随时在市场里停用/卸载(热摘除)。