MCP 集成深度指南
从 MCP 协议原理到 Codex 实战配置的完整指南。前半部分讲「为什么」和「怎么回事」,后半部分讲「怎么装」和「怎么用」。所有配置项均来自 Codex MCP 官方文档 与 MCP 协议规范。
一、MCP 协议基础
1.1 什么是 MCP
Model Context Protocol(MCP)是一个开放协议,定义了 AI 应用与外部工具/数据源之间的标准化通信方式。它的核心价值是:让 AI 模型能够安全、可控地调用外部工具(Tools)、读取外部资源(Resources)、使用提示模板(Prompts)。
MCP 之于 AI Agent,就像 USB 之于电脑——定义了一个通用接口,让任何工具都能即插即用。
1.2 Host / Client / Server 三角架构
MCP 采用 客户端-服务器架构,包含三个核心参与者:
| 角色 | 职责 | Codex 中的对应 |
|---|---|---|
| MCP Host | AI 应用本体,负责协调和管理多个 MCP Client | Codex CLI / IDE Extension / Codex App |
| MCP Client | Host 内部组件,为每个 MCP Server 维护一条专用连接 | Codex 运行时自动为每个配置的 Server 创建 Client |
| MCP Server | 提供工具/资源/提示的程序,可以是本地进程或远程服务 | Context7、Playwright、GitHub MCP 等 |
关键机制:
- 一对一连接: 每个 MCP Client 维护与一个 MCP Server 的专用连接。Codex 启动时,为
config.toml中配置的每个[mcp_servers.<name>]创建一个 Client 实例 - 能力协商: 连接建立时,Client 和 Server 通过
initialize握手交换各自支持的能力(Tools / Resources / Prompts),这决定了后续可以使用哪些功能 - 工具注入: Server 声明的工具 Schema 会被注入到模型的上下文中,模型据此决定何时调用哪个工具
1.3 协议分层
MCP 由两层组成:
| 层级 | 职责 | 技术实现 |
|---|---|---|
| 数据层(内层) | 定义消息结构和语义:生命周期管理、工具/资源/提示原语、通知 | JSON-RPC 2.0 协议 |
| 传输层(外层) | 定义通信通道:连接建立、消息帧、认证授权 | STDIO / Streamable HTTP |
二、STDIO vs Streamable HTTP 传输方式
两种传输方式决定了 MCP Server 的运行位置和通信方式:
2.1 STDIO(标准输入输出)
| 属性 | 详情 |
|---|---|
| 运行方式 | Codex 启动一个本地子进程,通过 stdin/stdout 通信 |
| 网络需求 | 无——纯本地进程间通信,零网络开销 |
| 连接模型 | 一对一:一个本地 Server 进程服务一个 Client |
| 认证方式 | 不需要——本地进程天然可信,通过环境变量传递 API Key |
| 典型场景 | Context7、Playwright、本地数据库工具、自定义脚本 |
| config.toml 关键字段 | command(必填)、args、env、env_vars、cwd |
# STDIO 示例:Context7
[mcp_servers.context7]
command = "npx" # 启动命令
args = ["-y", "@upstash/context7-mcp"] # 命令参数
[mcp_servers.context7.env] # 环境变量
CONTEXT7_API_KEY = "your-api-key"2.2 Streamable HTTP
| 属性 | 详情 |
|---|---|
| 运行方式 | Codex 通过 HTTP POST 连接远程服务器,可选 SSE 流式响应 |
| 网络需求 | 需要网络访问——服务器由第三方托管 |
| 连接模型 | 多对一:一个远程 Server 可以服务多个 Client |
| 认证方式 | OAuth 2.0 / Bearer Token / 自定义 HTTP Header |
| 典型场景 | GitHub MCP、OpenAI Docs MCP、Figma MCP、Sentry MCP |
| config.toml 关键字段 | url(必填)、bearer_token_env_var、http_headers、env_http_headers |
# Streamable HTTP 示例:GitHub MCP
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/" # 远程地址
# OAuth 认证:通过 codex mcp login github 完成2.3 选型决策
- 工具是开源 npm/pip 包 → STDIO(本地运行,快速,无网络依赖)
- 工具是第三方平台服务 → Streamable HTTP(远程托管,OAuth 认证)
- 需要离线工作 → 只能用 STDIO
- 需要团队共享认证 → Streamable HTTP 更合适
三、认证流程
MCP 的认证取决于传输方式和服务提供商:
3.1 认证方式总览
| 认证方式 | 适用传输 | 配置方式 | 典型场景 |
|---|---|---|---|
| 环境变量 | STDIO | [mcp_servers.<name>.env] 或 env_vars | Context7 API Key、自定义工具 Token |
| OAuth 2.0 | Streamable HTTP | codex mcp login <name> | GitHub MCP(GitHub OAuth) |
| Bearer Token | Streamable HTTP | bearer_token_env_var = "ENV_NAME" | Figma MCP、企业内部 API |
| 自定义 Header | Streamable HTTP | http_headers 或 env_http_headers | 需要特殊头部的企业服务 |
| 无认证 | STDIO / HTTP | 不配置任何认证字段 | OpenAI Docs MCP(只读公开) |
3.2 环境变量认证(STDIO)
两种传递方式:
# 方式一:直接设置(值写在 config.toml 中)
[mcp_servers.my-tool.env]
API_KEY = "sk-xxx" # 值明文写入配置
DATABASE_URL = "postgres://..."
# 方式二:从宿主环境转发(值来自系统环境变量)
[mcp_servers.my-tool]
command = "node"
args = ["server.js"]
env_vars = ["API_KEY", "DATABASE_URL"] # 仅转发,不存储值对于敏感凭证(API Key、数据库密码),优先使用 env_vars 从系统环境转发,避免明文写入 config.toml。将
~/.codex/config.toml 加入 .gitignore。
3.3 OAuth 2.0 认证(Streamable HTTP)
GitHub MCP 等远程服务使用 OAuth 流程:
# 1. 添加远程 MCP
codex mcp add github --url https://api.githubcopilot.com/mcp/
# 2. 执行 OAuth 登录(浏览器弹窗授权)
codex mcp login githubOAuth 回调配置(高级):
# 固定回调端口(OAuth 提供商要求时使用)
mcp_oauth_callback_port = 5555
# 自定义回调 URL(远程开发机 / devbox 场景)
mcp_oauth_callback_url = "https://devbox.example.internal/callback"- 如果 MCP Server 在 OAuth 发现中声明了
scopes_supported,Codex 优先使用服务端声明的 scope - 本地回调 URL(如
localhost)绑定 loopback;非本地 URL 绑定0.0.0.0
3.4 Bearer Token 认证(Streamable HTTP)
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN" # 从环境变量读取 Token
http_headers = { "X-Figma-Region" = "us-east-1" } # 可选静态头bearer_token_env_var 指定一个环境变量名(非值),Codex 启动时从系统环境读取实际 Token 并自动添加 Authorization: Bearer <token> 头。
3.5 自定义 HTTP Header
[mcp_servers.internal-api]
url = "https://internal.example.com/mcp"
# 静态头:值直接写入配置
http_headers = { "X-Team" = "platform", "X-Region" = "cn-east" }
# 动态头:值从环境变量读取
env_http_headers = { "Authorization" = "INTERNAL_API_TOKEN" }四、运行时管理:CLI 命令
Codex 提供完整的 MCP 生命周期管理命令:
4.1 命令速查
| 命令 | 说明 |
|---|---|
codex mcp add <name> -- <command> [args] | 添加 STDIO 类型 MCP Server |
codex mcp add <name> --url <url> | 添加 Streamable HTTP 类型 MCP Server |
codex mcp add <name> --env K=V -- <cmd> | 添加时同时设置环境变量 |
codex mcp list | 列出所有已配置的 MCP Server 及状态 |
codex mcp login <name> | 对支持 OAuth 的远程 MCP 执行浏览器授权 |
codex mcp remove <name> | 移除指定 MCP Server 配置 |
codex mcp --help | 查看所有可用的 MCP 管理命令 |
/mcp(TUI 内) | 在交互界面中查看 MCP 运行状态和已加载工具 |
4.2 完整生命周期示例
# ① 添加 STDIO Server
codex mcp add context7 -- npx -y @upstash/context7-mcp
# ② 添加 Streamable HTTP Server
codex mcp add github --url https://api.githubcopilot.com/mcp/
# ③ OAuth 登录
codex mcp login github
# ④ 查看已配置列表
codex mcp list
# 输出示例:
# context7 stdio enabled
# github http enabled
# openai-docs http enabled
# ⑤ 临时禁用(编辑 config.toml)
# [mcp_servers.playwright]
# enabled = false
# ⑥ 移除不再需要的 Server
codex mcp remove playwrightcodex mcp add 本质上是向 ~/.codex/config.toml 写入配置。两种方式完全等价,CLI 更快捷,手动编辑更精细。CLI 和 IDE
Extension 共享同一份配置文件。
五、工具白名单与黑名单
当 MCP Server 提供的工具过多时,可以通过 enabled_tools 和 disabled_tools 精确控制哪些工具对模型可见:
5.1 过滤规则
执行顺序: enabled_tools(白名单)先过滤 → disabled_tools(黑名单)后排除。
5.2 配置示例
# 场景一:GitHub MCP 只保留 Issue 和 PR 相关工具
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
enabled_tools = [
"list_issues",
"create_issue",
"get_pull_request",
"create_pull_request",
"list_pull_requests"
]
# 场景二:Playwright 禁用可能有安全风险的工具
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
disabled_tools = ["browser_execute_javascript", "browser_pdf"]
# 场景三:白名单 + 黑名单组合
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot", "navigate"] # 先保留这 3 个
disabled_tools = ["screenshot"] # 再从中移除 screenshot → 最终只有 open 和 navigate每个 MCP 工具的 Schema 都会注入到模型上下文中,占用 context window。工具过多会:
- 挤压代码和推理空间
- 增加工具选择歧义,模型可能调用错误的工具
- 拖慢每次交互的首 token 延迟
经验法则: 单个 MCP Server 暴露给模型的工具数控制在 5-10 个以内。
六、高级配置选项
每个 MCP Server 支持以下精细化配置:
[mcp_servers.example]
# === STDIO 服务器专用 ===
command = "npx" # 启动命令(必填)
args = ["-y", "@example/mcp"] # 命令参数
cwd = "/path/to/project" # 工作目录
env_vars = ["MY_SECRET"] # 从宿主环境转发的变量
# === Streamable HTTP 服务器专用 ===
# url = "https://example.com/mcp" # 服务器地址(必填)
# bearer_token_env_var = "MY_TOKEN" # Bearer Token 环境变量名
# http_headers = { "X-Custom" = "value" } # 静态 HTTP 头
# env_http_headers = { "Auth" = "ENV" } # 动态 HTTP 头
# === 通用选项 ===
enabled = true # 是否启用(false 临时禁用)
# required = true # 启动时必须成功初始化
startup_timeout_sec = 10.0 # 启动超时(默认 10 秒)
tool_timeout_sec = 60.0 # 单次工具调用超时(默认 60 秒)
# enabled_tools = ["tool_a"] # 工具白名单
# disabled_tools = ["tool_b"] # 工具黑名单| 字段 | 默认值 | 说明 |
|---|---|---|
enabled | true | 设为 false 可临时禁用而不删除配置,下次改回 true 立即恢复 |
required | false | 设为 true 时,若该 Server 初始化失败,Codex 启动/恢复也会失败 |
startup_timeout_sec | 10 | Server 进程启动超时(秒)。npx 首次下载可能较慢,可适当增大 |
tool_timeout_sec | 60 | 单次工具调用超时(秒)。长时间操作(如浏览器渲染)可适当增大 |
enabled_tools | 全部 | 工具白名单数组,仅列出的工具对模型可见 |
disabled_tools | 无 | 工具黑名单数组,在白名单过滤后再排除 |
七、Codex 作为 MCP Server
Codex 不仅能连接 MCP Server,自身也能作为 MCP Server 运行,让其他 AI Agent 调用 Codex 的能力。
7.1 启动命令
# 基础启动
codex mcp-server
# 使用 MCP Inspector 调试
npx @modelcontextprotocol/inspector codex mcp-server7.2 暴露的工具
启动后,发送 tools/list 请求会看到两个工具:
| 工具名 | 说明 |
|---|---|
codex | 启动一个新的 Codex 会话。支持参数:prompt(必填)、model、approval-policy、sandbox、cwd、profile、config、base-instructions、include-plan-tool |
codex-reply | 继续一个已有的 Codex 会话。支持参数:prompt(必填)、threadId(必填,从上次响应的 structuredContent.threadId 获取) |
7.3 codex 工具参数详解
| 参数 | 类型 | 说明 |
|---|---|---|
prompt *必填 | string | 初始用户提示,启动 Codex 会话 |
model | string | 模型名覆盖,如 o3、o4-mini |
approval-policy | string | untrusted / on-request / never |
sandbox | string | read-only / workspace-write / danger-full-access |
cwd | string | 工作目录,相对路径基于 Server 进程的当前目录解析 |
profile | string | 使用 config.toml 中的指定 Profile |
config | object | 覆盖 $CODEX_HOME/config.toml 中的配置项 |
base-instructions | string | 替代默认系统指令 |
include-plan-tool | boolean | 是否在会话中包含 plan 工具 |
7.4 典型场景:Agents SDK 多智能体协作
将 Codex 作为 MCP Server,配合 OpenAI Agents SDK 构建多智能体工作流:
import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async def main() -> None:
async with MCPServerStdio(
name="Codex CLI",
params={
"command": "npx",
"args": ["-y", "codex", "mcp-server"],
},
client_session_timeout_seconds=360000,
) as codex_mcp_server:
developer = Agent(
name="Developer",
instructions=(
"You are an expert developer. "
'Call codex with "approval-policy": "never" '
'and "sandbox": "workspace-write".'
),
mcp_servers=[codex_mcp_server],
)
designer = Agent(
name="Designer",
instructions="Design a 3-sentence brief, then hand off.",
model="gpt-5",
handoffs=[developer],
)
await Runner.run(designer, "Build a fun browser game!")
if __name__ == "__main__":
asyncio.run(main())Codex 作为 MCP Server 意味着你可以将 Codex 的代码生成、文件操作、Shell 命令执行能力暴露给任何 MCP Client(Agents SDK、Claude Desktop、其他 AI 工具),实现 Agent 调用 Agent 的嵌套协作。
八、MCP + Skills 联动
Skill 可以声明对 MCP Server 的依赖,实现技能与工具的绑定。
8.1 声明 MCP 依赖
在 Skill 目录的 agents/openai.yaml 中声明:
# .agents/skills/my-skill/agents/openai.yaml
interface:
display_name: "GitHub Workflow"
short_description: "Automate GitHub PR and Issue management"
policy:
allow_implicit_invocation: true
dependencies:
tools:
- type: "mcp"
value: "github" # 对应 config.toml 中的 mcp_servers 名称
description: "GitHub MCP server"
transport: "streamable_http"
url: "https://api.githubcopilot.com/mcp/"
- type: "mcp"
value: "openaiDeveloperDocs"
description: "OpenAI Docs MCP server"
transport: "streamable_http"
url: "https://developers.openai.com/mcp"8.2 依赖解析流程
- Codex 加载 Skill 时读取
agents/openai.yaml中的dependencies.tools - 检查
config.toml中是否已配置对应的 MCP Server - 如果
features.skill_mcp_dependency_install = true(默认开启),Codex 会提示用户安装缺失的 MCP 依赖 - Skill 激活时,依赖的 MCP 工具自动可用
Codex 启动时只加载 Skill 的元数据(name、description)。只有当 Codex 决定使用某个 Skill 时,才会加载完整的 SKILL.md
指令和 MCP 依赖。这种设计避免了不必要的上下文占用。
九、设计原则
MCP 不是越多越好。 每个 MCP 服务器都会注入工具描述(tool schema)到模型上下文中,占用宝贵的 context window。安装过多会导致:
- 上下文浪费,挤压代码和推理空间
- 工具选择歧义,模型可能调用错误的工具
- 启动变慢,每个 MCP 都有初始化开销
精选原则: 只安装对全栈开发高频使用的 MCP。以下 4 个覆盖了 文档查询 → 浏览器调试 → GitHub 协作 → OpenAI API 参考 的完整链路,足以满足日常需求。
十、推荐 MCP 服务器
10.1 Context7 — 实时开发文档
| 属性 | 详情 |
|---|---|
| 用途 | 获取最新的、版本对应的库/框架文档和代码示例,直接注入 prompt,消灭 LLM 幻觉和过期 API |
| 传输方式 | STDIO(本地进程) |
| GitHub | upstash/context7(50k+ Stars,MIT) |
| 提供的工具 | resolve-library-id 解析库名 → Context7 ID;query-docs 根据库 ID + 问题获取相关文档 |
| 为何必装 | 全栈开发涉及 Spring Boot、Vue/React、Tailwind、PostgreSQL 等大量框架,Context7 确保 Codex 引用的 API 是当前版本的真实文档,而非训练数据中的过期信息 |
安装命令:
codex mcp add context7 -- npx -y @upstash/context7-mcp推荐在 context7.com/dashboard 获取免费 API Key 以享受更高速率限制。
安装后补充 API Key:
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
[mcp_servers.context7.env]
CONTEXT7_API_KEY = "your-api-key-here"[mcp_servers.context7.env] 必须紧跟在 [mcp_servers.context7] 之后,不能放在其他 [mcp_servers.xxx]
段之间,否则 TOML 解析会将其归属到错误的表。
10.2 Playwright — 浏览器自动化
| 属性 | 详情 |
|---|---|
| 用途 | 通过结构化 accessibility snapshot 控制浏览器,无需截图或视觉模型,LLM 原生友好 |
| 传输方式 | STDIO(本地进程) |
| NPM | @playwright/mcp(微软官方维护) |
| 提供的工具 | 浏览器导航、页面快照、元素交互、表单填写、JavaScript 执行、PDF 生成等 |
| 为何必装 | 全栈开发中前端调试、E2E 测试、页面交互验证是高频场景。Playwright MCP 让 Codex 能直接操控浏览器验证 UI 改动,无需人工切换窗口 |
安装命令:
codex mcp add playwright -- npx @playwright/mcp@latest- 默认 headed 模式(可见浏览器窗口),适合开发调试
- 加
--headless可切换为无头模式(CI/后台场景) - 加
--browser firefox可切换浏览器引擎 - 默认使用持久化 profile,登录状态跨会话保留
10.3 GitHub MCP — GitHub 平台深度集成
| 属性 | 详情 |
|---|---|
| 用途 | 管理 Pull Requests、Issues、Actions、Code Security 等 git CLI 无法覆盖的 GitHub 平台功能 |
| 传输方式 | Streamable HTTP(远程服务器,GitHub 托管) |
| GitHub | github/github-mcp-server(28k+ Stars,MIT) |
| 提供的工具 | 仓库浏览、Issue/PR 创建与管理、Actions 工作流监控、代码安全扫描、团队协作等 |
| 为何必装 | Codex 内置的 git 只能处理本地仓库操作。创建 PR、查看 CI 状态、管理 Issue 标签等平台级操作需要 GitHub MCP。这是从「写代码」到「交付代码」的关键桥梁 |
安装命令(远程模式,推荐,使用 OAuth 自动认证):
codex mcp add github --url https://api.githubcopilot.com/mcp/
codex mcp login githubGitHub MCP 默认启用 context、repos、issues、pull_requests、users 五个工具集,已覆盖日常开发需求。无需额外配置
toolsets,避免工具过多造成上下文浪费。
10.4 OpenAI Docs MCP — OpenAI 开发者文档
| 属性 | 详情 |
|---|---|
| 用途 | 搜索和读取 OpenAI 官方开发者文档(developers.openai.com • platform.openai.com) |
| 传输方式 | Streamable HTTP(远程服务器,OpenAI 托管) |
| 官方文档 | developers.openai.com/learn/docs-mcp |
| 提供的工具 | 只读搜索 + 文档内容读取(不会调用 OpenAI API) |
| 为何必装 | Refinex-Cloud 集成了 Spring AI,涉及 OpenAI API 调用。有了 Docs MCP,Codex 处理 AI 相关代码时能直接查阅最新 API 文档 |
安装命令:
codex mcp add openai-docs --url https://developers.openai.com/mcp十一、未选用的 MCP(按需安装)
| MCP | 适用场景 | 不选用原因 |
|---|---|---|
| Figma MCP | 设计稿 → 代码的 UI 开发流程 | 偏前端设计协作,后端/全栈场景使用频率低 |
| Chrome DevTools MCP | Chrome 开发者工具远程控制 | 功能与 Playwright MCP 高度重叠,后者更通用 |
| Sentry MCP | 生产环境错误日志分析 | 需要 Sentry 账户和项目接入,待项目上线后再配置 |
十二、实战:完整 MCP 配置
12.1 config.toml 完整配置
# ===========================================================================
# MCP 服务器配置 — 全栈开发者精选版
# 原则:只装高频使用的,避免上下文浪费
# 文档:https://developers.openai.com/codex/mcp
# ===========================================================================
# ---------------------------------------------------------------------------
# 1. Context7 — 实时开发文档(STDIO)
# ---------------------------------------------------------------------------
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
[mcp_servers.context7.env]
CONTEXT7_API_KEY = "your-api-key-here"
# ---------------------------------------------------------------------------
# 2. Playwright — 浏览器自动化(STDIO)
# ---------------------------------------------------------------------------
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
# 无头模式:args = ["@playwright/mcp@latest", "--headless"]
# 指定浏览器:args = ["@playwright/mcp@latest", "--browser", "firefox"]
# ---------------------------------------------------------------------------
# 3. GitHub — 平台深度集成(Streamable HTTP + OAuth)
# ---------------------------------------------------------------------------
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
# 首次使用:codex mcp login github
# ---------------------------------------------------------------------------
# 4. OpenAI Docs — 开发者文档(Streamable HTTP,无需认证)
# ---------------------------------------------------------------------------
[mcp_servers.openai-docs]
url = "https://developers.openai.com/mcp"12.2 扩展场景:Linear MCP + 自定义内部工具
# ---------------------------------------------------------------------------
# 5. Linear — 项目管理(Streamable HTTP + OAuth)
# 适用:使用 Linear 管理 Issue/Sprint 的团队
# ---------------------------------------------------------------------------
[mcp_servers.linear]
url = "https://mcp.linear.app/sse"
# 首次使用:codex mcp login linear
enabled_tools = [
"list_issues",
"create_issue",
"update_issue",
"list_projects"
]
tool_timeout_sec = 30
# ---------------------------------------------------------------------------
# 6. 自定义内部工具 — 企业内部 API(STDIO)
# 适用:封装内部 CLI / REST API 为 MCP Server
# ---------------------------------------------------------------------------
[mcp_servers.internal-deploy]
command = "node"
args = ["/opt/tools/deploy-mcp/server.js"]
cwd = "/opt/tools/deploy-mcp"
env_vars = ["DEPLOY_TOKEN", "REGISTRY_URL"] # 从宿主环境转发
startup_timeout_sec = 15
tool_timeout_sec = 120 # 部署操作可能较慢
enabled_tools = ["deploy_staging", "rollback", "status"]
disabled_tools = ["deploy_production"] # 生产部署需人工审批
# ---------------------------------------------------------------------------
# 7. 自定义内部工具 — 远程模式(Streamable HTTP + Bearer Token)
# ---------------------------------------------------------------------------
[mcp_servers.internal-api]
url = "https://mcp.internal.example.com/v1"
bearer_token_env_var = "INTERNAL_MCP_TOKEN"
http_headers = { "X-Team" = "platform" }
required = true # 该工具是核心依赖,启动时必须成功12.3 一键安装脚本
#!/bin/bash
# Codex MCP 一键安装脚本
set -e
echo "=== Installing MCP Servers ==="
# STDIO Servers
codex mcp add context7 -- npx -y @upstash/context7-mcp
codex mcp add playwright -- npx @playwright/mcp@latest
# Streamable HTTP Servers
codex mcp add github --url https://api.githubcopilot.com/mcp/
codex mcp add openai-docs --url https://developers.openai.com/mcp
# OAuth Login
echo "\n=== OAuth Login ==="
codex mcp login github
# Verify
echo "\n=== Installed MCP Servers ==="
codex mcp list
echo "\n✅ All MCP servers configured successfully!"十三、最佳实践清单
| # | 实践 | 原因 |
|---|---|---|
| 1 | 控制 MCP 总数在 4-6 个 | 避免 context window 浪费和工具选择歧义 |
| 2 | 用 enabled_tools 收窄工具集 | 减少注入的 schema,提升模型工具选择准确度 |
| 3 | 敏感凭证用 env_vars 转发 | 避免 API Key 明文写入版本控制 |
| 4 | 项目级 MCP 放 .codex/config.toml | 团队共享配置,新成员 codex trust 后自动生效 |
| 5 | 不用的 MCP 设 enabled = false | 保留配置但不占用 context,按需恢复 |
| 6 | 为慢操作调大 tool_timeout_sec | 避免浏览器渲染、部署等长时间操作超时失败 |
| 7 | 关键 MCP 设 required = true | 确保核心依赖初始化失败时快速报错,而非静默降级 |
| 8 | Skill 声明 MCP 依赖 | 实现技能与工具的绑定,自动提示安装缺失依赖 |