x-api-key header where the host lets you set headers, or as the key query parameter where the host accepts only a URL. Without a key — or with an unknown or revoked one — the server serves the built-in kinds only; it never answers with an error. See keys and scopes.
claude.ai
claude.ai is an MCP Apps host: widgets mount inline, andprompt actions prefill your composer for you to send. Custom connectors accept only a URL, so the key travels as a query parameter.
Go to Settings → Connectors → Add custom connector and enter:
Claude Desktop
Claude Desktop takes the same custom connectors as claude.ai, and Apps-capable versions mount widgets inline in the chat. Add a connector under Settings → Connectors → Add custom connector with the same URL:claude_desktop_config.json with absolute paths — Desktop has no working directory:
ChatGPT
ChatGPT implements the MCP Apps standard, so widgets mount inline on chatgpt.com, in a mobile browser and in the desktop app.load and http actions run through its tools/call proxy. One difference from claude.ai: a prompt action is sent rather than placed in the composer — the desktop app asks send-or-cancel, and the web sends without asking when the connector’s permission is “allow all”. Its connectors take a URL only, so the key travels as a query parameter, the same shape as claude.ai’s:
VS Code Copilot Chat
VS Code Copilot Chat is an MCP Apps host and lets you set headers. Create.vscode/mcp.json in your workspace:
execute_action is hidden from the model and called by widgets.
Claude Code
Claude Code shows tool results as text and does not mount MCP Apps UI. Register the sample stdio server from a checkout of the repository:/mcp, then ask for a render. You receive the HTML and the payload as text; ask for format: "page" and open the document in a browser to see the widget.
MCP Apps basic-host
The reference host from the MCP Apps repository mounts the declared app template — the strictest acceptance surface for inline behaviour. Build it once:http://localhost:8080. SERVERS defaults to http://localhost:3001/mcp, so you can also aim it at a Streamable HTTP server of your own — see run your own server.
MCP Inspector
The Inspector is an interactive client without a model: you call tools by hand and read the raw results. Run it against the sample stdio server from a checkout:No host at all
One request proves the endpoint and the key work:Which hosts render inline
MCP Apps hosts cache the widget template per conversation. If a widget looks stale or unstyled right after widgentic ships an update, start a fresh conversation.