Refinex DevHubRefinex DevHub
DocsBlogProjectsSitesChangelogAbout
Assistant
你好,我可以基于当前页面内容回答问题、提炼重点,或者告诉你下一步应该继续读什么。
  1. Docs›
  2. MCP 集成深度指南
Overview
Codex 全景:产品矩阵、模型演进与定价
安装与首次运行:5 分钟从零到第一次对话
核心概念精讲:Prompting、Sandboxing 与 Approval
Codex CLI 深度指南:终端中的编码智能体
Codex App 深度指南:多智能体的指挥中心
IDE Extension 深度指南:编辑器内的 AI 搭档
Codex Web/Cloud:云端异步任务与环境配置
AGENTS.md:让 Codex 真正理解你的项目
config.toml 深度配置指南
MCP 集成深度指南
Agent Skills 深度指南
Subagents:多智能体并行工作流
集成:GitHub、Slack、Linear
自动化与程序化控制:Non-interactive、SDK、App Server
Codex Security:仓库安全扫描与威胁建模
企业部署与团队治理
Prompting 高级指南:从 Cookbook 到实战模式
终极实战:构建 AI 编码团队
  1. Docs›
  2. MCP 集成深度指南

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 HostAI 应用本体,负责协调和管理多个 MCP ClientCodex CLI / IDE Extension / Codex App
MCP ClientHost 内部组件,为每个 MCP Server 维护一条专用连接Codex 运行时自动为每个配置的 Server 创建 Client
MCP Server提供工具/资源/提示的程序,可以是本地进程或远程服务Context7、Playwright、GitHub MCP 等
Mermaid
正在渲染 Mermaid 图表…

关键机制:

  • 一对一连接: 每个 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
Toml
# 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
Toml
# 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_varsContext7 API Key、自定义工具 Token
OAuth 2.0Streamable HTTPcodex mcp login <name>GitHub MCP(GitHub OAuth)
Bearer TokenStreamable HTTPbearer_token_env_var = "ENV_NAME"Figma MCP、企业内部 API
自定义 HeaderStreamable HTTPhttp_headers 或 env_http_headers需要特殊头部的企业服务
无认证STDIO / HTTP不配置任何认证字段OpenAI Docs MCP(只读公开)

3.2 环境变量认证(STDIO)

两种传递方式:

Toml
# 方式一:直接设置(值写在 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 流程:

Bash
# 1. 添加远程 MCP
codex mcp add github --url https://api.githubcopilot.com/mcp/
​
# 2. 执行 OAuth 登录(浏览器弹窗授权)
codex mcp login github

OAuth 回调配置(高级):

Toml
# 固定回调端口(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)

Toml
[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

Toml
[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 完整生命周期示例

Bash
# ① 添加 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 playwright
CLI vs config.toml

codex mcp add 本质上是向 ~/.codex/config.toml 写入配置。两种方式完全等价,CLI 更快捷,手动编辑更精细。CLI 和 IDE Extension 共享同一份配置文件。

五、工具白名单与黑名单

当 MCP Server 提供的工具过多时,可以通过 enabled_tools 和 disabled_tools 精确控制哪些工具对模型可见:

5.1 过滤规则

Mermaid
正在渲染 Mermaid 图表…

执行顺序: enabled_tools(白名单)先过滤 → disabled_tools(黑名单)后排除。

5.2 配置示例

Toml
# 场景一: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 支持以下精细化配置:

Toml
[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"]          # 工具黑名单
字段默认值说明
enabledtrue设为 false 可临时禁用而不删除配置,下次改回 true 立即恢复
requiredfalse设为 true 时,若该 Server 初始化失败,Codex 启动/恢复也会失败
startup_timeout_sec10Server 进程启动超时(秒)。npx 首次下载可能较慢,可适当增大
tool_timeout_sec60单次工具调用超时(秒)。长时间操作(如浏览器渲染)可适当增大
enabled_tools全部工具白名单数组,仅列出的工具对模型可见
disabled_tools无工具黑名单数组,在白名单过滤后再排除

七、Codex 作为 MCP Server

Codex 不仅能连接 MCP Server,自身也能作为 MCP Server 运行,让其他 AI Agent 调用 Codex 的能力。

7.1 启动命令

Bash
# 基础启动
codex mcp-server
​
# 使用 MCP Inspector 调试
npx @modelcontextprotocol/inspector codex mcp-server

7.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 会话
modelstring模型名覆盖,如 o3、o4-mini
approval-policystringuntrusted / on-request / never
sandboxstringread-only / workspace-write / danger-full-access
cwdstring工作目录,相对路径基于 Server 进程的当前目录解析
profilestring使用 config.toml 中的指定 Profile
configobject覆盖 $CODEX_HOME/config.toml 中的配置项
base-instructionsstring替代默认系统指令
include-plan-toolboolean是否在会话中包含 plan 工具

7.4 典型场景:Agents SDK 多智能体协作

将 Codex 作为 MCP Server,配合 OpenAI Agents SDK 构建多智能体工作流:

Python
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 中声明:

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 依赖解析流程

  1. Codex 加载 Skill 时读取 agents/openai.yaml 中的 dependencies.tools
  2. 检查 config.toml 中是否已配置对应的 MCP Server
  3. 如果 features.skill_mcp_dependency_install = true(默认开启),Codex 会提示用户安装缺失的 MCP 依赖
  4. Skill 激活时,依赖的 MCP 工具自动可用
渐进式加载

Codex 启动时只加载 Skill 的元数据(name、description)。只有当 Codex 决定使用某个 Skill 时,才会加载完整的 SKILL.md 指令和 MCP 依赖。这种设计避免了不必要的上下文占用。

九、设计原则

Warning

MCP 不是越多越好。 每个 MCP 服务器都会注入工具描述(tool schema)到模型上下文中,占用宝贵的 context window。安装过多会导致:

  • 上下文浪费,挤压代码和推理空间
  • 工具选择歧义,模型可能调用错误的工具
  • 启动变慢,每个 MCP 都有初始化开销

精选原则: 只安装对全栈开发高频使用的 MCP。以下 4 个覆盖了 文档查询 → 浏览器调试 → GitHub 协作 → OpenAI API 参考 的完整链路,足以满足日常需求。

十、推荐 MCP 服务器

10.1 Context7 — 实时开发文档

属性详情
用途获取最新的、版本对应的库/框架文档和代码示例,直接注入 prompt,消灭 LLM 幻觉和过期 API
传输方式STDIO(本地进程)
GitHubupstash/context7(50k+ Stars,MIT)
提供的工具resolve-library-id 解析库名 → Context7 ID;query-docs 根据库 ID + 问题获取相关文档
为何必装全栈开发涉及 Spring Boot、Vue/React、Tailwind、PostgreSQL 等大量框架,Context7 确保 Codex 引用的 API 是当前版本的真实文档,而非训练数据中的过期信息

安装命令:

Bash
codex mcp add context7 -- npx -y @upstash/context7-mcp
提示

推荐在 context7.com/dashboard 获取免费 API Key 以享受更高速率限制。

安装后补充 API Key:

Toml
[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 改动,无需人工切换窗口

安装命令:

Bash
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 托管)
GitHubgithub/github-mcp-server(28k+ Stars,MIT)
提供的工具仓库浏览、Issue/PR 创建与管理、Actions 工作流监控、代码安全扫描、团队协作等
为何必装Codex 内置的 git 只能处理本地仓库操作。创建 PR、查看 CI 状态、管理 Issue 标签等平台级操作需要 GitHub MCP。这是从「写代码」到「交付代码」的关键桥梁

安装命令(远程模式,推荐,使用 OAuth 自动认证):

Bash
codex mcp add github --url https://api.githubcopilot.com/mcp/
codex mcp login github
默认工具集

GitHub 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 文档

安装命令:

Bash
codex mcp add openai-docs --url https://developers.openai.com/mcp

十一、未选用的 MCP(按需安装)

MCP适用场景不选用原因
Figma MCP设计稿 → 代码的 UI 开发流程偏前端设计协作,后端/全栈场景使用频率低
Chrome DevTools MCPChrome 开发者工具远程控制功能与 Playwright MCP 高度重叠,后者更通用
Sentry MCP生产环境错误日志分析需要 Sentry 账户和项目接入,待项目上线后再配置

十二、实战:完整 MCP 配置

12.1 config.toml 完整配置

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 + 自定义内部工具

Toml
# ---------------------------------------------------------------------------
# 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 一键安装脚本

Bash
#!/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确保核心依赖初始化失败时快速报错,而非静默降级
8Skill 声明 MCP 依赖实现技能与工具的绑定,自动提示安装缺失依赖

参考文档

  • Codex MCP 官方文档
  • Codex 作为 MCP Server(Agents SDK)
  • MCP 协议架构概述
  • Agent Skills 官方文档
  • OpenAI Docs MCP
  • Context7 GitHub
  • Playwright MCP (NPM)
  • GitHub MCP Server
  • Config Basics
  • Config Reference
← 上一篇
下一篇 →
一、MCP 协议基础1.1 什么是 MCP1.2 Host / Client / Server 三角架构1.3 协议分层二、STDIO vs Streamable HTTP 传输方式2.1 STDIO(标准输入输出)2.2 Streamable HTTP2.3 选型决策三、认证流程3.1 认证方式总览3.2 环境变量认证(STDIO)3.3 OAuth 2.0 认证(Streamable HTTP)3.4 Bearer Token 认证(Streamable HTTP)3.5 自定义 HTTP Header四、运行时管理:CLI 命令4.1 命令速查4.2 完整生命周期示例五、工具白名单与黑名单5.1 过滤规则5.2 配置示例六、高级配置选项七、Codex 作为 MCP Server7.1 启动命令7.2 暴露的工具7.3 codex 工具参数详解7.4 典型场景:Agents SDK 多智能体协作八、MCP + Skills 联动8.1 声明 MCP 依赖8.2 依赖解析流程九、设计原则十、推荐 MCP 服务器10.1 Context7 — 实时开发文档10.2 Playwright — 浏览器自动化10.3 GitHub MCP — GitHub 平台深度集成10.4 OpenAI Docs MCP — OpenAI 开发者文档十一、未选用的 MCP(按需安装)十二、实战:完整 MCP 配置12.1 config.toml 完整配置12.2 扩展场景:Linear MCP + 自定义内部工具12.3 一键安装脚本十三、最佳实践清单参考文档