# gadget-chatgpt-apps-sdk-guide-2025-10-10

## Veille

Guía de Desarrollo del ChatGPT Apps SDK (OpenAI) - MCP, OAuth 2.1, Widgets

## Titre Article

Everything you need to know about building ChatGPT apps

## Date

2025-10-10

## URL

https://gadget.dev/blog/everything-you-need-to-know-about-building-chatgpt-apps

## Keywords

ChatGPT Apps, OpenAI SDK, MCP, Model Context Protocol, OAuth 2.1, Widgets, CORS, Vite, window.openai, Streamable HTTP, iframes, desarrollo de aplicaciones

## Authors

Harry (Gadget)

## Ton

**Perfil**: Informe de experiencia técnica de primera mano, registro informal pero experto, alto nivel técnico.

**Descripción**: El autor comparte la experiencia adquirida "en caliente" tras varios días de desarrollo intensivo con el ChatGPT Apps SDK. El tono es el de un desarrollador dirigiéndose a sus pares, combinando humor ("Cross Origin Emotional Damage", "boy oh boy are we early") con una experiencia técnica precisa. El artículo adopta la postura de una guía práctica, compartiendo los obstáculos encontrados y las soluciones halladas. El autor no duda en criticar las carencias de la documentación oficial de OpenAI, al tiempo que ofrece alternativas concretas. Público objetivo: desarrolladores experimentados que buscan crear aplicaciones ChatGPT.

## Pense-betes

- Una ChatGPT App = MCP server + extensión de UI (widgets) + opcionalmente OAuth 2.1/OIDC
- Preferir `StreamableHTTPServerTransport` frente a la versión SSE de los ejemplos de OpenAI
- Los ejemplos oficiales usan un mapa de sesiones en memoria que no funciona en serverless
- Usar MCP Inspector para depurar antes que ChatGPT (los mensajes de error de ChatGPT no son informativos)
- OAuth 2.1: se es el **proveedor**, no el cliente - una inversión del modelo habitual
- Los widgets son iframes en sandbox con HTML estático (sin SSR posible)
- Vite recomendado para desarrollar widgets (TypeScript, Tailwind, HMR)
- `window.openai` permite invocar herramientas MCP desde el widget con auth incluida de forma gratuita
- Alternativa: `fetch` directo, pero se pierde la auth y la visibilidad del LLM sobre las interacciones
- CORS: configuración necesaria para MCP, OAuth 2.1 y activos del frontend
- Origen del widget: `https://web-sandbox.oaiusercontent.com`
- Plugin de Vite para ChatGPT Widgets disponible en el GitHub de Gadget

## RésuméDe400mots

El equipo de Gadget comparte su informe de experiencia tras varios días de desarrollo intensivo con el nuevo ChatGPT Apps SDK de OpenAI. El artículo detalla los tres componentes esenciales de una aplicación ChatGPT: un MCP server conforme al Model Context Protocol, una extensión que permite mostrar interfaces de usuario dentro de las conversaciones y, opcionalmente, un servidor OAuth 2.1 con OIDC para la autenticación.

Para la construcción de MCP servers, el artículo recomienda usar el transporte Streamable HTTP en lugar de la versión SSE presentada en los ejemplos oficiales de OpenAI. Los ejemplos proporcionados utilizan un mapa de sesiones en memoria que no es adecuado para plataformas serverless. Se recomienda MCP Inspector para la depuración inicial, dado que los mensajes de error de ChatGPT son poco informativos.

Implementar la autenticación OAuth 2.1 representa un cambio de paradigma: a diferencia de la práctica habitual de redirigir a un proveedor externo como Google, aquí la propia aplicación debe actuar como el proveedor OAuth para OpenAI. Esto exige implementar los endpoints de descubrimiento OIDC que permiten a ChatGPT obtener tokens.

La funcionalidad más innovadora es la capacidad de servir widgets de interfaz interactivos a los usuarios. Estos widgets son en realidad iframes en sandbox que cargan un documento HTML estático, almacenado en caché en el momento de la instalación de la aplicación. Esta restricción obliga a desarrollar aplicaciones de una sola página (single-page applications) del lado del cliente, sin renderizado dinámico en el servidor. El equipo recomienda Vite para la compilación TypeScript, el bundling, el hot-module-reloading y el soporte de Tailwind. Hay disponible un plugin de Vite dedicado en GitHub.

Para la comunicación con el backend desde un widget existen dos enfoques. El objeto `window.openai`, inyectado por OpenAI, permite invocar herramientas MCP con la autenticación gestionada automáticamente y visibilidad para el LLM sobre las interacciones. La alternativa mediante `fetch` directo exige gestionar la autenticación manualmente y pierde la conciencia contextual del LLM.

CORS constituye un desafío mayor, con tres configuraciones distintas que gestionar: las rutas MCP, las rutas OAuth 2.1 y los activos del frontend. Para las dos primeras, se recomienda una cabecera permisiva `Access-Control-Allowed-Origin: *`, ya que la autenticación ya asegura las llamadas. Para los activos de los widgets, debe autorizarse el origen `https://web-sandbox.oaiusercontent.com` utilizado por OpenAI.

El artículo concluye que el ecosistema aún es muy joven pero prometedor, con plantillas listas para usar disponibles en Gadget para acelerar el inicio.

## GrapheDeConnaissance

- Gadget —publie→ guide ChatGPT Apps SDK (DOCUMENT, 0.98)
- Harry Brundage —publie→ guide ChatGPT Apps SDK (DOCUMENT, 0.95)
- ChatGPT App —est_basé_sur→ MCP server (TECHNOLOGIE, 0.98)
- ChatGPT App —utilise→ OAuth 2.1 (TECHNOLOGIE, 0.97)
- ChatGPT App —utilise→ widgets iframes (CONCEPT, 0.97)
- Gadget —recommande→ StreamableHTTPServerTransport (TECHNOLOGIE, 0.95)
- OpenAI —publie→ ChatGPT Apps SDK (TECHNOLOGIE, 0.98)
- ChatGPT Apps SDK —utilise→ OAuth 2.1 (CONCEPT, 0.95)
- Vite —améliore→ développement widgets ChatGPT (METHODOLOGIE, 0.92)
- window.openai —permet→ authentification gratuite (CONCEPT, 0.93)
- CORS —s_oppose_à→ développement ChatGPT Apps (CONCEPT, 0.9)
- MCP Inspector —améliore→ débogage MCP (METHODOLOGIE, 0.92)
- Gadget —s_oppose_à→ OpenAI (CONCEPT, 0.88)

---
Canonical: https://www.thekb.eu/es/fiches/gadget-chatgpt-apps-sdk-guide-2025-10-10/
