Codex App disconnects all MCP servers when Playwright MCP returns -32601 for resource template listing
What issue are you seeing?
In Codex App, if a configured MCP server does not implement resources/templates/list and returns -32601 Method not found, the whole MCP app-server connection gets disconnected instead of degrading gracefully for that one server.
I reproduced this with the officially documented Playwright MCP config:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
When this happens, unrelated MCP servers in the same Codex App session also disappear from the tool layer. In my case, both notion and context7 stopped being available until I worked around the issue.
The Codex App log showed this exact warning right before disconnecting:
Failed to list resource templates for MCP server 'playwright': Mcp error: -32601: Method not found
and then:
Codex app-server connection state changed ... next=disconnected previous=connected transport=stdio
Impact:
playwrightitself becomes unusable in the app session- unrelated MCP servers such as
notionandcontext7are effectively taken down too - users end up thinking multiple MCP integrations are broken, even though the trigger is one server not implementing optional resource/template methods
What steps can reproduce the bug?
- Use Codex App on macOS.
- Configure these MCP servers in
~/.codex/config.toml:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
[mcp_servers.notion]
url = "https://mcp.notion.com/mcp"
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp", "--api-key", "REDACTED"]
startup_timeout_ms = 20000
- Restart Codex App.
- Let Codex App initialize MCP servers.
- Observe logs and MCP availability.
Observed result:
- Codex tries to list resource templates for
playwright playwrightreturns-32601 Method not found- Codex app-server connection disconnects
- other MCP servers are no longer visible/usable in that session
Workaround I had to apply locally:
- put a small local shim in front of
@playwright/mcp - intercept
resources/list,resources/templates/list, andprompts/list - return empty arrays for those methods
- forward all other requests to the real Playwright MCP server
After doing that, playwright, notion, and context7 could coexist again in Codex App.
What is the expected behavior?
Codex App should treat missing MCP methods like resources/templates/list as non-fatal for that one server.
Expected behavior:
- if an MCP server returns
-32601 Method not foundfor optional discovery methods, Codex should continue running playwrightshould still be usable for tools even if it does not expose resources/templates- unrelated MCP servers such as
notionandcontext7should remain available - one partially implemented MCP server should not disconnect the whole MCP app-server connection
Additional information
Environment:
- Platform:
Darwin 25.2.0 arm64 arm - Server involved:
@playwright/mcp@0.0.68
The issue seems especially important because the Playwright MCP package is documented as a standard Codex MCP config in the Playwright README, so users can hit this immediately with a copy-paste setup.
The workaround confirms the issue is not that Playwright fails to start; the underlying server starts normally. The failure is specifically the Codex App reaction to -32601 on discovery methods.
2 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
I reproduced the failure mode locally with a narrower setup, and my read is that this is a capability-gating bug rather than something Playwright-specific.
mcpServerStatus/listappears to aggregate server status by probing optional resource endpoints across all connected MCP servers, including tools-only servers that did not advertiseresourcescapability duringinitialize.That means a tools-only server that correctly returns
-32601for unknown methods can still get probed with:resources/listresources/templates/listLocally, I patched the MCP connection manager to record whether
initialize.capabilities.resourcesis present, and to skip those optional resource probes for servers that do not advertise that capability.I also added a regression test using two local tools-only MCP servers that:
toolsonly-32601for unknown methodsWith that patch in place:
mcpServerStatus/listresources/resourceTemplatesresources/listresources/templates/listSo the local conclusion is:
For completeness: targeted MCP tests are green locally. A full local
cargo testrun is currently blocked by a separate reproducible app-server tracing test failure, which does not appear related to this MCP/resource-probing path.