VS Code / Warp MCP 迁移到 Codex MCP 配置总结

适用场景:Linux 远程服务器 + VS Code Remote-SSH + VS Code Codex 插件。

目标:把原来在 VS Code 或 Warp 中可用的 MCP Server,迁移到 Codex 的 ~/.codex/config.toml 中,让 Codex CLI / Codex IDE Extension 能识别和调用这些 MCP 工具。


1. 背景

你原来有两类 MCP 配置来源:

  1. VS Code MCP 配置

    通常放在 .vscode/mcp.json 或 VS Code 用户配置中,主要给 VS Code 内部的 Copilot Chat / Agent Mode / 自定义 Agent 使用。

  2. Warp MCP 配置

    Warp 中也有自己的 MCP 配置格式,里面记录了 MCP Server 的 commandargsenv 等信息。

但是你现在想让 VS Code 中的 Codex 插件 使用这些 MCP 工具。这里的关键点是:

text 复制代码
VS Code / Warp 的 MCP 配置
≠
Codex 自动可用的 MCP 配置

Codex 有自己的配置文件:

bash 复制代码
~/.codex/config.toml

Codex CLI 和 Codex IDE Extension 共享这套配置。根据 OpenAI Codex 官方文档,Codex 的 MCP server 配置需要写到 config.toml 中,并使用:

toml 复制代码
[mcp_servers.<server-name>]

这种 TOML table 格式。

参考:


2. 为什么 VS Code 的 MCP 工具不能直接被 Codex 使用

2.1 MCP 不是系统级全局工具

MCP 是一种协议,但每个客户端都要自己连接 MCP Server。

也就是说:

text 复制代码
VS Code 是一个 MCP Client
Codex 也是一个 MCP Client
Warp 也是一个 MCP Client

你在 VS Code 中配置 MCP,只代表 VS Code Agent 能看到这些工具;并不代表 Codex 自动能看到。


2.2 配置文件位置不同

工具 MCP 配置位置 配置格式
VS Code .vscode/mcp.json 或用户级 MCP 配置 JSON
Warp Warp 内部 MCP 配置 JSON
Codex ~/.codex/config.toml TOML

所以需要做一次格式迁移。


2.3 Remote-SSH 场景中,本地路径不能直接用

你的原始 Warp / VS Code 配置中有 Windows 路径:

text 复制代码
D:/Document/code/ScholAI/main.py
D:/Document/code/Office-Word-MCP-Server/word_mcp_server.py
D:/Document/code/arxiv-mcp-server

但是现在 Codex 运行在 Linux 远程服务器上,Linux 无法访问 D:/...

因此这些路径必须改成远程服务器上的 Linux 路径,例如:

text 复制代码
/workspace/ScholAI/main.py
/workspace/Office-Word-MCP-Server/word_mcp_server.py
/workspace/arxiv-mcp-server

如果远程服务器上没有这些文件,就算配置成 enabled = true,MCP Server 也无法正常启动。


3. 原始 MCP 工具列表

你之前 Warp / VS Code 中的 MCP 工具包括:

text 复制代码
chrome-devtools
context7
sequential-thinking
schoAi
arxiv-mcp-server
word-document-server
drawio

它们大致作用如下:

MCP Server 作用 依赖
chrome-devtools 连接 Chrome DevTools,辅助浏览器调试 npx
context7 查询库文档 / 技术文档 npx + CONTEXT7_API_KEY
sequential-thinking 结构化分步思考工具 npx
arxiv-mcp-server 查询 arXiv 论文 npx + SILICONFLOW_API_KEY
drawio 操作 / 生成 draw.io drawio-mcp-servernpx
schoAi 本地 Python 学术工具 Python 脚本路径
word-document-server Word 文档相关 MCP Python 脚本路径

4. API Key 处理方式

4.1 不建议把 API Key 明文写进 config.toml

不推荐:

toml 复制代码
[mcp_servers.context7.env]
CONTEXT7_API_KEY = "真实 key"

原因是你经常会把 config.toml 发给别人排查问题,一旦里面有真实 key,就会泄露。


4.2 简化方案:写入 ~/.bashrc

你最后选择先使用简单方案:把环境变量写入 ~/.bashrc

命令模板如下:

bash 复制代码
cat >> ~/.bashrc <<'EOF'

# MCP API Keys for Codex
export CONTEXT7_API_KEY="在这里粘贴你的 Context7 API Key"
export SILICONFLOW_API_KEY="在这里粘贴你的 SiliconFlow API Key"
EOF

source ~/.bashrc

检查是否生效时,不建议直接完整打印 key,可以用:

bash 复制代码
python3 - <<'PY'
import os

for k in ["CONTEXT7_API_KEY", "SILICONFLOW_API_KEY"]:
    v = os.environ.get(k, "")
    if v:
        print(f"{k}: OK, {v[:6]}...{v[-4:]}")
    else:
        print(f"{k}: MISSING")
PY

注意:~/.bashrc 也是明文文件。这个方案只是比把 key 直接写入 config.toml 更方便排查和迁移,并不是绝对安全。更安全的方式是使用单独的 ~/.codex/secrets.env 并设置权限,但当前阶段你选择先用简化方案。


5. Codex MCP 配置写法

5.1 原有 Codex 配置

你的远程服务器 ~/.codex/config.toml 原本类似:

toml 复制代码
model = "gpt-5.4"
model_reasoning_effort = "high"

[plugins."github@openai-curated"]
enabled = true

[projects."/workspace"]
trust_level = "trusted"

[projects."/workspace/xDiT"]
trust_level = "trusted"

MCP 配置可以直接追加在后面。


5.2 完整 MCP 配置示例

注意:如果你之前已经追加过同名 [mcp_servers.xxx],不要重复追加。TOML 不允许重复 table。

正确做法是先备份,然后删除旧 MCP 段,再粘贴下面的完整配置。

先备份:

bash 复制代码
cp ~/.codex/config.toml ~/.codex/config.toml.bak.$(date +%Y%m%d_%H%M%S)

编辑:

bash 复制代码
nano ~/.codex/config.toml

在文件末尾加入:

toml 复制代码
# =========================
# MCP Servers
# Migrated from Warp / VS Code MCP config
# Linux remote version for Codex
# =========================

[mcp_servers.chrome-devtools]
command = "npx"
args = ["-y", "chrome-devtools-mcp@latest"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["CONTEXT7_API_KEY"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

[mcp_servers.sequential-thinking]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-sequential-thinking"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

[mcp_servers.arxiv-mcp-server]
command = "npx"
args = ["-y", "@langgpt/arxiv-mcp-server@latest"]
env_vars = ["SILICONFLOW_API_KEY"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

[mcp_servers.arxiv-mcp-server.env]
WORK_DIR = "/workspace/arxiv-mcp-server"

[mcp_servers.drawio]
command = "drawio-mcp-server"
args = ["--extension-port", "8081"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

# =========================
# Local Python MCP servers
# 注意:这些原来是 Windows D:/ 路径
# Linux 远程服务器上必须改成真实 Linux 路径
# 如果文件不存在,建议先 enabled = false
# =========================

[mcp_servers.schoAi]
command = "python3"
args = ["/workspace/ScholAI/main.py"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = false

[mcp_servers.word-document-server]
command = "python3"
args = ["/workspace/Office-Word-MCP-Server/word_mcp_server.py"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = false

这里把 schoAiword-document-server 暂时设置为:

toml 复制代码
enabled = false

原因是这两个原本依赖 Windows 本地路径。只有当你把对应项目复制到 Linux 服务器并确认路径存在之后,才建议改成:

toml 复制代码
enabled = true

6. drawio 的特殊情况

你认为 drawio 也应该放在启用区域,这个判断是对的。

如果远程服务器上已经有:

bash 复制代码
drawio-mcp-server

那么可以用:

toml 复制代码
[mcp_servers.drawio]
command = "drawio-mcp-server"
args = ["--extension-port", "8081"]
enabled = true

检查命令:

bash 复制代码
which drawio-mcp-server
drawio-mcp-server --help

如果找不到 drawio-mcp-server,可以改成 npx 方式:

toml 复制代码
[mcp_servers.drawio]
command = "npx"
args = ["-y", "@next-ai-drawio/mcp-server@latest"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

注意不要同时保留两个 [mcp_servers.drawio],否则配置文件会报错。


7. 创建 arxiv MCP 工作目录

配置中写了:

toml 复制代码
[mcp_servers.arxiv-mcp-server.env]
WORK_DIR = "/workspace/arxiv-mcp-server"

所以需要创建目录:

bash 复制代码
mkdir -p /workspace/arxiv-mcp-server

如果没有 /workspace 权限,可以改到 home 目录:

bash 复制代码
mkdir -p ~/arxiv-mcp-server

并把配置改成:

toml 复制代码
[mcp_servers.arxiv-mcp-server.env]
WORK_DIR = "/home/你的用户名/arxiv-mcp-server"

8. 检查依赖

远程服务器需要有 Node.js / npm / npx / Python:

bash 复制代码
node -v
npm -v
npx -v
python3 --version

如果没有 node / npm / npx,以下 MCP 会启动失败:

text 复制代码
chrome-devtools
context7
sequential-thinking
arxiv-mcp-server

Ubuntu / Debian 可以安装:

bash 复制代码
sudo apt update
sudo apt install -y nodejs npm

如果当前用户是 root:

bash 复制代码
apt update
apt install -y nodejs npm

9. 检查 TOML 格式

配置完成后,检查 ~/.codex/config.toml 是否语法正确:

bash 复制代码
python3 - <<'PY'
import os
try:
    import tomllib
except ModuleNotFoundError:
    print("Python < 3.11, skip TOML check.")
    raise SystemExit(0)

path = os.path.expanduser("~/.codex/config.toml")
with open(path, "rb") as f:
    tomllib.load(f)

print("config.toml OK")
PY

如果出现重复 table 报错,例如:

text 复制代码
Cannot declare ('mcp_servers', 'context7') twice

说明你重复写了同一个 MCP server,需要删除旧的那一段。


10. 重新加载 Codex 插件

修改 ~/.codex/config.toml 后,当前已经打开的 Codex 会话通常不会自动热加载新 MCP。

推荐顺序:

text 复制代码
1. 保存 ~/.codex/config.toml
2. 关闭当前 Codex 会话
3. 新建 Codex 会话

如果 MCP 还没出现:

text 复制代码
Ctrl + Shift + P
→ Developer: Reload Window

如果环境变量仍然没有被 VS Code Codex 插件继承:

text 复制代码
Ctrl + Shift + P
→ Remote-SSH: Kill VS Code Server on Host
→ 重新连接远程服务器

11. 如何判断迁移成功

在 VS Code Codex 插件的 MCP 面板中,你看到类似:

text 复制代码
arxiv-mcp-server       已启用
chrome-devtools        已启用
codex_apps             已启用
context7               已启用
drawio                 已启用
sequential-thinking    已启用
schoAi                 已禁用
word-document-server   已禁用

这说明大部分迁移已经成功。

其中:

text 复制代码
不支持身份验证

不是错误。它只是说明 Codex MCP 面板没有为这个 server 提供 OAuth / 登录按钮。像 context7arxiv-mcp-server 的 key 是通过环境变量传入的,所以不会显示成"已通过身份验证"。

真正重要的是右侧状态:

text 复制代码
已启用

12. 为什么 schoAiword-document-server 仍然是已禁用

原因通常是配置里仍然写了:

toml 复制代码
enabled = false

这是合理的,因为它们依赖远程服务器上的 Python 脚本路径。

检查配置:

bash 复制代码
grep -A8 -n "mcp_servers.schoAi" ~/.codex/config.toml
grep -A8 -n "mcp_servers.word-document-server" ~/.codex/config.toml

检查文件是否存在:

bash 复制代码
ls /workspace/ScholAI/main.py
ls /workspace/Office-Word-MCP-Server/word_mcp_server.py

如果文件存在,可以改成:

toml 复制代码
enabled = true

如果文件不存在,不要强行启用,否则 MCP Server 会启动失败。


13. 最终推荐状态

当前阶段推荐:

MCP Server 推荐状态 原因
chrome-devtools 启用 npx 可直接启动
context7 启用 通过 CONTEXT7_API_KEY 使用
sequential-thinking 启用 不需要额外认证
arxiv-mcp-server 启用 通过 SILICONFLOW_API_KEY 使用
drawio 启用 如果命令可用,建议启用
schoAi 暂时禁用 需要把 Windows 本地项目迁移到 Linux
word-document-server 暂时禁用 需要把 Windows 本地项目迁移到 Linux

14. 常见问题与解决方式

问题 1:MCP 面板显示"不支持身份验证"

这不是错误。说明该 MCP Server 不支持在 Codex 面板里点击登录。API Key 可以通过环境变量传入。


问题 2:MCP 显示已启用,但调用失败

检查依赖:

bash 复制代码
node -v
npm -v
npx -v
python3 --version

检查环境变量:

bash 复制代码
python3 - <<'PY'
import os
for k in ["CONTEXT7_API_KEY", "SILICONFLOW_API_KEY"]:
    print(k, "OK" if os.environ.get(k) else "MISSING")
PY

问题 3:VS Code Codex 插件看不到环境变量

说明插件进程没有继承新的 .bashrc 环境变量。

解决:

text 复制代码
Ctrl + Shift + P
→ Remote-SSH: Kill VS Code Server on Host
→ 重新连接远程服务器

问题 4:配置文件报错

通常是重复写了同一个 MCP table,例如:

toml 复制代码
[mcp_servers.context7]

出现了两次。

解决:打开 ~/.codex/config.toml,只保留一份。


问题 5:Linux 远程服务器找不到 Windows 路径

例如:

text 复制代码
D:/Document/code/ScholAI/main.py

Linux 无法访问。必须传到远程服务器后改成:

text 复制代码
/workspace/ScholAI/main.py

15. 本次实际验证结果:Reload Window 后 MCP 可用

后续实际测试中发现:

text 复制代码
在 VS Code Codex 插件中,MCP 面板虽然已经显示多个 MCP Server 为"已启用",
但当前 Codex 会话最初仍可能无法直接看到或调用这些工具。

最终有效的操作是:

text 复制代码
Ctrl + Shift + P
→ Developer: Reload Window
→ 重新打开 / 新建 Codex 会话

重新加载窗口后,已启用的 MCP 工具可以被 Codex 正常识别和使用。

因此,这次迁移中得到的一个重要经验是:

text 复制代码
修改 ~/.codex/config.toml 后,
如果 MCP 面板显示已启用但当前会话仍说"看不到工具",
优先执行 Developer: Reload Window。

如果涉及 .bashrc 中新增环境变量,Reload Window 后仍不生效,再执行:

text 复制代码
Ctrl + Shift + P
→ Remote-SSH: Kill VS Code Server on Host
→ 重新连接远程服务器

实际推荐刷新顺序更新为:

text 复制代码
1. 保存 ~/.codex/config.toml
2. 关闭当前 Codex 会话,新建会话
3. 如果仍不可用,执行 Developer: Reload Window
4. 如果环境变量仍不可用,再 Kill VS Code Server 并重连 Remote-SSH

16. 手动测试 MCP 是否可用的方法

16.1 查看 Codex 是否识别 MCP Server

如果远程服务器上可以使用 Codex CLI,可以在终端执行:

bash 复制代码
codex

进入 Codex TUI 后输入:

text 复制代码
/mcp

如果能看到类似:

text 复制代码
context7
sequential-thinking
arxiv-mcp-server
drawio
chrome-devtools

说明 Codex CLI 已经识别这些 MCP Server。

在 VS Code Codex 插件中,也可以通过 MCP 面板查看状态。右侧显示:

text 复制代码
已启用

表示配置层面已经被 Codex 识别。


16.2 检查基础依赖是否存在

大部分 MCP Server 依赖 node / npm / npx,本地 Python MCP 依赖 python3

bash 复制代码
node -v
npm -v
npx -v
python3 --version

如果 npx 不存在,下面这些 MCP 很可能无法启动:

text 复制代码
chrome-devtools
context7
sequential-thinking
arxiv-mcp-server
drawio 的 npx 版本

16.3 检查 API Key 是否进入当前环境

不要完整打印 API Key,可以只检查是否存在:

bash 复制代码
python3 - <<'PY2'
import os

for k in ["CONTEXT7_API_KEY", "SILICONFLOW_API_KEY"]:
    v = os.environ.get(k, "")
    if v:
        print(f"{k}: OK, {v[:6]}...{v[-4:]}")
    else:
        print(f"{k}: MISSING")
PY2

如果这里显示 OK,说明当前终端可以读取环境变量。

如果终端里是 OK,但 VS Code Codex 插件仍然调用失败,说明插件进程没有继承环境变量,执行:

text 复制代码
Developer: Reload Window

仍不行再执行:

text 复制代码
Remote-SSH: Kill VS Code Server on Host
→ 重新连接远程服务器

16.4 手动启动 stdio MCP Server 做排错

注意:stdio 类型 MCP Server 通常由 Codex 自动启动,不需要你长期手动后台运行。

手动运行这些命令的目的只是排查:

text 复制代码
这个 MCP Server 的启动命令是否可执行;
依赖是否完整;
环境变量是否缺失;
是否存在路径错误。
测试 context7
bash 复制代码
timeout 10s npx -y @upstash/context7-mcp
echo $?

如果返回:

text 复制代码
124

通常表示进程成功启动并等待 MCP 客户端输入,属于正常现象。

测试 sequential-thinking
bash 复制代码
timeout 10s npx -y @modelcontextprotocol/server-sequential-thinking
echo $?

返回 124 通常也说明能启动,只是没有客户端连接。

测试 arxiv-mcp-server

先确保工作目录存在:

bash 复制代码
mkdir -p /workspace/arxiv-mcp-server

然后测试:

bash 复制代码
timeout 10s env WORK_DIR=/workspace/arxiv-mcp-server \
SILICONFLOW_API_KEY="$SILICONFLOW_API_KEY" \
npx -y @langgpt/arxiv-mcp-server@latest

echo $?

如果不是 124,并且输出报错,需要根据报错检查 SILICONFLOW_API_KEYWORK_DIRnpx

测试 chrome-devtools
bash 复制代码
timeout 10s npx -y chrome-devtools-mcp@latest
echo $?

如果出现 Chrome / sandbox / display 相关错误,说明远程服务器上的浏览器环境不完整。

测试 drawio

如果配置使用本地命令:

toml 复制代码
[mcp_servers.drawio]
command = "drawio-mcp-server"
args = ["--extension-port", "8081"]

先检查命令是否存在:

bash 复制代码
which drawio-mcp-server
drawio-mcp-server --help

如果找不到,可以测试 npx 版本:

bash 复制代码
timeout 10s npx -y @next-ai-drawio/mcp-server@latest
echo $?

如果 npx 版本可用,可以把 Codex 配置改成:

toml 复制代码
[mcp_servers.drawio]
command = "npx"
args = ["-y", "@next-ai-drawio/mcp-server@latest"]
startup_timeout_sec = 30
tool_timeout_sec = 120
enabled = true

不要同时保留两个 [mcp_servers.drawio]


16.5 测试 Python 类 MCP Server

schoAiword-document-server 依赖具体 Python 脚本。先检查文件是否存在:

bash 复制代码
ls /workspace/ScholAI/main.py
ls /workspace/Office-Word-MCP-Server/word_mcp_server.py

然后手动运行:

bash 复制代码
python3 /workspace/ScholAI/main.py

以及:

bash 复制代码
python3 /workspace/Office-Word-MCP-Server/word_mcp_server.py

如果路径不存在,说明还没有把 Windows 本地项目迁移到 Linux 服务器,应该继续保持:

toml 复制代码
enabled = false

16.6 在 Codex 会话中做实际调用测试

MCP Server 显示"已启用"只能说明配置被识别。最终还要在 Codex 中做真实任务测试。

测试 context7

text 复制代码
请使用 context7 查询 PyTorch DistributedDataParallel 的文档,并总结关键点。

测试 sequential-thinking

text 复制代码
请使用 sequential-thinking MCP 帮我拆解:如何把 VS Code MCP 配置迁移到 Codex。

测试 arxiv-mcp-server

text 复制代码
请使用 arxiv-mcp-server 搜索最近关于 distributed diffusion inference 的论文,并列出标题、年份和摘要。

测试 drawio

text 复制代码
请使用 drawio MCP 创建一个简单的 pipeline parallelism 架构图,包含 4 个 GPU、2 个 pipeline stage 和数据流箭头。

如果 Codex 仍然回答"没有看到该 MCP 工具",但 MCP 面板显示"已启用",优先执行:

text 复制代码
Developer: Reload Window

本次实际测试表明,Reload Window 后这些 MCP 工具能够在 Codex 插件中正常使用。


16.7 不建议手动后台启动 stdio MCP

不要这样启动:

bash 复制代码
nohup npx -y @upstash/context7-mcp &

原因是:

text 复制代码
stdio MCP Server 需要由 Codex 启动并接管标准输入 / 标准输出;
你手动后台启动后,Codex 通常无法连接到这个进程。

正确方式是:

text 复制代码
把 MCP Server 写入 ~/.codex/config.toml;
让 Codex 根据 command + args 自动启动;
手动运行命令只用于排错。

17. 一句话总结

这次迁移的核心是:

text 复制代码
把 VS Code / Warp 的 MCP JSON 配置
转换成 Codex 的 ~/.codex/config.toml TOML 配置;
把 Windows 本地路径替换为 Linux 远程路径;
把 API Key 放到环境变量中;
然后重启 Codex 会话 / Reload Window / 重连 Remote-SSH。

最终判断标准:

text 复制代码
Codex MCP 面板中对应 server 显示"已启用"

就说明 Codex 已经识别该 MCP Server。之后还需要通过实际提问测试工具是否能成功调用。

相关推荐
Cloud_Shy6181 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第三章 Item 21 - 24)
开发语言·人工智能·笔记·python·迭代器模式
多彩电脑1 小时前
Lua中的元表里的__index和__newindex
开发语言·lua
野生技术架构师1 小时前
2026 Java面试宝典(春招/社招/秋招通用):没有前言,只有答案,直接开背
java·开发语言·面试
人道领域2 小时前
【LeetCode刷题日记】131.分割回文串,动态规划优化
java·开发语言·leetcode
z落落2 小时前
C# 接口 interface (多接口实现、类+接口、成员重名)
java·开发语言
知识的宝藏4 小时前
Xpaht self::div 轴语法
开发语言
keykey6.4 小时前
卷积神经网络(CNN):让AI学会“看“
开发语言·人工智能·深度学习·机器学习
IsJunJianXin4 小时前
谷歌搜索cookie NID逆向生成
开发语言·python·google搜索·sgss·nid-cookie·算法生成nid·google-cookie
weikecms4 小时前
美团霸王餐报名API接口
java·开发语言