Skip to content

Commit 696aaba

Browse files
aibrahim-oaicodex
andcommitted
Add MCP server experimental environment config
Introduce an experimental MCP server environment string and thread the optional value through config serialization, schema generation, and existing config fixtures. Co-authored-by: Codex <noreply@openai.com>
1 parent 77fe33b commit 696aaba

23 files changed

+69
-0
lines changed

codex-rs/cli/src/mcp_cmd.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ async fn run_add(config_overrides: &CliConfigOverrides, add_args: AddArgs) -> Re
297297

298298
let new_entry = McpServerConfig {
299299
transport: transport.clone(),
300+
experimental_environment: None,
300301
enabled: true,
301302
required: false,
302303
supports_parallel_tool_calls: false,

codex-rs/codex-mcp/src/mcp/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ fn codex_apps_mcp_server_config(config: &McpConfig, auth: Option<&CodexAuth>) ->
269269
http_headers,
270270
env_http_headers: None,
271271
},
272+
experimental_environment: None,
272273
enabled: true,
273274
required: false,
274275
supports_parallel_tool_calls: false,

codex-rs/codex-mcp/src/mcp/mod_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ async fn effective_mcp_servers_preserve_user_servers_and_add_codex_apps() {
193193
http_headers: None,
194194
env_http_headers: None,
195195
},
196+
experimental_environment: None,
196197
enabled: true,
197198
required: false,
198199
supports_parallel_tool_calls: false,
@@ -215,6 +216,7 @@ async fn effective_mcp_servers_preserve_user_servers_and_add_codex_apps() {
215216
http_headers: None,
216217
env_http_headers: None,
217218
},
219+
experimental_environment: None,
218220
enabled: true,
219221
required: false,
220222
supports_parallel_tool_calls: false,

codex-rs/codex-mcp/src/mcp/skill_dependencies.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ fn mcp_dependency_to_server_config(
119119
http_headers: None,
120120
env_http_headers: None,
121121
},
122+
experimental_environment: None,
122123
enabled: true,
123124
required: false,
124125
supports_parallel_tool_calls: false,
@@ -146,6 +147,7 @@ fn mcp_dependency_to_server_config(
146147
env_vars: Vec::new(),
147148
cwd: None,
148149
},
150+
experimental_environment: None,
149151
enabled: true,
150152
required: false,
151153
supports_parallel_tool_calls: false,

codex-rs/codex-mcp/src/mcp/skill_dependencies_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ fn collect_missing_respects_canonical_installed_key() {
3939
http_headers: None,
4040
env_http_headers: None,
4141
},
42+
experimental_environment: None,
4243
enabled: true,
4344
required: false,
4445
supports_parallel_tool_calls: false,
@@ -90,6 +91,7 @@ fn collect_missing_dedupes_by_canonical_key_but_preserves_original_name() {
9091
http_headers: None,
9192
env_http_headers: None,
9293
},
94+
experimental_environment: None,
9395
enabled: true,
9496
required: false,
9597
supports_parallel_tool_calls: false,

codex-rs/codex-mcp/src/mcp_connection_manager_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,7 @@ fn mcp_init_error_display_prompts_for_github_pat() {
792792
http_headers: None,
793793
env_http_headers: None,
794794
},
795+
experimental_environment: None,
795796
enabled: true,
796797
required: false,
797798
supports_parallel_tool_calls: false,
@@ -842,6 +843,7 @@ fn mcp_init_error_display_reports_generic_errors() {
842843
http_headers: None,
843844
env_http_headers: None,
844845
},
846+
experimental_environment: None,
845847
enabled: true,
846848
required: false,
847849
supports_parallel_tool_calls: false,

codex-rs/config/src/mcp_edit.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,9 @@ fn serialize_mcp_server(config: &McpServerConfig) -> TomlItem {
174174
if !config.enabled {
175175
entry["enabled"] = value(false);
176176
}
177+
if let Some(environment) = &config.experimental_environment {
178+
entry["experimental_environment"] = value(environment.clone());
179+
}
177180
if config.required {
178181
entry["required"] = value(true);
179182
}

codex-rs/config/src/mcp_edit_tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ async fn replace_mcp_servers_serializes_per_tool_approval_overrides() -> anyhow:
2222
env_vars: Vec::new(),
2323
cwd: None,
2424
},
25+
experimental_environment: None,
2526
enabled: true,
2627
required: false,
2728
supports_parallel_tool_calls: true,

codex-rs/config/src/mcp_types.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ pub struct McpServerConfig {
6161
#[serde(flatten)]
6262
pub transport: McpServerTransportConfig,
6363

64+
/// Experimental environment selector for where Codex should start this MCP server.
65+
#[serde(default, skip_serializing_if = "Option::is_none")]
66+
pub experimental_environment: Option<String>,
67+
6468
/// When `false`, Codex skips initializing this MCP server.
6569
#[serde(default = "default_enabled")]
6670
pub enabled: bool,
@@ -139,6 +143,8 @@ pub struct RawMcpServerConfig {
139143

140144
// shared
141145
#[serde(default)]
146+
pub experimental_environment: Option<String>,
147+
#[serde(default)]
142148
pub startup_timeout_sec: Option<f64>,
143149
#[serde(default)]
144150
pub startup_timeout_ms: Option<u64>,
@@ -181,6 +187,7 @@ impl TryFrom<RawMcpServerConfig> for McpServerConfig {
181187
url,
182188
bearer_token,
183189
bearer_token_env_var,
190+
experimental_environment,
184191
startup_timeout_sec,
185192
startup_timeout_ms,
186193
tool_timeout_sec,
@@ -246,6 +253,7 @@ impl TryFrom<RawMcpServerConfig> for McpServerConfig {
246253

247254
Ok(Self {
248255
transport,
256+
experimental_environment,
249257
startup_timeout_sec,
250258
tool_timeout_sec,
251259
enabled: enabled.unwrap_or_else(default_enabled),

codex-rs/config/src/mcp_types_tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ fn deserialize_ignores_unknown_server_fields() {
297297
env_vars: Vec::new(),
298298
cwd: None,
299299
},
300+
experimental_environment: None,
300301
enabled: true,
301302
required: false,
302303
supports_parallel_tool_calls: false,

0 commit comments

Comments
 (0)