Codex CLI 使用 Streamable-HTTP 连接 Serena MCP
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
都会自动启动,至此,整个配置流程就算是全部完成了,收工~