Local MCP server that delegates coding tasks to the OpenAI Codex CLI, with explicit model and reasoning-effort selection.
Four tools with complete schemas and descriptions. Tool names follow verb_noun pattern (delegate, resume, list_models, check_codex). Descriptions are substantive (80-150 chars). All parameters have types and descriptions. Input schemas use proper JSON Schema with enums for constrained values (reasoning_effort, sandbox, priority). However, output schemas are not documented, LLMs cannot infer what fields to expect from responses. Error handling is present but generic (textResult/errorResult). No tool annotations (readOnlyHint/destructiveHint). delegate and resume are high-risk WRITE operations but lack confirmation/dry-run patterns. Parameter validation is thorough (validateDirectory, validateWorkingDir, validateAddDirs) but happens at runtime, not schema-time.
Checks the health and configuration of the local Codex CLI installation, including version and authentication status.
Delegates a coding task to the Codex CLI for execution with specified model and reasoning effort.
Lists available models from the Codex CLI catalog with their capabilities and reasoning effort support.
Resumes a previous Codex session thread to continue work on an existing delegation.
Output schemas not documented. LLMs cannot infer what fields delegate, resume, list_models, and check_codex return. This forces agents to guess at response structure and risks failed downstream tool chaining.
delegate and resume are destructive WRITE operations (file system changes, session state) but lack tool annotations (destructiveHint) or confirmation/dry-run patterns. Agents cannot distinguish safe from risky calls.
Error messages are generic (textResult with isError flag). No recovery guidance. E.g., CodexUnavailableError includes diagnosis but LLM receives only formatted text, no structured error classification (retryable vs user-fixable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Parameter 'working_dir' is optional but validation rejects empty strings with a helpful error. However, schema does not enforce non-empty constraint, LLM could pass empty string and trigger runtime error instead of schema rejection.
add_dirs parameter accepts array of strings but no minItems/maxItems constraint in schema. No documented limit on how many directories can be added, risking unbounded argv growth.