From 61cc4da4dca8ad9eeba2249de9556bda34d7e01d Mon Sep 17 00:00:00 2001 From: Casey Chow Date: Sat, 7 Feb 2026 11:32:10 -0500 Subject: [PATCH] feat(core): allow configurable apps MCP URL --- codex-rs/core/config.schema.json | 6 +++++- codex-rs/core/src/config/mod.rs | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/codex-rs/core/config.schema.json b/codex-rs/core/config.schema.json index e9ac1c3b87..6aba250f02 100644 --- a/codex-rs/core/config.schema.json +++ b/codex-rs/core/config.schema.json @@ -1141,6 +1141,10 @@ "description": "Base URL for requests to ChatGPT (as opposed to the OpenAI API).", "type": "string" }, + "connectors_mcp_url": { + "description": "Optional override for the Codex Apps MCP endpoint URL.", + "type": "string" + }, "check_for_update_on_startup": { "description": "When `true`, checks for Codex updates on startup and surfaces update prompts. Set to `false` only if your Codex updates are centrally managed. Defaults to `true`.", "type": "boolean" @@ -1588,4 +1592,4 @@ }, "title": "ConfigToml", "type": "object" -} \ No newline at end of file +} diff --git a/codex-rs/core/src/config/mod.rs b/codex-rs/core/src/config/mod.rs index d9ddc59441..5bd27d30f4 100644 --- a/codex-rs/core/src/config/mod.rs +++ b/codex-rs/core/src/config/mod.rs @@ -311,6 +311,8 @@ pub struct Config { /// Base URL for requests to ChatGPT (as opposed to the OpenAI API). pub chatgpt_base_url: String, + /// Optional override for the Codex Apps MCP endpoint URL. + pub connectors_mcp_url: Option, /// When set, restricts ChatGPT login to a specific workspace identifier. pub forced_chatgpt_workspace_id: Option, @@ -934,6 +936,8 @@ pub struct ConfigToml { /// Base URL for requests to ChatGPT (as opposed to the OpenAI API). pub chatgpt_base_url: Option, + /// Optional override for the Codex Apps MCP endpoint URL. + pub connectors_mcp_url: Option, pub projects: Option>, @@ -1667,6 +1671,11 @@ impl Config { .chatgpt_base_url .or(cfg.chatgpt_base_url) .unwrap_or("https://chatgpt.com/backend-api/".to_string()), + connectors_mcp_url: cfg + .connectors_mcp_url + .map(str::trim) + .map(str::to_string) + .filter(|url| !url.is_empty()), forced_chatgpt_workspace_id, forced_login_method, include_apply_patch_tool: include_apply_patch_tool_flag, @@ -3865,6 +3874,7 @@ model_verbosity = "high" model_verbosity: None, personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + connectors_mcp_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, @@ -3952,6 +3962,7 @@ model_verbosity = "high" model_verbosity: None, personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + connectors_mcp_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, @@ -4054,6 +4065,7 @@ model_verbosity = "high" model_verbosity: None, personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + connectors_mcp_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None, @@ -4142,6 +4154,7 @@ model_verbosity = "high" model_verbosity: Some(Verbosity::High), personality: Some(Personality::Pragmatic), chatgpt_base_url: "https://chatgpt.com/backend-api/".to_string(), + connectors_mcp_url: None, base_instructions: None, developer_instructions: None, compact_prompt: None,