桌面读不到项目层 MCP 时,先确认信任再拷到用户 config

受信任项目的 .codex/config.toml 可以写 mcp_servers,CLI 通常能加载。桌面和 IDE 扩展经常只读 ~/.codex。stdio 还要把 command 和 cwd 写成绝对路径,并彻底退出后新开线程。

官方允许在已信任项目的 .codex/config.toml 里写 [mcp_servers.docs]。未信任时项目层整份跳过(config、hooks、rules 一起),看起来像 MCP 没配。先在本机 CLI 里确认信任,再用 codex mcp list / codex mcp get docs 看 CLI 能不能看见。

桌面应用和不少 IDE 扩展会话仍可能只加载 ~/.codex/config.toml。2026-08 仍有人在桌面 26.707 上复现:项目层 stdio 服务器进不了新任务的工具表。/mcp 在桌面线程里也常只列用户层;设置页或 codex mcp list 看得到,不等于当前线程已经注入这台服务器的工具。

桌面要用同一台服务器时:

  1. 把这段拷到 ~/.codex/config.toml(密钥仍用 bearer_token_env_var,不要写进仓库)。
  2. 彻底退出 ChatGPT / Codex,不要只新开会话。旧线程可能挂着过期的 MCP 进程。
  3. 在这个项目里开线程。工具看起来像默认集、缺项目参数时,先杀掉那台残留进程再开。

stdio 还有一层:桌面任务的 cwd 有时是 /,相对 command / ./vendor/bin/... 会起不来。用户层写成绝对路径:

[mcp_servers.docs]
command = "/usr/bin/node"
args = ["/home/you/src/app/servers/docs.mjs"]
cwd = "/home/you/src/app"
enabled = true

仓库里跑本地二进制、cwd = "." 的服务器不要拷成全局项:它会在别人的机器上用错目录,也绕开项目信任边界。这种只给 CLI 用,或等桌面真正加载项目层。HTTP MCP 拷用户层相对安全。网页 Work 仍然不读 ~/.codex

反过来:桌面改设置、插件或项目信任时,有时会把用户层 mcp_servers 整表写丢。项目里如果只写了 enabled = true、没有 commandurl,线程会直接 invalid transport。那条权宜见「桌面写丢用户 MCP」。

来源