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
  • structuredContent in 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

  1. Run pnpm dev and connect a stdio client without UI support. Confirm text and MRTR.
  2. Run pnpm preview or connect a UI-capable host. Confirm the View loads and useApp().result updates.