[codex] preserve runtime MCP servers across client capability refresh

This commit is contained in:
Brian Brunner
2026-06-24 18:45:42 +00:00
parent 68a359353a
commit d0ca4a9b63
5 changed files with 65 additions and 4 deletions
+1 -1
View File
@@ -232,7 +232,7 @@ Example with notification opt-out:
- `mcpServer/oauth/login` — start an OAuth login for a configured MCP server; returns an `authorization_url` and later emits `mcpServer/oauthLogin/completed` once the browser flow finishes.
- `tool/requestUserInput` — prompt the user with 1–3 short questions for a tool call and return their answers (experimental).
- `config/mcpServer/reload` — reload MCP server config from disk and queue a refresh for loaded threads (applied on each thread's next active turn); returns `{}`. Use this after editing `config.toml` without restarting the server.
- `mcpServerStatus/list` — enumerate configured MCP servers with their tools, auth status, server info, plus resources/resource templates for `full` detail; supports optional `threadId` and cursor+limit pagination. If `threadId` is omitted, the server reads from the latest global config directly. If `detail` is omitted, the server defaults to `full`.
- `mcpServerStatus/list` — enumerate configured MCP servers with their tools, auth status, server info, plus resources/resource templates for `full` detail; supports optional `threadId` and cursor+limit pagination. With `threadId`, the response is a point-in-time snapshot of the MCP manager generation currently installed for that thread. If `threadId` is omitted, the server reads from the latest global config directly. If `detail` is omitted, the server defaults to `full`.
- `mcpServer/resource/read` — read a resource from a configured MCP server by optional `threadId`, `server`, and `uri`, returning text/blob resource `contents`. If `threadId` is omitted, the server reads from the latest MCP config directly.
- `mcpServer/tool/call` — call a tool on a thread's configured MCP server by `threadId`, `server`, `tool`, optional `arguments`, and optional `_meta`, returning the MCP tool result.
- `windowsSandbox/setupStart` — start Windows sandbox setup for the selected mode (`elevated` or `unelevated`); accepts an optional absolute `cwd` to target setup for a specific workspace, returns `{ started: true }` immediately, and later emits `windowsSandbox/setupCompleted`.
@@ -214,7 +214,7 @@ url = "{mcp_server_url}/mcp"
}
#[tokio::test]
async fn mcp_server_status_list_never_advertises_uninstalled_codex_apps() -> Result<()> {
async fn mcp_server_status_list_reflects_installed_manager_generation() -> Result<()> {
let server = create_mock_responses_server_sequence_unchecked(Vec::new()).await;
let (apps_server_url, apps_server_handle) = start_apps_mcp_server("calendar_lookup").await?;
let codex_home = TempDir::new()?;