Best for
- Developers learning the Apps SDK/MCP component development pattern
- Teams planning to build a custom connector app for ChatGPT
- Engineers who want working Node and Python reference code for widget rendering and state synchronization
OpenAI's official Apps SDK/MCP example repository, providing several runnable Node/Python server demos (Pizzaz, Kitchen Sink Lite, Solar System, Authenticated, Shopping Cart) plus a widget build pipeline, intended for learning and adaptation rather than direct production use.
This is OpenAI's official repository of example MCP servers and companion UI components (widgets) demonstrating how to build Apps SDK applications for ChatGPT. It bundles several standalone demo servers: Pizzaz (Node and Python implementations showing list, carousel, and map views plus an interactive shop/checkout flow), Kitchen Sink Lite (Node and Python, exercising the full window.openai host surface — reading tool input/output, display mode and theme, writing widget state, calling MCP tools from within a widget, and using host helpers like requestDisplayMode and openExternal), Solar System (Python, a 3D solar system viewer), Authenticated (Python, showing tool calls that require different OAuth authorization levels), and Shopping Cart (Python, showing how widgetSessionId keeps widgetState in sync across tool calls). The repo also ships a Vite-based build pipeline (build-all.mts) that bundles widget source into hashed HTML/JS/CSS assets the servers serve. It is meant as a learning starting point and scaffold for building your own ChatGPT apps, not a production-ready hosted service.
pnpm install && pre-commit install (npm/yarn also work).pnpm run build, producing hashed HTML/JS/CSS under assets/.pnpm run serve (defaults to http://localhost:4444 with CORS enabled).cd pizzaz_server_node && pnpm start; or for the Python servers (Pizzaz, Kitchen Sink, Solar System, Authenticated, Shopping Cart) create a virtualenv, pip install -r <server>/requirements.txt, then run uvicorn <module>:app --port 8000.https://<endpoint>.ngrok-free.app/mcp).MCP_ALLOWED_HOSTS and MCP_ALLOWED_ORIGINS environment variables to the tunnel host before starting the server.BASE_URL (used to generate widget HTML referencing hosted static assets) and API_BASE_URL (used by client widgets to build fully-qualified API URLs) environment variables.