mirror of
https://github.com/pchuan98/codex.git
synced 2026-07-01 00:31:56 +08:00
## DISCLAIMER This is experimental and no production service must rely on this ## Why Built-in MCPs are product-owned runtime capabilities, but they were previously flattened into the same config-backed stdio path as user-configured servers. That made them depend on a hidden `codex builtin-mcp` re-exec path, exposed them through config-oriented CLI flows, and erased distinctions the runtime needs to preserve—most notably whether an MCP call should count as external context for memory-mode pollution. ## What changed - Model product-owned built-ins separately from config-backed MCP servers via `BuiltinMcpServer` and `EffectiveMcpServer`. - Launch built-ins in process through a reusable async transport instead of the hidden `builtin-mcp` stdio subcommand. - Keep config-oriented CLI operations such as `codex mcp list/get/login/logout` scoped to configured servers, while merging built-ins only into the effective runtime server set. - Retain server metadata after launch so parallel-tool support and context classification come from the live server set; built-in `memories` is now classified as local Codex state rather than external context. ## Test plan - `cargo test -p codex-mcp` - `cargo test -p codex-core --test suite builtin_memories_mcp_call_does_not_mark_thread_memory_mode_polluted_when_configured` --------- Co-authored-by: Codex <noreply@openai.com>
15 lines
534 B
Rust
15 lines
534 B
Rust
use std::io;
|
|
|
|
use futures::future::BoxFuture;
|
|
use tokio::io::DuplexStream;
|
|
|
|
/// Recreates a fresh in-process MCP byte stream whenever the client needs one.
|
|
///
|
|
/// Implementations are expected to start the paired server side before
|
|
/// returning the client stream. The factory is retained by [`crate::RmcpClient`]
|
|
/// so reconnects can rebuild the transport without knowing which built-in
|
|
/// server produced it.
|
|
pub trait InProcessTransportFactory: Send + Sync {
|
|
fn open(&self) -> BoxFuture<'static, io::Result<DuplexStream>>;
|
|
}
|