Skip to main content
Glama
dazebug
by dazebug

easy-codex-mcp

An MCP server that lets any MCP-compatible AI assistant have read-only conversations with OpenAI Codex CLI.

No complex setup β€” just codex login and you're ready.

Why?

Sometimes your AI assistant needs a second opinion. easy-codex-mcp bridges the gap by letting Claude, Cursor, or any MCP client consult Codex for code analysis, review, and Q&A β€” all in a non-destructive, read-only sandbox.

  • πŸ”’ Read-only by design β€” Codex runs in sandbox mode. It reads your code but never modifies files or runs commands.

  • πŸ’¬ Conversational β€” Start a thread and continue it later with full context preserved.

  • πŸ”§ Zero config β€” No API keys to manage in your MCP config. Just log in to Codex CLI once.

Related MCP server: codex-cli-architect-mcp

Quick Start

1. Install Codex CLI

npm install -g @openai/codex
codex login

2. Add to your MCP client

Claude Code (recommended):

claude mcp add easy-codex uvx -- --from git+https://github.com/dazebug/easy-codex-mcp easy-codex

Claude Desktop β€” add to your claude_desktop_config.json:

{
  "mcpServers": {
    "easy-codex": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/dazebug/easy-codex-mcp", "easy-codex"]
    }
  }
}

Other MCP clients β€” use the same config format with uvx as the command.

3. Use it

Your AI assistant now has two new tools:

Tool

Description

start_new_conversation

Start a fresh conversation with Codex

continue_conversation

Resume a previous conversation using thread_id

Example prompts to your AI assistant:

  • "Ask Codex to review this file for potential bugs"

  • "Get Codex's opinion on the architecture of this module"

  • "Have Codex explain how the authentication flow works"

Tools

start_new_conversation

Start a new read-only conversation with Codex.

Parameters:

  • prompt (required) β€” What to ask Codex.

  • working_directory (optional) β€” Directory for Codex to work in.

Returns: { "thread_id": "...", "response": "..." }

continue_conversation

Resume a previous conversation with full context.

Parameters:

  • thread_id (required) β€” Thread ID from a previous conversation.

  • prompt (required) β€” Follow-up question.

  • working_directory (optional) β€” Directory for Codex to work in.

Returns: { "thread_id": "...", "response": "..." }

How It Works

Your AI Assistant  ──MCP──▢  easy-codex-mcp  ──CLI──▢  Codex (read-only sandbox)
       β”‚                          β”‚                          β”‚
       β”‚   "Review this code"     β”‚   codex e --json "..."   β”‚
       │◀─────────────────────────│◀──────────────────────── β”‚
       β”‚   thread_id + response   β”‚   JSONL output           β”‚
  1. Your assistant calls the MCP tool with a prompt

  2. easy-codex-mcp spawns codex CLI in read-only sandbox mode

  3. Codex analyzes your code and responds

  4. The response + thread_id are returned to your assistant

  5. Use thread_id to continue the conversation later

Requirements

  • Python 3.12+

  • OpenAI Codex CLI (npm install -g @openai/codex)

  • Codex CLI logged in (codex login)

Development

git clone https://github.com/dazebug/easy-codex-mcp.git
cd easy-codex-mcp
uv sync

# Run tests
uv run pytest

# Dev mode
uv run mcp dev src/easy_codex/server.py

License

MIT

Available Tools

2 tools
continue_conversationA

Continue an existing Codex conversation.

Resumes a previous conversation using thread_id to maintain context. Same read-only sandbox limitations as start_new_conversation apply.

When to use:

  1. Asking follow-up questions based on previous analysis

  2. Continuing multi-step analysis on the same codebase

  3. Sending additional requests while maintaining conversation context

Args: thread_id: thread_id from a previous conversation. prompt: Follow-up prompt to send to codex. Use @filepath to mention files. working_directory: Directory path for codex to work in (optional).

Returns: Dict with thread_id and response.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
thread_idYes
working_directoryNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses context resumption via thread_id, read-only sandbox limitations, and the return format. The detailed sandbox limitations are delegated to the sibling tool rather than spelled out, which is a minor gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with an opening statement, context, use cases, Args, and Returns sections. Content is organized and front-loaded; the slight redundancy between 'Continue' and 'Resumes' is minor and does not detract from effectiveness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description covers purpose, usage, parameters, and return value. It could mention error handling for invalid thread_id, but for a conversational continuation tool, the provided information is sufficient for an agent to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description provides an Args section explaining each parameter clearly: thread_id from previous conversation, prompt with @filepath mention, and working_directory as optional. This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description explicitly states 'Continue an existing Codex conversation' with a specific verb and resource. It distinguishes from sibling start_new_conversation by emphasizing thread_id-based resumption and referencing the sibling's sandbox limitations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated 'When to use' section lists three concrete scenarios for using this tool. However, it lacks an explicit 'when not to use' clause and only indirectly references start_new_conversation as an alternative, so it doesn't fully meet the 5-level bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_new_conversationA

Start a new conversation with OpenAI Codex CLI.

Runs codex CLI in read-only sandbox mode and returns a thread_id for continuing the conversation later.

Limitations:

  • Runs in read-only sandbox β€” cannot modify files or execute shell commands.

  • Use only for read-only tasks: code reading, analysis, and Q&A.

When to use:

  1. Analyzing the structure or behavior of a codebase

  2. Code review or root cause analysis of bugs

  3. Generating explanations or documentation drafts for code

  4. Getting refactoring or architecture suggestions

Args: prompt: Prompt to send to codex. Use @filepath to mention files. working_directory: Directory path for codex to work in (optional).

Returns: Dict with thread_id and response.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes
working_directoryNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clearly discloses read-only sandbox mode, inability to modify files/execute commands, and returns a thread_id and response. The description adds context beyond the basic schema, though it omits potential auth/error details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (main description, limitations, when to use, args, returns). It is front-loaded with the core purpose, and every bullet point adds value without excessive verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema or annotations, the description explains the return format (Dict with thread_id and response), lists limitations, and provides use cases. It is sufficiently complete for an AI agent to understand when and how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining each parameter: prompt includes the useful '@filepath' syntax hint, and working_directory is described as 'Directory path for codex to work in.' This adds meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Start a new conversation with OpenAI Codex CLI.' It clearly distinguishes from the sibling tool continue_conversation by mentioning it returns a thread_id for continuing the conversation later.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'When to use' list with four concrete use cases and a 'Limitations' section that explicitly excludes write operations and shell commands, saying 'Use only for read-only tasks.' This is strong guidance on when to use and when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation5/5

The two tools have clearly distinct purposes: one starts a new conversation and returns a thread_id, the other continues an existing conversation using that thread_id. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tool names follow the same verb_noun pattern with snake_case, using 'start_new_' and 'continue_' as clear action prefixes. This consistency makes the API predictable and easy to navigate.

Tool Count4/5

At only two tools, the count is on the low end but perfectly appropriate for the server's narrow purpose of managing Codex conversations. The tools cover the essential start/continue workflow without unnecessary additions.

Completeness4/5

The tool surface covers the primary conversation lifecycle (start and continue) with no dead ends. Minor gaps such as the absence of explicit conversation termination or history listing are acceptable given the read-only, session-based scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dazebug/easy-codex-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server