Hosts
Cursor, Claude, VS Code, ChatGPT, and text-only degradation.
MCP hosts differ in what they can render. bitmcp emits official MCP Apps keys: _meta.ui.resourceUri and hashed text/html;profile=mcp-app resources. It does not add a ChatGPT Apps SDK adapter.
UI-capable hosts
Hosts that support MCP Apps advertise the UI extension:
- Extension:
io.modelcontextprotocol/ui - MIME:
text/html;profile=mcp-app
When supported, bitmcp attaches _meta.ui.resourceUri and the host loads your hashed HTML in a sandbox iframe.
Cursor
Cursor supports the MCP Apps extension. Point it at pnpm dev (stdio) or http://127.0.0.1:3000/mcp after bitmcp start. The View appears when the tool result includes resourceUri.
Claude
Claude with Apps loads the same resourceUri. Use stdio for Desktop, or Streamable HTTP for remote.
VS Code
VS Code MCP UI hosts consume the same hashed HTML. Configure the server command as pnpm dev in the project folder.
ChatGPT
ChatGPT implements MCP Apps. Use the official keys above. Do not add window.openai or openai/outputTemplate unless a specific host still requires that alias.
Preview
bitmcp preview is a local App Bridge host. It speaks ui/initialize and ui/notifications/tool-result, not a custom iframe RPC.
Text-only hosts
When the client cannot render Apps, bitmcp strips UI metadata for that request.
You still get:
- Tool text content
- MRTR confirmations
structuredContentin the protocol envelope (hosts may ignore it)
Degradation order: text → MRTR → View.
App-only defineAction tools stay hidden from model lists on text-only clients.
Capability detection
bitmcp reads client capabilities from the MCP request. If text/html;profile=mcp-app is missing, Views are omitted from the tool result metadata. Missing capabilities default to no UI.
Testing both paths
- Run
pnpm devand connect a stdio client without UI support. Confirm text and MRTR. - Run
pnpm previewor connect a UI-capable host. Confirm the View loads anduseApp().resultupdates.