Skip to content

Custom stdio MCP server discovered by /mcp but tools not exposed to Desktop threads #19425

Description

@arbenl

Summary

Codex Desktop sees a custom stdio MCP server and successfully discovers its tools via tools/list, but the tools are not exposed to Desktop threads or tool_search.

This appears to be a regression or exposure-layer bug in Desktop/App Server 0.124.0-alpha.2.

Environment

  • Codex Desktop client: 26.422.21637
  • Codex/App Server: 0.124.0-alpha.2
  • Platform: macOS
  • Server type: custom stdio MCP server
  • Config location: project-scoped .codex/config.toml

MCP config

[mcp_servers.interdomestik_qa]
command = "/bin/bash"
args = ["scripts/start-repo-qa.sh"]
cwd = "."

The wrapper script resolves the repo root, changes into it, and starts a TypeScript MCP server over stdio.

Expected behavior

The following custom MCP tools should be exposed to Desktop threads and callable via names like mcp__interdomestik_qa__project_map:

  • project_map
  • read_files
  • code_search
  • check_health
  • pr_verify
  • security_guard
  • e2e_gate

Actual behavior

  • Desktop /mcp shows the server enabled.
  • codex mcp list --json shows the server enabled.
  • Repo preflight passes, including live MCP tools/list discovery.
  • Desktop logs show the server starts and returns a ListToolsResult containing the expected custom QA tools.
  • tool_search returns 0 callable interdomestik_qa tools.
  • Thread request payloads do not include any mcp__interdomestik_qa__* tools.
  • The current thread's thread_dynamic_tools only contains generic Desktop tools such as automation_update, read_thread_terminal, load_workspace_dependencies, and install_workspace_dependencies.

Evidence collected locally

Manual/repo preflight confirms live MCP discovery works:

pnpm mcp:preflight

Desktop logs show the custom server is started and queried successfully:

  • custom QA server starts on stdio
  • client initializes against the server
  • ListToolsRequest is sent
  • ListToolsResult is received with the expected custom tools

But those discovered tools are not present in the thread/deferred tool surface.

Historical comparison from local Codex state/logs:

  • An Apr 20 thread on Codex 0.91.0 successfully called tools such as:
    • mcp__interdomestik_qa__read_files
    • mcp__interdomestik_qa__code_search
    • mcp__interdomestik_qa__project_map
  • Apr 24 threads on Codex 0.124.0-alpha.2 do not expose those tools, despite successful /mcp discovery.

I also checked whether stale Desktop workspace state was the cause. The active workspace root and thread cwd both point to the correct repo, but the custom MCP tools are still not exposed.

Suspected failure point

The failure appears to be after successful MCP tools/list discovery and before Desktop registers/indexes those tools into the per-thread/deferred tool surface.

It does not appear to be caused by the MCP server implementation, stdio transport, project config, or CLI discovery, because live tools/list discovery succeeds outside the Desktop thread tool surface.

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appapp-serverIssues involving app server protocol or interfacesbugSomething isn't workingmcpIssues related to the use of model context protocol (MCP) servers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions