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

Open 💬 1 comment Opened Apr 10, 2026 by akibablade

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 list shows the plugin MCP server as enabled
  • codex mcp get <server> returns the expected stdio config
  • launching the installed MCP entrypoint directly returns a valid MCP initialize response

This suggests a mismatch between:

  1. plugin-managed MCP registration in runtime, and
  2. the desktop UI for MCP settings / plugin status

What steps can reproduce the bug?

Reproduction Steps

  1. Create or install a local Codex plugin with:
  • .codex-plugin/plugin.json
  • "mcpServers": "./.mcp.json"
  • a valid .mcp.json stdio server config
  1. Install the plugin in Codex.
  2. Restart/reopen Codex.
  3. Open the plugin details page.
  4. 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:

  1. 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
  1. If plugin-installed MCP servers are not meant to be auto-registered:
  • codex mcp list should 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 list showed:
  • playwright enabled
  • my-mcp-server enabled
  • codex mcp get my-mcp-server returned:
  • 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 settings prompt when the plugin MCP server is already registered and enabled
  • Ensure plugin details, MCP settings UI, and codex mcp list all reflect the same source of truth

View original on GitHub ↗

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