-
Notifications
You must be signed in to change notification settings - Fork 137
Description
Describe the bug
MCP App UI (interactive HTML resource) does not render in Cursor when calling an MCP tool that has a linked UI resource via _meta.ui.resourceUri. Only the text fallback content is displayed instead of the interactive UI.
To Reproduce
Steps to reproduce the behavior:
- Create an MCP App with a tool and linked UI resource using @modelcontextprotocol/ext-apps SDK
- Register the tool with _meta: { ui: { resourceUri: "ui://color-picker/mcp-app.html" } }
- Register the corresponding resource using registerAppResource
- Start the MCP server (HTTP transport on http://localhost:3001/mcp)
- Configure Cursor to use the MCP server
- Call the tool using a prompt (e.g., "display color picker")
- Observe that only text output is shown, not the interactive UI
Expected behavior
The interactive UI (HTML/CSS/JS bundled as a single-file resource) should render inline in the chat, similar to how Claude Desktop renders MCP App UIs. The color picker should display with:
- Color preview panel
- Native color input
- HEX/RGB/HSL value displays
- RGB sliders
- Copy buttons
Logs
Tool response received correctly:
Color Picker initialized with #3b82f6
RGB: rgb(59, 130, 246)
HSL: hsl(217, 91%, 60%)
Server logs show successful startup:
Color Picker MCP App server listening on http://localhost:3001/mcp
2026-01-29 20:22:13.495 [info] Handling CallTool action for tool 'color-picker' with toolCallId: toolu_01AcmUnvGFUA7jiTLh5UeJAN
2026-01-29 20:22:13.495 [info] Calling tool 'color-picker' with toolCallId: toolu_01AcmUnvGFUA7jiTLh5UeJAN
2026-01-29 20:22:13.495 [info] No stored tokens found
2026-01-29 20:22:14.311 [info] Successfully called tool 'color-picker'
2026-01-29 20:24:00.808 [error] Client error for command Streamable HTTP error: Failed to open SSE stream:
2026-01-29 20:24:00.809 [error] Client error for command Streamable HTTP error: Failed to open SSE stream:
2026-01-29 20:24:00.832 [info] Handling ListToolsRaw action
2026-01-29 20:24:00.834 [info] Handling GetInstructions action
2026-01-29 20:24:00.929 [info] Handling ListToolsRaw action
2026-01-29 20:24:00.930 [info] Handling GetInstructions action
2026-01-29 20:24:34.028 [info] Handling ListOfferings action, server stored: true
2026-01-29 20:24:34.028 [info] Connected to streamableHttp server, fetching offerings
2026-01-29 20:24:34.053 [info] No stored tokens found
2026-01-29 20:24:34.989 [info] listOfferings: Found 1 tools
2026-01-29 20:24:34.990 [info] No stored tokens found
2026-01-29 20:24:35.074 [info] listResources: Found 1 resources
2026-01-29 20:24:35.074 [info] Found 1 tools, 0 prompts, and 1 resources
2026-01-29 20:24:35.078 [info] Handling GetInstructions action
Additional context
-
MCP Apps SDK version: @modelcontextprotocol/ext-apps@^1.0.0
-
This appears to be a missing feature in Cursor's MCP host implementation - UI resource rendering is not yet supported
-
Cursor Response from the prompt
- Cursor's MCP Server enabled
- My MCP Server:
"my-mcp-server-21a6b74b": {
"url": "https://oak-greeting-our-consists.trycloudflare.com/mcp",
"type": "http"
}