diff --git a/docs/advanced.md b/docs/advanced.md index a08b35c1..38fbd0db 100644 --- a/docs/advanced.md +++ b/docs/advanced.md @@ -38,5 +38,49 @@ args = ["-y", "mcp-server"] env = { "API_KEY" = "value" } ``` +## Using Codex as an MCP Server + +The Codex CLI can also be run as an MCP _server_ via `codex mcp`. For example, you can use `codex mcp` to make Codex available as a tool inside of a multi-agent framework like the OpenAI [Agents SDK](https://platform.openai.com/docs/guides/agents). + +### Codex MCP Server Quickstart +You can launch a Codex MCP server with the [Model Context Protocol Inspector](https://modelcontextprotocol.io/legacy/tools/inspector): + +``` bash +npx @modelcontextprotocol/inspector codex mcp +``` +Send a `tools/list` request and you will see that there are two tools available: + +**`codex`** - Run a Codex session. Accepts configuration parameters matching the Codex Config struct. The `codex` tool takes the following properties: + +Property | Type | Description +-------------------|----------|---------------------------------------------------------------------------------------------------------- +approval-policy | string | Approval policy for shell commands generated by the model: `untrusted`, `on-failure`, `never`. +base-instructions | string | The set of instructions to use instead of the default ones. +config | object | Individual [config settings](https://github.com/openai/codex/blob/main/docs/config.md#config) that will override what is in CODEX_HOME/config.toml. +cwd | string | Working directory for the session. If relative, resolved against the server process's current directory. +include-plan-tool | boolean | Whether to include the plan tool in the conversation. +model | string | Optional override for the model name (e.g. "o3", "o4-mini"). +profile | string | Configuration profile from config.toml to specify default options. +**prompt** (required) | string | The initial user prompt to start the Codex conversation. +sandbox | string | Sandbox mode: `read-only`, `workspace-write`, or `danger-full-access`. + +**`codex-reply`** - Continue a Codex session by providing the session id and prompt. The `codex-reply` tool takes the following properties: + +Property | Type | Description +-----------|--------|--------------------------------------------------------------- +**prompt** (required) | string | The next user prompt to continue the Codex conversation. +**conversationId** (required) | string | The id of the conversation to continue. + +### Trying it Out > [!TIP] -> It is somewhat experimental, but the Codex CLI can also be run as an MCP _server_ via `codex mcp`. If you launch it with an MCP client such as `npx @modelcontextprotocol/inspector codex mcp` and send it a `tools/list` request, you will see that there is only one tool, `codex`, that accepts a grab-bag of inputs, including a catch-all `config` map for anything you might want to override. Feel free to play around with it and provide feedback via GitHub issues. +> Codex often takes a few minutes to run. To accommodate this, adjust the MCP inspector's Request and Total timeouts to 600000ms (10 minutes) under ⛭ Configuration. + +Use the MCP inspector and `codex mcp` to build a simple tic-tac-toe game with the following settings: + +**approval-policy:** never + +**prompt:** Implement a simple tic-tac-toe game with HTML, Javascript, and CSS. Write the game in a single file called index.html. + +**sandbox:** workspace-write + +Click "Run Tool" and you should see a list of events emitted from the Codex MCP server as it builds the game.