Codex CLI config.toml Validator
Paste your ~/.codex/config.toml to validate [mcp_servers.X] tables and OpenAI's snake_case field schema. Runs in your browser.
config.tomlPaste your config.toml above to run deterministic checks.
Or click to see how it works.
What this validator checks
- •TOML syntax (tables, inline tables, arrays)
- •UTF-8 BOM detection
- •Top-level
[mcp_servers.X]table shape - •Per-server transport (command vs url)
- •
startup_timeout_sec,tool_timeout_secmust be numbers - •
enabled,requiredmust be booleans - •
enabled_tools,disabled_tools,scopesmust be string arrays - •Env-var values must be strings
- •Insecure HTTP for non-local URLs
- •API key / token leak detection
- •Duplicate / case-conflict server names
- •Common command typos (npx, uvx, node, python)
Why this exists
OpenAI's Codex CLI is the only major MCP client using TOML — its config reference specifies [mcp_servers.X] tables and snake_case keys throughout. Configs aren't portable from Claude Desktop or Cursor without a conscious rewrite.
Common pitfalls: forgetting the underscore in mcp_servers (Claude Desktop uses camelCase mcpServers); putting JSON-styleenv: {...} instead of TOML inline-table syntax env = { K = "v" }; and quoting numbers as strings (TOML treats "30" and 30 as different types). The validator catches all three.
Frequently asked
Where is Codex CLI's config.toml?▼
Why does Codex CLI use TOML instead of JSON?▼
What snake_case fields does Codex CLI accept?▼
How do I migrate a Claude Desktop JSON config to Codex TOML?▼
What's the difference between startup_timeout_sec and tool_timeout_sec?▼
Does Codex CLI support OAuth for MCP servers?▼
What TOML edge cases doesn't this validator handle?▼
Spotted a check we should add?
Open an issue on the directory, or browse the 2,000+ MCP servers.