Same here. Registered a Skybridge (v1.2.5) server with Claude Desktop, both via a stdio wrapper (mcp-remote → local HTTP) and via direct HTTP transport — same result both ways.
tools/call succeeds and returns correct structuredContent.
resources/list returns the tool's ui://views/ext-apps/<name>.html resource correctly.
resources/read on that URI returns valid text/html;profile=mcp-app content, which correctly references a reachable JS bundle (verified 200 OK, correct CORS/content-type headers) served from the same local server.
Despite all of this checking out manually via curl, Claude Desktop renders the tool's plain-text result instead of the interactive view — no widget, no error, just text.
One thing that stood out: tools/list's per-tool _meta is shaped as:
"_meta": {
"ui/resourceUri": "ui://views/...",
"ui": { "resourceUri": "ui://views/..." }
}
Is this the _meta shape Claude Desktop's current MCP Apps client actually expects? Wondering if there's a mismatch between how Skybridge advertises the UI resource and what Desktop's client looks for.
Happy to share full request/response logs if useful.
Originally posted by @n-sviridenko in #891
Originally posted by @n-sviridenko in #891