Conceptos

Qué clientes soportan MCP Apps

Dónde se pintan hoy las MCP Apps, host por host, desde cuándo y con qué límites, y qué hacen los agentes de terminal como Claude Code con una tool que tiene interfaz.

8 min de lectura

Qué clientes soportan MCP Apps hoy

A octubre de 2026, las MCP Apps se pintan en Claude (web, escritorio y móvil), ChatGPT, VS Code con GitHub Copilot, Microsoft 365 Copilot, Cursor, Goose, Postman y MCPJam, y la matriz de clientes oficial añade Archestra.AI y PostHog Code. Claude Code y los demás agentes de terminal no las pintan: llaman a la tool y usan su texto. Si la extensión en sí te suena nueva, empieza por Qué son las MCP Apps.

Un aviso antes de la tabla: la matriz de clientes la mantiene la comunidad con pull requests, y los hosts cambian a menudo. Tómate la lista como una foto con sus fuentes, y mira la documentación del host antes de prometerle una función a nadie.

HostPinta MCP AppsDesde cuándo, y fuente
Claude (web y escritorio)SíEl día del lanzamiento, 26 de enero de 2026 (blog de MCP)
Claude móvil (iOS, Android)Sí, en una WebView nativa, con límitesPautas de diseño de Claude
ChatGPTSíDespliegue desde la semana del 26 de enero de 2026; "totalmente compatible" desde el 22 de febrero de 2026 (changelog de OpenAI)
VS Code (GitHub Copilot)SíInsiders el 26 de enero de 2026, Stable en la versión siguiente (blog de VS Code)
Microsoft 365 Copilot ChatSíDisponible para todos desde marzo de 2026 (Microsoft Learn)
CursorSíCursor 2.6, 3 de marzo de 2026 (changelog)
GooseSí (escritorio)El día del lanzamiento, 26 de enero de 2026 (blog de MCP)
PostmanSíMatriz de clientes
MCPJam InspectorSíMatriz de clientes
Archestra.AI, PostHog CodeSíMatriz de clientes
Claude Code (terminal)No, solo textoDocumentación de Claude

Un cliente que soporta la extensión lo anuncia al conectarse, en capabilities.extensions["io.modelcontextprotocol/ui"]. Tu servidor no tiene que comprobarlo: los hosts que no la soportan ignoran el _meta.ui de tus tools y ya está.

Claude en la web, en escritorio y en móvil

Claude fue de los primeros hosts, el mismo día en que la extensión se hizo oficial. En la web y en la app de escritorio, una MCP App aparece como tarjeta en línea, como carrusel en línea o a pantalla completa, y las pautas de diseño ponen límites claros a las tarjetas en línea: la altura se ajusta al contenido sin scroll interno, dos acciones como mucho, y nada de menús ni popovers que el contenedor del host pueda recortar (pautas de diseño).

Lo que más suele pillar:

  • En móvil es una WebView, no un iframe. En iOS y Android, Claude pinta las apps en WKWebView y en WebView de Android. En móvil no hay acceso a cámara, micrófono ni ubicación, y el conector se tiene que añadir antes en la web o en escritorio para que aparezca en el móvil.
  • frameDomains está restringido. Incrustar iframes de terceros está restringido en Claude hasta que pase una revisión de seguridad. Si tu vista incrusta un reproductor de vídeo o un mapa de otra web, cuenta con que se quede en blanco en Claude.
  • Variables de estilo del host. Claude manda sus colores, fuentes y radios como variables CSS, en claro y en oscuro. Una vista que las lee parece de la casa; una con la paleta fija parece pegada. Lo tienes en temas en MCP Apps.
  • localhost no llega por URL. A un servidor añadido por URL en claude.ai o en la app de escritorio se conecta la infraestructura de Anthropic, así que una dirección localhost no sirve. Mientras pruebas, usa un túnel o un servidor desplegado, o arráncalo desde el fichero de configuración de la app de escritorio.

ChatGPT, ahora con plugins

ChatGPT empezó a desplegar MCP Apps la misma semana en que la extensión se declaró estable, y el changelog de OpenAI lo marca como "totalmente compatible con la especificación de MCP Apps" el 22 de febrero de 2026. Desde el 28 de mayo de 2026 ChatGPT manda además las variables CSS estándar del host.

Alrededor han cambiado dos cosas. La primera: OpenAI dice que la interfaz nueva debe usar los campos y el puente comunes de MCP Apps, y window.openai solo para lo que la especificación no cubre, como el pago, los modales, la subida de ficheros o el estado guardado del widget (MCP Apps en ChatGPT). Las claves antiguas (openai/outputTemplate, text/html+skybridge) siguen funcionando como alias de compatibilidad. La segunda: el 9 de julio de 2026 OpenAI sustituyó el directorio de apps por el directorio de plugins, y la documentación para desarrolladores pasó a developers.openai.com/plugins. Las apps siguen funcionando por debajo de los plugins. La guía de interfaz de plugins de ChatGPT explica la migración.

ChatGPT bloquea por defecto los iframes anidados, y la revisión de plugins comprueba la CSP que declaras (documentación de interfaz de ChatGPT).

VS Code y GitHub Copilot

VS Code sacó MCP Apps en Insiders el 26 de enero de 2026 y en Stable la semana siguiente, dentro del chat de agente de GitHub Copilot. Para quien desarrolla es el sitio más cómodo para ver la interfaz al lado del código que la genera: puedes arrancar tu servidor en local y conectarlo a VS Code sin túnel.

Microsoft 365 Copilot

El soporte de MCP Apps en Microsoft 365 Copilot Chat está disponible para todos desde marzo de 2026. Microsoft documenta el despliegue por sideloading para pruebas, por el centro de administración de Microsoft 365 para organizaciones y por la tienda de agentes, y su equipo de Power Apps ofrece en preview una skill, generate-mcp-app-ui, que escribe el HTML de un widget con tokens de Fluent UI a partir del JSON de una tool (Microsoft Learn).

Cursor

Cursor añadió MCP Apps en la versión 2.6, del 3 de marzo de 2026, con la interfaz pintada en el chat del agente (changelog). Su documentación deja claro el respaldo: si un host no puede pintar la interfaz, la misma tool sigue funcionando con respuestas MCP normales (documentación de Cursor).

Goose, Postman y MCPJam

Goose soportó MCP Apps desde el día del lanzamiento, después de haber sido de los primeros en adoptar MCP-UI. Su documentación describe apps que se pintan en la conversación y apps que se abren en su propia ventana, y marca la función como experimental y en desarrollo (documentación de goose).

Postman adoptó MCP-UI pronto y aparece en la matriz de clientes como host de MCP Apps. Viene bien para llamar a mano a las tools de un servidor y ver qué devuelven.

MCPJam es un inspector de MCP con un Apps Builder: un emulador local de MCP Apps y de apps de ChatGPT (blog de MCPJam). Es una herramienta para probar, no un chat para el día a día.

Claude Code y otros agentes de terminal

Claude Code no pinta MCP Apps. El quickstart de Anthropic lo dice sin rodeos: Claude Code llama a la tool como texto y no pinta la interfaz (documentación de Claude). A octubre de 2026 sigue abierta una petición para que pinte los recursos ui:// (anthropics/claude-code#95149). Da por hecho lo mismo en cualquier agente de terminal que no esté en la matriz, hasta que su documentación diga otra cosa.

Tu tool funciona igual. Lo que recibe el modelo es el resultado de la tool, así que el resultado tiene que entenderse sin la vista. El mismo quickstart apunta un detalle: si la tool devuelve structuredContent, Claude Code le pasa al modelo ese JSON en lugar de tu texto de content.

Cómo escribir un buen texto de respaldo

Escribe las dos mitades del resultado pensando en alguien que nunca va a ver la interfaz:

  • Pon un resumen de verdad en content. Di qué enseña el widget, con las cifras que importan: "Tablero Lanzamiento de la beta: 2 tarjetas por hacer, 2 en curso (una vence el 5 de octubre), 1 hecha". No "Mostrando widget".
  • Que structuredContent se entienda. Nombres de clave claros (dueDate, no d), sin ruido de presentación como colores o tamaños en píxeles, y las unidades en el nombre o en el valor. Un modelo que solo ve el JSON tiene que poder responder "¿qué va con retraso?".
  • No escondas datos en la vista. Si la vista calcula un total o marca una tarjeta vencida, calcúlalo también en el servidor y mételo en el resultado.
  • Describe la tool para el modelo, no para la interfaz. La descripción decide cuándo la llama el modelo. "Shows a project board with columns and cards" funciona en cualquier host.
ts
return {
  content: [{ type: 'text', text: 'Board "Beta launch": 2 to do, 2 in progress (1 due 2026-10-05), 1 done.' }],
  structuredContent: data,
}

Si usas el snippet de exportación de Widgetry, su manejador devuelve una línea corta, Showing <título>. En los hosts que pintan la vista basta; si tu servidor también se usa desde agentes de terminal, construye esa línea a partir de los datos como arriba.

Cómo probar un widget sin tener todos los hosts

No vas a tener cuenta en diez hosts, y para casi todo el trabajo no te hace falta.

  • Un host local o un inspector. El Apps Builder de MCPJam emula en local MCP Apps y apps de ChatGPT. Varios frameworks traen el suyo: sunpeak tiene simuladores locales de ChatGPT y de Claude, Skybridge un emulador, mcp-use un inspector, y FastMCP tiene fastmcp dev apps para servidores en Python.
  • VS Code. Conecta tu servidor local al chat de GitHub Copilot y ve la vista sin desplegar nada.
  • El editor de Widgetry. Si haces el widget en Widgetry, la vista previa es un host MCP Apps de verdad construido sobre el AppBridge del SDK oficial. Hace el mismo saludo, manda los datos de la tool del mismo modo, cambia entre claro y oscuro y aplica la CSP de imágenes del widget, así que una foto de un dominio sin declarar se bloquea en la vista previa igual que en Claude.
  • El endpoint alojado. Publica el widget y conecta https://widgets.gonzaloverdugo.com/mcp a un host real: claude.ai y los demás clientes que usan OAuth entran con tu cuenta, y los agentes de programación usan una clave de API como token Bearer. Tienes una tool show_<slug> por cada widget publicado, así que lo pruebas en Claude, ChatGPT o VS Code antes de tocar tu servidor. Después, llévatelo a tu servidor.

Antes de publicar, prueba en al menos dos hosts reales. La diferencia más habitual entre ellos es la CSP: una política que funciona en un host puede dejar la vista en blanco en otro (Claude restringe frameDomains, por ejemplo). La guía de CSP tiene la lista de comprobaciones.

Tu primer widget, en el chat en unos minutos

Elige una plantilla, pon tus datos y míralo como lo enseñarán ChatGPT o Claude. Después enlázalo desde tu servidor MCP, o deja que tu agente haga el siguiente.