第 5 节 · 本站原创中文课程 · 建议 25 分钟
从 MCP 发现到可靠工具观察
本节保留 Pi 1.0.0 的引用与学习记录。阅读 Pi 1.1.0 对应章节
学完能做:适配远程工具,区分连接、发现、业务错误与授权。
连接与工具调用不是同一步
pi-mcp 的 McpClient 负责协议初始化、请求关联、超时和取消;transport 负责 framing 与 I/O,可选 stdio 或 Streamable HTTP。示例先 connect,再 listTools,再 callTool,最后 close。生产适配器需要 finally 清理,并把断连、取消与业务错误分别记录。OAuth 与凭证存储是独立职责,网站学习练习无需提交任何真实密钥。
暴露策略影响上下文
coding-agent 的 MCP 工具名是 mcp__server__tool。direct 声明给模型;默认 codemode 让脚本按需发现而不把全部工具塞进声明;deferred 经 tool_search 加载后再声明;hidden 不可调用。这些是工具可达性和发现策略,不是自动实现的业务权限。大量工具先按名称空间发现、查看 schema,再调用,比一次塞入全部描述更可控。
不要漏掉 isError
README 的 AgentTool 适配把 MCP CallToolResult 转成模型内容,同时映射 isError。业务失败可能是正常协议响应,所以只写 try/catch 不够。structuredContent 可以提供结构化结果,content 承载文本与图片;要保留足够证据解释下一步。1.0 的 OAuth 修复不改变这个区分:身份验证成功也不说明任意工具操作已成功。
这是本站独立编写的讲解与示例,并非官方课程逐字翻译。理解之后,请完成下面的练习、自测和笔记。
参考来源:Pi v1.0.0 官方源码与文档