You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Remote server lists the app-only ui_get tool to clients without MCP Apps support #3683
An MCP Apps host reads that and keeps the tool away from the model, which is what you want. But a client without MCP Apps support doesn't look at _meta.ui at all, so it hands ui_get to the model as a regular tool. The model then sees a helper meant for a UI widget, and every conversation pays tokens for its schema.
The MCP Apps spec suggests checking client capabilities before registering UI tools. A client that supports Apps declares extensions["io.modelcontextprotocol/ui"] in its capabilities, so ui_get could be left out when that's missing.
To reproduce: list tools with a PAT twice, once with empty client capabilities and once with {"extensions": {"io.modelcontextprotocol/ui": {"mimeTypes": ["text/html;profile=mcp-app"]}}}. On both /mcp (49 tools) and /mcp/readonly (29 tools), ui_get shows up both times.
It's minor, since the tool is read-only. Tools like get_me that are visible to the model and the app are fine to list to everyone; this is only about the app-only one.
For context, I found it with toolmenu, a linter for MCP tool lists, on 2026-11-05. The server identified itself as github-mcp-server/remote-cffc9f76.
Activity
vshalpnjabi commentedon Nov 5, 2026
Hi, I'd like to work on this. I'll keep the fix small and add a test. Let me know if there's anything I should know before starting.