microsoft / microsoft/vscode

MCP App UI resource is not rendered when the tool declares annotations

Open
#336,916 0 comments 0 reactions 1 assignee View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
193k
Forks
42.8k
PR merge metrics
PR metrics pending

Description

Does this issue occur when all extensions are disabled?: Yes. The behavior is in the built-in MCP Apps/Copilot Chat path; no third-party extension is involved.

  • VS Code Version: 1.138
  • OS Version: Linux
  • MCP transport: stdio

Summary

An MCP App tool is rendered when it has an output schema and both supported UI resource URI metadata forms, but adding MCP tool annotations prevents the host from treating the result as an app. The host no longer reads the registered ui:// resource.

Minimal setup

Register a tool with:

{
  "name": "widget_show",
  "inputSchema": {"type": "object"},
  "outputSchema": {"type": "object"},
  "_meta": {
    "ui": {"resourceUri": "ui://example/widget.html"},
    "ui/resourceUri": "ui://example/widget.html"
  }
}

Register ui://example/widget.html as text/html;profile=mcp-app, and return structured content matching the output schema plus markdown content from the tool call.

Steps to reproduce

  1. Call the tool without annotations. VS Code renders the MCP App and reads the ui:// resource.
  2. Add one or more standard tool annotations, for example:
"annotations": {
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": false
}
  1. Restart the stdio server and call the same tool.

Actual behavior

The result is treated as ordinary tool output and the host does not read the registered ui:// resource.

Expected behavior

Tool annotations should not change MCP App discovery or rendering. They describe execution semantics and should be compatible with a tool that returns an app-backed UI result.

Notes

The reproduction currently demonstrates the behavior with the annotation set above. I have intentionally not claimed which individual annotation triggers it; isolating that detail can follow once the expected interaction between annotations and MCP App detection is confirmed.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue through the built-in MCP Apps/Copilot Chat path using the stdio server, first without annotations and then with the listed annotations. Trace how tool results discover and read the registered ui:// resource; done means annotations no longer prevent the MCP App from rendering.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript, vscode
Domain
developer-experience, devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.