Custom STDIO MCP server enabled and tools/list works, but tools are not exposed in Codex Desktop thread
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.602.40724 • Released 5 Haz 2026
What subscription do you have?
Plus
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
<img width="1920" height="1040" alt="Image" src="https://github.com/user-attachments/assets/acc68ce8-bb74-485f-b6b4-74f93f6717ae" />
<img width="1920" height="1040" alt="Image" src="https://github.com/user-attachments/assets/25b0b545-d5a5-436d-b3cd-286161d97b7e" />
A custom STDIO MCP server is enabled in Codex Desktop and works correctly at the MCP protocol level, but its tools are not exposed to the active Codex Desktop thread.
The MCP server appears enabled in Codex Desktop Settings → MCP servers. It also appears in /mcp as enabled.
Local protocol probe succeeds:
- initialize: OK
- serverInfo: kuponcu-context-mcp v0.2.0
- tools/list returns 7 tools:
- get_current_baseline
- get_task_policy
- get_forbidden_surfaces
- get_validation_profile
- search_project_sources
- verify_hash_only
- get_report_contract
However, inside a Codex Desktop thread opened in the correct workspace, tool_search cannot find any of these tools.
Relevant session evidence:
- cwd: C:\Users\QQ\Desktop\altin-starter
- originator: Codex Desktop
- cli_version shown in logs: 0.137.0-alpha.4
- The prompt asked Codex to check for these exact MCP tools:
get_current_baseline, get_task_policy, get_forbidden_surfaces, get_validation_profile, search_project_sources, verify_hash_only, get_report_contract
- Codex performed a tool_search_call with these tool names.
- tool_search_output returned:
tools: []
- Final result:
MCP_TOOLS_NOT_VISIBLE
The issue is not that the MCP server is missing or failing to start. The server is enabled, visible in settings, and protocol-valid, but the active Codex thread does not expose its tools.
What steps can reproduce the bug?
- On Windows, create a custom STDIO MCP server and add it in Codex Desktop Settings → MCP servers.
- Configure it with:
- command: C:\Users\QQ\Desktop\altin-starter\.venv\Scripts\python.exe
- args:
- -B
- C:\Users\QQ\Desktop\altin-starter\mcp_servers\kuponcu_context_mcp\kuponcu_context_mcp\server.py
- --repo-root
- C:\Users\QQ\Desktop\altin-starter
- --source-root
- C:\Users\QQ\Desktop\kuponcu-context-sources\PR69_K1U_K1S_GA
- cwd: C:\Users\QQ\Desktop\altin-starter
- Confirm the server is enabled in Codex Desktop Settings.
- Confirm
/mcpshows the server as enabled. - Verify locally outside Codex that the MCP protocol works:
- initialize returns OK
- tools/list returns 7 tools
- Open a Codex Desktop thread in the same workspace:
C:\Users\QQ\Desktop\altin-starter
- Ask Codex to check for the MCP tools:
get_current_baseline, get_task_policy, get_forbidden_surfaces, get_validation_profile, search_project_sources, verify_hash_only, get_report_contract
- Codex performs tool_search, but the result is an empty list:
tools: []
- The thread reports MCP_TOOLS_NOT_VISIBLE.
Session id from the failing run:
019e98f4-1731-79c2-a00d-62736bace39e
What is the expected behavior?
If a custom STDIO MCP server is enabled in Codex Desktop, visible in /mcp, and its local MCP protocol tools/list call succeeds, its tools should be exposed to the active Codex Desktop thread/tool registry.
Expected:
- tool_search should find the custom MCP tools.
- Codex should be able to call get_current_baseline and the other MCP tools.
- If tools are intentionally not exposed, Codex Desktop should show a clear reason or error, such as unsupported transport, invalid schema, disabled tool list, workspace restriction, approval issue, or thread type incompatibility.
Actual:
- The MCP server is enabled and protocol-valid.
/mcpshows the server as enabled.- Local tools/list returns 7 tools.
- The Codex Desktop thread tool_search returns tools: [].
- Codex reports MCP_TOOLS_NOT_VISIBLE.
Additional information
In Codex Desktop Settings → MCP servers, kuponcu-context-mcp appears under “Servers” and the toggle is enabled. Built-in/plugin MCP entries such as codex_apps and node_repl appear separately under plugins. Despite this, the active thread tool_search returns tools: [] for all custom MCP tool names.
No secrets, .env values, tokens, cookies, runtime_state contents, or private payloads are included in this report.
5 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
Small correction to the reproduction section:
The command path should be:
Update: Streamable HTTP MCP works in the same Codex Desktop environment.
STDIO MCP result:
/mcp: enabledtools: []/MCP_TOOLS_NOT_VISIBLE)Streamable HTTP MCP result:
/mcp: enabledget_current_baselinewas visible and callable from the threadget_task_policyget_forbidden_surfacesget_report_contractsearch_project_sourcesHTTP MCP URL:
same problem
Additional reproduction — Desktop app-server 0.149.0 (MSIX 26.818.3698.0), Windows 11 build 26200; CLI 0.148.0 works with identical config
Adding another data point, consistent with #30343 and the original report.
Environment
26.818.3698.0; embedded app-server version string read from the installedcodex.exebinary:0.149.0v0.148.0mcpSDK 2.0.0), absolute-path venv launcher, reading a local Obsidian vault; configured in~/.codex/config.tomlas[mcp_servers.kika-obsidian]withenabled = trueanddefault_tools_approval_mode = "auto"Repro timeline
codex mcp list-> server present, statusenabled;codex mcp get kika-obsidianshows the full stdio config.initialize->notifications/initialized->tools/list): PASS. 17 tools returned; callinglist_notesandsearch_notesreturns real vault content./mcpstill lists the server as enabled.config.toml:codex exec --skip-git-repo-check --sandbox read-only "list your MCP tools"-> PASS; the CLI session reportskika-obsidianwithsearch_notes,get_note,list_notescallable.Causal isolation
python.exeand does not depend onnpx,node, orcmdresolution, so the Windows-PATH hypothesis from #30343 does not apply here.mcp_serverstools into the thread tool registry, not a server or environment issue.Workaround note
Request
tools: []in Desktop thread tool search while the identical CLI session exposes and can call them.