Problem
core/mcp/extensions.ts registers the MCP Apps extension (io.modelcontextprotocol/ui) as advertised by default, on the premise that "the Inspector always renders MCP Apps". InspectorClient applies that default in every client. The web client renders Apps, but the CLI (which has only the --app-info metadata probe) and the TUI cannot, and neither overrides the default.
Servers use the client's extension advertisement to decide whether to return an App. A server talking to the CLI or TUI can therefore send UI those clients cannot consume, which misrepresents the client under test.
Expected
Only a client that can render Apps advertises io.modelcontextprotocol/ui. The CLI and TUI should not advertise it by default. If metadata probing needs the server to believe Apps are supported, that should be an explicit opt-in flag.
Context
Found in Copilot review of #2401. The roadmap's §4 extension table records it as a compatibility gap.
Problem
core/mcp/extensions.tsregisters the MCP Apps extension (io.modelcontextprotocol/ui) as advertised by default, on the premise that "the Inspector always renders MCP Apps".InspectorClientapplies that default in every client. The web client renders Apps, but the CLI (which has only the--app-infometadata probe) and the TUI cannot, and neither overrides the default.Servers use the client's extension advertisement to decide whether to return an App. A server talking to the CLI or TUI can therefore send UI those clients cannot consume, which misrepresents the client under test.
Expected
Only a client that can render Apps advertises
io.modelcontextprotocol/ui. The CLI and TUI should not advertise it by default. If metadata probing needs the server to believe Apps are supported, that should be an explicit opt-in flag.Context
Found in Copilot review of #2401. The roadmap's §4 extension table records it as a compatibility gap.