Plugin-installed MCP servers appear to register in Codex runtime but do not show in MCP Settings UI, and the plugin page incorrectly suggests manual setup is still required
What version of the Codex App are you using (From “About Codex” dialog)?
Version 26.406.31014 (1395)
What subscription do you have?
ChatGPT Pro
What platform is your computer?
MacOS Tahoe
What issue are you seeing?
Summary
On April 10, 2026, I installed a local Codex plugin that bundles both skills and an MCP server. After install and restart, the plugin page correctly shows the skills and an MCP server row, but it still displays Set up in MCP settings. The global MCP Settings page does not show the plugin’s MCP server at all.
However, Codex runtime appears to have already registered the MCP server successfully:
codex mcp listshows the plugin MCP server asenabledcodex mcp get <server>returns the expected stdio config- launching the installed MCP entrypoint directly returns a valid MCP
initializeresponse
This suggests a mismatch between:
- plugin-managed MCP registration in runtime, and
- the desktop UI for MCP settings / plugin status
What steps can reproduce the bug?
Reproduction Steps
- Create or install a local Codex plugin with:
.codex-plugin/plugin.json"mcpServers": "./.mcp.json"- a valid
.mcp.jsonstdio server config
- Install the plugin in Codex.
- Restart/reopen Codex.
- Open the plugin details page.
- Open global MCP Settings.
Observed Behavior
- The plugin details page shows:
- the plugin metadata
- bundled skills
- an MCP server row
- The plugin details page still shows
Set up in MCP settings - Global MCP Settings does not list the plugin’s MCP server
- But the CLI shows the MCP server is already registered and enabled
What is the expected behavior?
Expected Behavior
One of these should happen consistently:
- If plugin-installed MCP servers are meant to be auto-registered:
- the plugin page should show them as active/configured
- MCP Settings should either list them or clearly indicate they are plugin-managed
- the UI should not instruct the user to manually set them up
- If plugin-installed MCP servers are not meant to be auto-registered:
codex mcp listshould not show them as enabled until setup is completed- the plugin page should clearly explain that a separate activation step is required
Additional information
Environment
- Codex desktop app on macOS
- Date observed: April 10, 2026
- Local plugin install from workspace/repo
- Plugin type: repo-local Codex plugin with:
- skills
.codex-plugin/plugin.json.mcp.json- stdio MCP server
Actual Runtime Evidence
The plugin-managed MCP server was already present in runtime:
codex mcp listshowed:playwrightenabledmy-mcp-serverenabled
codex mcp get my-mcp-serverreturned:- transport:
stdio - command:
python3 - args:
./mcp/server/main.py
- The installed plugin bundle existed at:
- [/Users/akiba/.codex/plugins/cache/my-mcp-server-local/my-mcp-server/local/.codex-plugin/plugin.json](/Users/akiba/.codex/plugins/cache/my-mcp-server-local/my-mcp-server/local/.codex-plugin/plugin.json)
- [/Users/akiba/.codex/plugins/cache/my-mcp-server-local/my-mcp-server/local/.mcp.json](/Users/akiba/.codex/plugins/cache/my-mcp-server-local/my-mcp-server/local/.mcp.json)
- Running the installed MCP server entrypoint directly at:
- [/Users/akiba/.codex/plugins/cache/my-mcp-server-local/my-mcp-server/local/mcp/server/main.py](/Users/akiba/.codex/plugins/cache/my-mcp-server-local/my-mcp-server/local/mcp/server/main.py)
returned a valid MCP initialize response
Also, the global MCP config file only listed a manually added MCP server (playwright), not the plugin-managed one:
- [/Users/akiba/.codex/config.toml](/Users/akiba/.codex/config.toml)
Impact
- Users are told to perform setup that may already be complete
- Users may manually add duplicate MCP entries unnecessarily
- It is unclear whether plugin-installed MCP servers are active, inactive, or partially active
- The UI makes plugin/MCP behavior look broken even when runtime registration appears successful
Suggested Fix
- Make plugin-installed MCP servers visible in MCP Settings, or clearly separate “plugin-managed MCP servers” from manually configured/global MCP servers
- Remove or change the
Set up in MCP settingsprompt when the plugin MCP server is already registered and enabled - Ensure plugin details, MCP settings UI, and
codex mcp listall reflect the same source of truth
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗