模型上下文协议 | ChatGPT 学习
来源: https://developers.openai.com/codex/mcp 抓取时间: 2026-07-21 16:19:09
模型上下文协议(MCP)将模型连接到工具和上下文。使用它可以让 ChatGPT 或 Codex 访问第三方文档,或者让它与开发者工具(如浏览器或 Figma)交互。 ChatGPT Web 可以使用插件提供的远程 MCP 工具。本地 Codex 客户端也可以直接连接到 MCP 服务器并共享它们的配置。 ChatGPT 桌面应用、Codex CLI 和 IDE 扩展支持 MCP 服务器,并为同一个 Codex 主机共享 MCP 配置。 下面支持的服务器功能适用于在 Codex 主机上配置的 MCP 服务器。托管插件工具可以有不同的功能。
支持的 MCP 功能
- STDIO 服务器:作为本地进程运行的服务器(由命令启动)。
- 环境变量
- 可流式 HTTP 服务器:您在某个地址访问的服务器。
- Bearer token 认证
- OAuth 认证
- 受信任的第一方服务器的 ChatGPT 会话认证
- 服务器指令:Codex 读取初始化期间返回的 MCP
instructions字段,并将其与服务器的工具一起用作服务器范围的指导。
如果您为 Codex 构建或维护 MCP 服务器,请使用 instructions 来处理适用于整个服务器的跨工具工作流、约束和速率限制。保持前 512 个字符自包含,以便当 Codex 决定如何使用服务器时,最重要的指导是可用的。
将 Codex 连接到 MCP 服务器
Codex 将 MCP 配置存储在 config.toml 中,与其他 Codex 配置设置一起。默认情况下这是 ~/.codex/config.toml,但您也可以使用 .codex/config.toml 将 MCP 服务器限定到项目(仅限受信任的项目)。
ChatGPT 桌面应用、Codex CLI 和 IDE 扩展共享此配置。配置好 MCP 服务器后,您可以在这些客户端之间切换而无需重新设置。
在 ChatGPT 桌面应用中配置
- 打开 设置,然后选择 MCP 服务器。
- 选择 添加服务器。
- 输入名称,选择 STDIO 或 可流式 HTTP,并提供服务器的命令或 URL。
- 保存服务器,然后选择 重新启动。
服务器列表显示哪些服务器已启用,哪些需要 OAuth。当 OAuth 服务器需要登录时选择 认证。在编辑器中,键入 /mcp 以查看连接的服务器。
在 ChatGPT Web 中使用 MCP 工具
在工作模式下的托管聊天中,安装 插件 以使用其捆绑的连接器和远程 MCP 工具。工作区管理员可以控制哪些插件和工具可用。 ChatGPT Web 不会读取本地 Codex 配置文件或暴露本地 Codex 命令菜单。在 ChatGPT 的工作模式中通过 插件 浏览和管理可用工具。
使用 CLI 配置
添加 MCP 服务器
codex mcp add <server-name> --env VAR1=VALUE1 --env VAR2=VALUE2 -- <stdio server-command>
例如,要添加 Context7(一个免费的开发者文档 MCP 服务器),您可以运行以下命令:
codex mcp add context7 -- npx -y @upstash/context7-mcp
其他 CLI 命令
运行 codex mcp list 以查看已配置的服务器。要查看所有可用的 MCP 命令,请运行 codex mcp --help。对于支持 OAuth 的服务器,运行 codex mcp login <server-name>。
终端 UI (TUI)
在 codex TUI 中,使用 /mcp 查看您的活动 MCP 服务器。
在 IDE 扩展中配置
- 打开齿轮菜单,然后选择 MCP 服务器。
- 选择 添加服务器。
- 输入名称,选择 STDIO 或 可流式 HTTP,并提供服务器的命令或 URL。
- 保存服务器,然后选择 重新启动扩展。
MCP 服务器列表显示哪些服务器已启用,哪些需要 OAuth。当 OAuth 服务器需要登录时选择 认证。
使用 config.toml 配置
要获得更细粒度的控制,请编辑 ~/.codex/config.toml 或项目范围的 .codex/config.toml。请参阅 配置参考 以获取每个支持的 MCP 选项的可搜索列表。
使用配置文件中的 [mcp_servers.<server-name>] 表配置每个 MCP 服务器。
STDIO 服务器
command(必需):启动服务器的命令。args(可选):传递给服务器的参数。env(可选):为服务器设置的环境变量。env_vars(可选):允许和转发的环境变量。cwd(可选):启动服务器的工作目录。experimental_environment(可选):设置为remote以在可用时通过远程执行器环境启动 stdio 服务器。
env_vars 可以包含纯变量名或带源的对象:
env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]
字符串条目和 source = "local" 从 Codex 的本地环境读取。source = "remote" 从远程执行器环境读取,并且需要远程 MCP stdio。
可流式 HTTP 服务器
url(必需):服务器地址。auth(可选):在配置的 bearer token 和授权标头之后尝试的认证。使用oauth(默认)用于存储的 MCP OAuth 凭证。使用chatgpt将当前 ChatGPT 会话用于受信任的第一方 ChatGPT 源,存储的 OAuth 作为后备。bearer_token_env_var(可选):要在Authorization中发送的 bearer token 的环境变量名称。http_headers(可选):标头名称到静态值的映射。env_http_headers(可选):标头名称到环境变量名称的映射(值从环境中获取)。
如果没有凭证源解析,Codex 可以在不认证的情况下连接到服务器。单独运行 codex mcp login <server-name> 以启动 MCP OAuth 登录。
其他配置选项
startup_timeout_sec(可选):服务器启动的超时时间(秒)。默认值:10。tool_timeout_sec(可选):服务器运行工具的超时时间(秒)。默认值:60。enabled(可选):设置为false以在不删除服务器的情况下禁用它。required(可选):设置为true以在该启用的服务器无法初始化时使启动失败。enabled_tools(可选):工具允许列表。disabled_tools(可选):工具拒绝列表(在enabled_tools之后应用)。default_tools_approval_mode(可选):此服务器工具的默认审批行为。支持的值是auto、prompt、writes和approve。writes模式对未标记为只读的工具进行提示。tools.<tool>.approval_mode(可选):每个工具的审批行为覆盖。
如果您的 OAuth 提供商需要固定回调端口,请在 config.toml 中设置顶级 mcp_oauth_callback_port。如果未设置,Codex 绑定到临时端口。
如果您的 MCP OAuth 流程必须使用特定的回调 URL(例如,远程 Devbox 入口 URL 或自定义回调路径),请设置 mcp_oauth_callback_url。Codex 使用此值作为基础回调 URL,然后附加服务器特定的回调 ID 以生成它在登录期间发送的 OAuth redirect_uri。向您的 OAuth 提供商注册完整的派生 redirect_uri,包括附加的回调 ID 和任何配置的路径、查询或端口,而不是仅注册没有该后缀的基础主机或路径。本地回调 URL(例如 localhost)绑定在本地接口上;非本地回调 URL 绑定在 0.0.0.0 上,以便回调可以到达主机。
如果 MCP 服务器宣称 scopes_supported,Codex 在 OAuth 登录期间更喜欢那些服务器宣称的范围。否则,Codex 回退到 config.toml 中配置的范围。
config.toml 示例
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["LOCAL_TOKEN"]
[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"
# 可选的 MCP OAuth 回调覆盖(由 `codex mcp login` 使用)
mcp_oauth_callback_port = 5555
mcp_oauth_callback_url = "https://devbox.example.internal/callback"
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # 在 enabled_tools 之后应用
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true
[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve"
插件提供的 MCP 服务器
已安装的插件可以在其插件清单中捆绑 MCP 服务器。这些服务器从插件启动,因此用户配置不设置它们的传输命令。用户配置仍然可以在 plugins.<plugin>.mcp_servers.<server> 下控制开启/关闭状态和工具策略。
[plugins."sample@test".mcp_servers.sample]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["read", "search"]
[plugins."sample@test".mcp_servers.sample.tools.search]
approval_mode = "approve"
有用的 MCP 服务器示例
MCP 服务器列表不断增长。以下是一些常见的:
- OpenAI Docs MCP:搜索和阅读 OpenAI 开发者文档。
- Context7:连接到最新的开发者文档。
- Figma 本地 和 远程:访问您的 Figma 设计。
- Playwright:使用 Playwright 控制和检查浏览器。
- Chrome Developer Tools:控制和检查 Chrome。
- Sentry:访问 Sentry 日志。
- GitHub:管理超出
git支持的 GitHub(例如,拉取请求和问题)。