AI Agent 工程 · 03
03.3 实战:模拟订单 MCP 服务
运行一个不接真实账号的 JSON-RPC 订单工具模拟器,验证发现、授权查询和失败结果。
目标与边界
本练习实现的是协议形状的本地模拟器,不是完整 MCP SDK Server。它用 JSON-RPC 风格的 tools/list 和 tools/call 展示发现与调用路径,所有订单均为模拟数据,不使用真实 API key、客户信息或支付权限。
运行
在仓库根目录执行:
npm run test:agent-course
脚本会验证课程注册,再运行 examples/cross-border-ai-support-agent/v2-mcp-workflow.mjs。预期输出包含 tool discovery、authorized lookup 与 forbidden lookup 三项通过。
为什么这样设计
tools/list 让 Client 获得工具名与输入要求;tools/call 接收订单号和请求者。Server 先检查工具是否存在、订单是否存在、客户是否归属,再返回文本内容。即使模型正确抽取了订单号,requesterId 不匹配仍返回错误,避免泄露订单事实。
输入:XB-1024 + customer-amy → 授权查询 → 模拟订单
输入:XB-1024 + customer-ben → 拒绝 → “无权访问订单”
验收、排查与回忆
验收:四项检查均通过;无权查询不含订单详情。若 Node 找不到文件,确认从仓库根目录运行;若课程检查失败,检查 MDX slug 与配置是否一致。主动回忆:为什么错误响应也需要结构化、有限的信息?
- 必须记:发现工具与执行工具是两步。
- 建议记:授权由 Server 强制执行。
- 不用记:模拟订单号。