OpenCode · 第 10 章 MCP 集成与外部能力扩展 章节摘要:一个 Agent 再强,也只活在它自己的进程里——除非有一种标准方式让它连上外部世界。模型上下文协议(MCP,Model Context Protocol)就是这件事:它定义了 Agent 如何标准化、安全地连接任意外部资源(数据库、文件系统、API、浏览器……)。OpenCode 既是一个 MCP 客户端(连别人提供的 MCP 服务器,把外部工具拉进来),也能把自己暴露成一个 MCP 服务器(让别人连进来用它的能力)。本章重点讲客户端这一面:三种传输方式(stdio/SSE/流式 HTTP)各自适合什么、OAuth 认证流程怎么走、MCP 工具如何进入第 5 章的注册表并受第 4 章的权限规则约束。
章节摘要:一个 Agent 再强,也只活在它自己的进程里——除非有一种标准方式让它连上外部世界。模型上下文协议(MCP,Model Context Protocol)就是这件事:它定义了 Agent 如何标准化、安全地连接任意外部资源(数据库、文件系统、API、浏览器……)。OpenCode 既是一个 MCP 客户端(连别人提供的 MCP 服务器,把外部工具拉进来),也能把自己暴露成一个 MCP 服务器(让别人连进来用它的能力)。本章重点讲客户端这一面:三种传输方式(stdio/SSE/流式 HTTP)各自适合什么、OAuth 认证流程怎么走、MCP 工具如何进入第 5 章的注册表并受第 4 章的权限规则约束。这里最值得讲的工程点是:MCP 工具不是法外之地——它们和内置工具走同一套权限求解,「询问/允许/拒绝」一样适用。读完本章,你能让 OpenCode 安全地接入任意外部资源,并理解「标准化连接」背后那套统一的治理逻辑。
阅读完本章,你应当能够:
一句话总结:MCP 让 Agent 突破进程边界,但「突破」不等于「失控」——所有 MCP 工具都经认证进入、经目录汇入、经注册表统一、经权限求解放行,内置工具与外部工具走的是同一套治理流水线。
讲 stdio(本地子进程,适合自带工具)、SSE(服务端推送,适合远程)、流式 HTTP(现代双向流,适合新式服务)三种传输的特点与适用场景。给出选型建议:本地工具用 stdio,远程服务优先流式 HTTP。
讲 MCP 服务器要求授权时怎么办:OAuth 流程如何启动、回调如何处理、浏览器认证如何引导用户登录。重点说明这套认证如何与第 4 章权限体系协作(认证解决「你是谁」,权限解决「你能干什么」)。
本章核心工程点。讲 MCP 工具如何通过一个目录(catalog)汇入第 5 章的注册表,与内置工具并列;然后强调它们同样受第 4 章权限规则约束——「询问/允许/拒绝」一样适用,MCP 工具不是法外之地。
讲反向用法:OpenCode 能把自己暴露成一个 MCP 服务器,让别人(别的 Agent、别的工具)连进来用它的能力。这一节展示了 MCP 的对称性——同一套协议既可拉(pull)也可推(push)。
本章遵循「怎么连 → 怎么认证 → 连进来后怎么管 → 反过来怎么暴露」的能力扩展路径:
传输方式 (01) ──三种连接方式 │ ▼ OAuth 认证 (02) ──连接时的身份问题 │ ▼ 进入注册表 (03) ──连接后的统一治理 │ ▼ 反向暴露 (04) ──让别人也能连我 │ ▼ 第 11 章:除了 MCP,还有哪些扩展点
前三节是「作为客户端连接外部」的完整链路,最后一节是反向对称用法。理解了全部四节,你才算完整掌握 OpenCode 与外部世界的交互模型。
前置知识:
本章为后续章节奠定的基础: