Codex CLI 自 0.44.0 版本起,正式支持 Streamable HTTP MCP servers

之前,在 Codex CLI 上使用 Serena MCP 时,我通过以下命令让其在启动时加载:

1
2
3
[mcp_servers.serena]
command = "uvx"
args = ["--from", "git+https://github.com/oraios/serena", "serena", "start-mcp-server", "--context", "codex"]

然而,这种方式的缺点是:每次启动或输入 /new 命令时,都需要等待 MCP 启动,这影响了操作的流畅性,因此,在 0.44.0 版本更新后,我便将 Serena MCP 的调用方式改为了 Streamable HTTP 模式,特此记录配置过程。

其实步骤很简单,首先我们需要下载Serena并运行

1
2
3
https://github.com/oraios/serena.git
cd serena
uv run serena start-mcp-server --context codex --transport streamable-http --port 9121

之后我们修改 Codex 的config.toml文件,在顶层配置添加experimental_use_rmcp_client = true语句,然后把 Serena 的配置修改为

1
2
[mcp_servers.serena]
url = "http://127.0.0.1:9121/mcp"

整体的配置如下,供参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
model_provider = "cliproxyapi"
model = "gpt-5-codex"
disable_response_storage = true
approval_policy = "never"
sandbox_mode = "danger-full-access"
model_reasoning_effort = "high"
experimental_use_rmcp_client = true

[model_providers.cliproxyapi]
name = "cliproxyapi"
base_url = "https://example.com/v1"
wire_api = "responses"

[mcp_servers.serena]
url = "http://127.0.0.1:9121/mcp"

完成配置后再次启动 Codex CLI,即可体验到流畅如初的启动过程

在Serena的控制台窗口也能看到Codex的请求

现在我们只需要启动一次 Serena,就能够一直给 Codex CLI 提供服务了

当然,目前的方案仍需手动启动 Serena,略有不便。为了实现一劳永逸,我们可以将其配置为开机自启动

我的运行环境为 WSL2,因此以下配置主要基于该环境。对于大多数 Linux 发行版,步骤也基本一致,可供参考

首现我们需要使用which uv命令来获取uv的具体位置,其输出的路径在后续编辑服务文件时将会用到,我这里是/home/hkfires/.local/bin/uv

然后我们需要创建目录(如果不存在)mkdir -p ~/.config/systemd/user/

再创建并编辑服务文件 nano ~/.config/systemd/user/serena.service,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=Serena
After=network.target

[Service]
Type=simple
# 替换为 serena 的目录
WorkingDirectory=/home/hkfires/serena
# 替换为 which uv 的结果
ExecStart=/home/hkfires/.local/bin/uv run serena start-mcp-server --context codex --transport streamable-http --port 9121
Restart=always

[Install]
WantedBy=default.target

保存之后运行以下命令

1
2
3
4
5
6
7
8
# 启用服务,让它开机自启
systemctl --user enable serena.service

# 立刻启动服务以进行测试
systemctl --user start serena.service

# 查看服务是否正在运行
systemctl --user status serena.service

可以看到 Serena 正常启动了

以后只要开启 WSL 实例,Serena 都会自动启动,至此,整个配置流程就算是全部完成了,收工~