Skip to content

Unable to render Color Picker UI in Cursor #396

@AseemWangoo

Description

@AseemWangoo

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:

  1. Create an MCP App with a tool and linked UI resource using @modelcontextprotocol/ext-apps SDK
  2. Register the tool with _meta: { ui: { resourceUri: "ui://color-picker/mcp-app.html" } }
  3. Register the corresponding resource using registerAppResource
  4. Start the MCP server (HTTP transport on http://localhost:3001/mcp)
  5. Configure Cursor to use the MCP server
  6. Call the tool using a prompt (e.g., "display color picker")
  7. 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

Image
  • Cursor's MCP Server enabled
Image
  • My MCP Server:
"my-mcp-server-21a6b74b": {
			"url": "https://oak-greeting-our-consists.trycloudflare.com/mcp",
			"type": "http"
		}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions