Codex-side MCP discovery/display bug or limitation

Resolved 💬 1 comment Opened Apr 3, 2026 by ghost Closed Apr 3, 2026

What issue are you seeing?

  • Codex version: 0.118.0
  • local stdio MCP server starts successfully
  • server explicitly registers and logs 15 tools
  • Codex still shows Tools: (none)
  • only resources/list and resources/templates/list fail with -32601, which is expected

Codex CLI 0.118.0 launches a local stdio MCP server successfully and the server confirms it has 15 registered tools, but Codex still displays Tools: (none). This reproduces with both a high-level McpServer implementation and a low-
level Server implementation with explicit tools/list and tools/call handlers, which strongly suggests a Codex MCP discovery/display bug rather than a server implementation problem.

What steps can reproduce the bug?

Reproduction Shape

A local stdio MCP server that:

  1. starts successfully under Codex
  2. declares tools capability
  3. implements tools/list
  4. returns a non-empty tool list
  5. logs startup to stderr

Codex still shows Tools: (none).

Files Used In Investigation

  • Original server: src/index.ts
  • Codex-specific server: src/index-codex.ts
  • Shared model routing: src/lib/llm.ts
  • Codex config: /home/<user>/.codex/config.toml
  • Codex logs: /home/<user>/.codex/log/codex-tui.log

What is the expected behavior?

Expected Behavior

Since the server starts and explicitly registers 15 tools, Codex should display those tools in the MCP entry.

Actual Behavior

Codex launches the MCP server successfully but still displays:

  • Tools: (none)

even with an explicit low-level tools/list handler.

Why This Looks Like a Codex Bug

This has already ruled out the obvious server-side causes:

  • not a startup failure
  • not a stdio launch failure
  • not a high-level MCP helper issue
  • not missing tool registration
  • not missing tool capability declaration
  • not a single implementation issue, because both the high-level and low-level servers produce the same UI result

The strongest evidence is:

  1. Codex starts the server successfully.
  2. The server reports 15 registered tools.
  3. Codex logs only resource-list failures, not tool-list failures.
  4. Codex still renders Tools: (none).

That suggests either:

  • Codex is not issuing tools/list in this code path, or
  • Codex receives a valid tool list but fails to surface it in the MCP status UI.

Additional information

• Bug Report

Codex CLI does not surface tools for a local stdio MCP server, even when the server starts successfully and reports registered tools at runtime.

Environment

  • Codex CLI version: 0.118.0
  • OS: Linux
  • MCP transport: local stdio
  • Node: /usr/bin/node
  • Working directory: /home/<user>/mcp

Problem Summary

A local MCP server is correctly launched by Codex, but Codex shows:

  • Auth: Unsupported
  • Tools: (none)
  • Resources: (none)
  • Resource templates: (none)

Auth: Unsupported is expected for a local stdio server. Resources: (none) is also expected because this MCP does not implement resources. The bug is that Codex continues to show Tools: (none) even though the server starts successfully
and logs that it has 15 registered tools.

What Was Tested

I tested two separate server implementations:

  1. The original high-level MCP server using McpServer

File: src/index.ts

  1. A separate Codex-only MCP server using the lower-level Server API with explicit tools/list and tools/call handlers

File: src/index-codex.ts

The Codex-specific server was created specifically to rule out any compatibility issue with the higher-level MCP helper.

Current Codex Config

Codex is configured to use the Codex-specific server:

File: /home/<user>/.codex/config.toml:25

[mcp_servers.codex]
command = "node"
args = ["/home/<user>/mcp/dist/index-codex.js"]
cwd = "/home/<user>/mcp"

Codex-Specific Server Behavior

The Codex-only server explicitly registers 15 tools and logs this on startup.

File: src/index-codex.ts:289

It exposes these tools explicitly through tools/list:

  • ping
  • list_files
  • index_file
  • summarise_file
  • query_file
  • flag_anomalies
  • compare_files
  • generate_schema
  • generate_inserts
  • generate_sql
  • explain_sql
  • run_sql
  • describe_db
  • ollama_agent
  • list_models

It also explicitly implements CallToolRequestSchema and ListToolsRequestSchema rather than relying on automatic helper behavior.

Observed Codex Log Evidence

Codex definitely launches the server and receives startup stderr:

  • MCP server started with 15 registered tools (small=qwen3:8b, large=qwen3:30b, coder=qwen3-coder:latest, reasoning=deepseek)

Relevant log file:
/home/<user>/.codex/log/codex-tui.log

Examples observed in the log:

  • INFO codex_rmcp_client::rmcp_client: MCP server stderr (node): Codex MCP server started with 15 registered tools ...

Codex also attempts:

  • resources/list
  • resources/templates/list

and those fail with:

  • Mcp error: -32601: Method not found

That is expected because this server does not implement resources.

What is notable is:

  • there is no Failed to list tools entry
  • there is no server-side protocol error logged for tools/list
  • yet Codex UI still shows Tools: (none)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗