Type: concept
Confidence: 0.90
Created: 2026-04-15
Updated: 2026-04-15
Tags: 技术工具Agent系统

MCP协议层

Codex CLI 的工具连接协议层。MCP(Model Context Protocol)是 Anthropic 提出的开放协议,让工具与 Agent 解耦——"USB-C 接口"设计。Codex 同时扮演 MCP 客户端(连接外部工具)和 MCP 服务(将自身暴露给其他 Agent)两个角色。

核心价值

传统方式每个工具都需要定制集成代码。MCP 方式:Agent 通过统一协议连接任意 MCP 兼容工具,工具复用,无需定制。

Codex 双重身份

作为 MCP Client:启动时连接 config.toml 声明的 MCP 服务器,通过 tools/list 发现工具,注入 LLM system prompt,将 LLM 的 tool_call 请求路由到对应服务器。

作为 MCP Server

codex mcp-server  # 启动后暴露 codex_exec、codex_review 等工具

其他 Agent(Cursor、另一个 Codex 实例)可将整个 Codex Agent 作为工具节点调用——实现 Agent 可组合性。

MCP Client 配置

# ~/.codex/config.toml
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp@latest"]
enabled = true

[mcp_servers.github]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-github"]
env = { GITHUB_TOKEN = "$GITHUB_TOKEN" }

传输协议

协议 特点 适用场景
stdio 最常用,Codex 启动子进程通信,无端口冲突 本地工具
HTTP/SSE 支持 bearer-token 认证 远程服务
WebSocket 双向实时,适合服务器主动推送 实时场景

Plugins 系统

2026 年引入的基于 MCP 的插件系统:自动从 plugin registry 同步(无需手动配置)、统一处理认证、自动版本管理、TUI 内 /plugins 面板集成。

安全控制

MCP 工具调用受 Approval 机制保护: - read-only: true → 自动放行 - destructive: true → 强制审批(即使 approval_policy = "never"

精细审批策略

approval_policy = { granular = {
  mcp_elicitations = true,    # MCP 请求权限时展示给用户确认
  request_permissions = true, # request_permissions 工具需要确认
} }

环境变量隔离(Shell Environment Policy):精细控制哪些 env var 传递给子进程,防止密钥泄露。

[shell_environment_policy]
inherit = "none"                    # 不继承任何 env var
set = { PATH = "/usr/bin:/usr/local/bin" }
exclude = ["AWS_*", "AZURE_*"]      # glob 模式排除
include_only = ["PATH", "HOME", "GITHUB_TOKEN"]  # 白名单
ignore_default_excludes = false     # 默认自动排除 KEY/SECRET/TOKEN

MCP 增强确定性的方式

不确定性来源 MCP 的应对
LLM 对外部系统状态"猜测" 通过 MCP 工具直接读取真实状态
工具接口不稳定,Agent 调用出错 MCP schema 强类型约束,load-time 验证
工具调用暴露系统权限 Approval gate + destructive annotation 强制确认
密钥通过 env 泄露给工具进程 Shell environment policy 精细过滤
Agent 对工具能力误解 tools/list 接口的 description 字段规范化

工程哲学

MCP Layer 把"工具集成"从编程问题变成配置问题。 Codex 同时是客户端和服务端,实现了 Agent 的"可组合性"——任何 Codex 实例都可以成为更大 Agent 系统的一个工具节点。

来源