Codex: Codex MCP
最后更新:2026-08-31
MCP(Model Context Protocol)是让 Codex 连接外部世界的桥梁——数据库、API、云服务、文档系统等。
📋 前置知识:了解 Codex 基本操作与配置
1. 你将学到
- MCP 概念与架构
- 内置 MCP 服务器
- 自定义 MCP 集成
- 常见 MCP 场景
2. 什么是 MCP
MCP 是 Model Context Protocol 的缩写,定义了 AI Agent 与外部工具通信的标准协议。
graph LR
A[Codex Agent] --> B[MCP Client]
B --> C[MCP Server: 数据库]
B --> D[MCP Server: GitHub]
B --> E[MCP Server: 文档]
B --> F[MCP Server: 云服务]
| 概念 | 说明 |
|---|---|
| MCP Server | 提供工具和数据的服务端 |
| MCP Client | Codex 内置的客户端 |
| Tool | Server 暴露的操作 |
| Resource | Server 提供的数据 |
3. 内置 MCP 服务器
Codex 内置了常用 MCP 服务器:
| 服务器 | 功能 | 工具示例 |
|---|---|---|
| filesystem | 文件操作 | read_file, write_file, list_dir |
| github | GitHub 操作 | create_pr, list_issues, review_pr |
| fetch | 网络请求 | get_url, post_url |
| database | 数据库操作 | query, insert, update |
4. 配置 MCP 服务器
(1) 全局配置
JSON
{
"mcp_servers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_xxx"
}
}
}
}
(2) 项目级配置
JSON
// .codex/mcp.json
{
"mcp_servers": {
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost/mydb"
}
}
}
}
▶ 示例 1: Alice 连接数据库
JSON
// Alice 的项目 MCP 配置
{
"mcp_servers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost/ecommerce"
}
}
}
}
TEXT
📖 仅展示
# Alice 让 Codex 查询数据库
> 查询最近 7 天的订单数量和总金额
# Codex 通过 MCP 调用数据库
→ Connected to postgres MCP server
→ Executing: SELECT COUNT(*), SUM(amount) FROM orders WHERE created_at > NOW() - INTERVAL '7 days'
→ Result: 1,234 orders, $89,567.89 total
5. 常见 MCP 场景
(1) 数据库操作
TEXT
📖 仅展示
> 查看用户表的结构
> 查询活跃用户数量
> 为新功能创建数据库迁移
(2) GitHub 集成
TEXT
📖 仅展示
> 列出待处理的 Issue
> 创建 PR 并关联 Issue #15
> 查看 PR #42 的审查评论
(3) 文档查询
TEXT
📖 仅展示
> 查阅 Notion 中的 API 设计文档
> 读取 Confluence 的技术规范
> 搜索项目 Wiki 中的部署指南
(4) 云服务操作
TEXT
📖 仅展示
> 查看 AWS S3 存储桶列表
> 检查 CloudWatch 告警
> 列出 EC2 实例状态
▶ 示例 2: Bob 的 MCP 工作流
TEXT
📖 仅展示
# Bob 用 MCP 完成数据驱动开发
> 1. 查询数据库中 products 表的结构
> 2. 根据 Schema 创建 TypeScript 类型定义
> 3. 生成 CRUD API 端点
> 4. 编写集成测试
# Codex 通过 MCP:
→ Connected to postgres MCP server
→ Reading products table schema...
→ Creating TypeScript types...
→ Generating API endpoints...
→ Writing integration tests...
→ All done ✓
6. 自定义 MCP 服务器
(1) 创建简单 MCP Server
TYPESCRIPT
import { Server } from "@modelcontextprotocol/sdk/server";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio";
const server = new Server({
name: "my-custom-server",
version: "1.0.0",
});
server.tool("search_docs", { query: { type: "string" } }, async ({ query }) => {
const results = await searchDocumentation(query);
return { content: [{ type: "text", text: JSON.stringify(results) }] };
});
const transport = new StdioServerTransport();
await server.connect(transport);
(2) 注册到 Codex
JSON
{
"mcp_servers": {
"my-docs": {
"command": "node",
"args": ["/path/to/my-mcp-server.js"]
}
}
}
7. MCP 安全
| 安全措施 | 说明 |
|---|---|
| 权限控制 | 每个 MCP Server 只暴露必要工具 |
| 环境隔离 | MCP Server 在独立进程中运行 |
| 审计日志 | 记录所有 MCP 工具调用 |
| 只读优先 | 数据库等敏感服务优先只读 |
❓ 常见问题
Q MCP 和普通 API 调用有什么区别?
A MCP 是标准化协议,Codex 能自动发现和使用 MCP 工具,无需手动编写 API 调用代码。普通 API 需要手动集成。
Q MCP 支持哪些数据库?
A 支持 PostgreSQL、MySQL、SQLite、MongoDB 等主流数据库。社区还有更多数据库的 MCP 服务器。
Q 自定义 MCP Server 复杂吗?
A 不复杂。使用 MCP SDK 创建一个 Server 只需几十行代码。主要工作是实现具体的工具逻辑。
Q MCP 会暴露敏感数据吗?
A 取决于配置。建议数据库 MCP 使用只读账号,API MCP 限制可访问的端点。
Q MCP 影响性能吗?
A 每个 MCP Server 是独立进程,有启动开销。首次调用稍慢,后续调用正常。
📖 小节
- MCP 是 AI Agent 连接外部工具的标准协议
- 内置服务器:filesystem / github / fetch / database
- 配置:全局或项目级 mcp.json
- 场景:数据库操作、GitHub 集成、文档查询、云服务
- 安全:权限控制、只读优先、审计日志
📝 作业
- 基础题(难度⭐):配置一个 MCP 服务器(如 filesystem),让 Codex 使用它操作文件。
- 进阶题(难度⭐⭐):配置数据库 MCP 服务器,让 Codex 查询数据并生成代码。
- 挑战题(难度⭐⭐⭐):创建一个自定义 MCP 服务器,连接你们公司的内部 API。