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:
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.