{
  "markdown": "<!-- LOGO -->\n<div align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"media/mcp-white.svg\">\n    <source media=\"(prefers-color-scheme: light)\" srcset=\"media/mcp.svg\">\n    <img src=\"media/mcp.svg\" alt=\"MCP Apps\" width=\"128\">\n  </picture>\n  <h1>MCP Apps</h1>\n  <p>\n    Build interactive UIs for MCP tools — charts, forms, dashboards — that render inline in Claude, ChatGPT and any other compliant chat client.\n    <br /><br />\n    <a href=\"#why-mcp-apps\">Why</a>\n    ·\n    <a href=\"https://apps.extensions.modelcontextprotocol.io/api/documents/Quickstart.html\">Quickstart</a>\n    ·\n    <a href=\"https://apps.extensions.modelcontextprotocol.io/api/\">API Docs</a>\n    ·\n    <a href=\"https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx\">Spec</a>\n    ·\n    <a href=\"CONTRIBUTING.md\">Contributing</a>\n  </p>\n</div>\n\n<p align=\"center\">\n  <a href=\"https://github.com/modelcontextprotocol/ext-apps/actions/workflows/ci.yml\"><img src=\"https://github.com/modelcontextprotocol/ext-apps/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-Apache%202.0-blue\" alt=\"License: Apache 2.0\"></a>\n  <a href=\"https://www.npmjs.com/package/@modelcontextprotocol/ext-apps\"><img src=\"https://img.shields.io/npm/v/@modelcontextprotocol/ext-apps.svg\" alt=\"npm version\"></a>\n  <a href=\"https://www.npmjs.com/package/@modelcontextprotocol/ext-apps\"><img src=\"https://img.shields.io/npm/dm/@modelcontextprotocol/ext-apps.svg\" alt=\"npm downloads\"></a>\n  <a href=\"https://github.com/modelcontextprotocol/ext-apps\"><img src=\"https://img.shields.io/github/stars/modelcontextprotocol/ext-apps\" alt=\"GitHub stars\"></a>\n  <a href=\"https://apps.extensions.modelcontextprotocol.io/api/\"><img src=\"https://img.shields.io/badge/docs-API%20Reference-blue\" alt=\"API Documentation\"></a>\n</p>\n\n<p align=\"center\">\n  <img src=\"media/excalidraw.gif\" alt=\"MCP Apps demo\" width=\"600\">\n  <br><em>Excalidraw built with MCP Apps, running in Claude</em>\n</p>\n\n## Table of Contents\n\n- [Build with Agent Skills](#build-with-agent-skills)\n- [Supported Clients](#supported-clients)\n- [Why MCP Apps?](#why-mcp-apps)\n- [How It Works](#how-it-works)\n- [Getting Started](#getting-started)\n- [Using the SDK](#using-the-sdk)\n- [Examples](#examples)\n- [Specification](#specification)\n- [Resources](#resources)\n- [Contributing](#contributing)\n\n## Build with Agent Skills\n\nThe fastest way to build an MCP App is to let your AI coding agent do it. This\nrepo ships four [Agent Skills](https://agentskills.io/) — install them once,\nthen just ask:\n\n| Skill                                                                       | What it does                                                | Try it                                |\n| --------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------- |\n| [`create-mcp-app`](./plugins/mcp-apps/skills/create-mcp-app/SKILL.md)       | Scaffolds a new MCP App with an interactive UI from scratch | _\"Create an MCP App\"_                 |\n| [`migrate-oai-app`](./plugins/mcp-apps/skills/migrate-oai-app/SKILL.md)     | Converts an existing OpenAI App to use MCP Apps             | _\"Migrate from OpenAI Apps SDK\"_      |\n| [`add-app-to-server`](./plugins/mcp-apps/skills/add-app-to-server/SKILL.md) | Adds interactive UI to an existing MCP server's tools       | _\"Add UI to my MCP server\"_           |\n| [`convert-web-app`](./plugins/mcp-apps/skills/convert-web-app/SKILL.md)     | Turns an existing web app into a hybrid web + MCP App       | _\"Add MCP App support to my web app\"_ |\n\n### Install the Skills\n\n**Claude Code** — install via the plugin marketplace:\n\n```\n/plugin marketplace add modelcontextprotocol/ext-apps\n/plugin install mcp-apps@modelcontextprotocol-ext-apps\n```\n\n**Other agents** — any AI coding agent that supports\n[Agent Skills](https://agentskills.io/) can use these skills. See the\n[agent skills guide](./docs/agent-skills.md) for manual installation\ninstructions.\n\nOnce installed, verify by asking your agent _\"What skills do you have?\"_ — you\nshould see `create-mcp-app`, `migrate-oai-app`, `add-app-to-server`, and\n`convert-web-app` in the list. Then just ask it to create or migrate an app and\nit will guide you through the rest.\n\n## Supported Clients\n\n<p align=\"center\">\n  <a href=\"https://developers.openai.com/apps-sdk/mcp-apps-in-chatgpt/\"><img src=\"https://img.shields.io/badge/ChatGPT-docs-74aa9c?logo=openai&logoColor=white\" alt=\"ChatGPT\"></a>\n  <a href=\"https://claude.com/docs/connectors/building/mcp-apps/getting-started\"><img src=\"https://img.shields.io/badge/Claude-docs-d97706?logo=claude&logoColor=white\" alt=\"Claude\"></a>\n  <a href=\"https://code.visualstudio.com/blogs/2026/01/26/mcp-apps-support\"><img src=\"https://img.shields.io/badge/VS_Code-docs-007ACC?logo=visualstudiocode&logoColor=white\" alt=\"VS Code\"></a>\n  <a href=\"https://block.github.io/goose/docs/tutorials/building-mcp-apps/\"><img src=\"https://img.shields.io/badge/Goose-docs-000000?logo=goose&logoColor=white\" alt=\"Goose\"></a>\n  <a href=\"https://learning.postman.com/docs/postman-ai/mcp-requests/interact\"><img src=\"https://img.shields.io/badge/Postman-docs-FF6C37?logo=postman&logoColor=white\" alt=\"Postman\"></a>\n  <a href=\"https://www.mcpjam.com/blog/mcp-apps-example\"><img src=\"https://img.shields.io/badge/MCPJam-docs-8B5CF6\" alt=\"MCPJam\"></a>\n  <a href=\"https://manufact.com/inspector\"><img src=\"https://img.shields.io/badge/mcp--use-inspector-E5F3FD\" alt=\"mcp-use\"></a>\n  <a href=\"https://docs.alpic.ai/distribution/playground\"><img src=\"https://img.shields.io/badge/Alpic-playground-E90060?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAMAAABHPGVmAAAAKlBMVEUKDhz%2F%2F%2F%2BjpaogJDFBRE%2Fw8PHHyMvh4eNmaHF1d4CUlpuFho2ztLhWWWP5YkbJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVR42u2Y0ZKDIAxFBQQF8f9%2FdyW7dhAu7U7Iy87mzvShGfXU3CTGLotKpVKpVCqV6h%2FI2VuxfF3tUwcdVEccA2LNS%2BWCq2mUykG%2BCtg5iNmv76mllOApCPHrFQgNxJf8HHIQs10XdFtDKcEKPQ0x4brg6htKWGr0PIR8jq0tj4oQgJiIzD8rtATErMAWMj%2FxIYcBPjuPgoENcW3Jks%2BdLeXS32jLmise%2BZxQ8GRD%2BkkCbSlByi0Pgm3p0P6nJ1meXJ%2F8K1tKo7qUOFM4wdxEMMS4iSp9sqFJQrZ4hOZBTEa5gbaQ%2BTwI%2FcCu8TOq482xIWZkSx8MfAi0xcOEJTZkULKohXjm29epGU2SIGK%2BfT9J%2Bjre%2BRBYsiUYBSHkaEI2B0EInRx%2BkbApiB89EaMgBNdx7u5vDoJH79ne3yQElqxvEzYLKY%2Bl81PCZiFUsvlDwqYhw80uSkJg4z8Ttsss3OltwgQgMGGPlpSAwITVM0wCgius6iARCGzJcn%2BHJCSMXraCIATPsPW2SggCh364a1sIgveUew%2BTgtBGsuE9zDspyLBZ3M5aVCOCUDFlqXUbrm8j7%2FnvJ2B9G3kf%2BZBlt0iu%2Fr%2BNxHqRU6lUKpVKpVL9UX0BOrAPfcbTY8UAAAAASUVORK5CYII%3D\" alt=\"Alpic Playground\"></a>\n</p>\n\n> [!NOTE]\n> MCP Apps is an extension to the\n> [core MCP specification](https://modelcontextprotocol.io/specification). Host\n> support varies — see the\n> [clients page](https://modelcontextprotocol.io/clients) for the full list.\n\n## Why MCP Apps?\n\nMCP tools return text and structured data. That works for many cases, but not\nwhen you need an interactive UI, like a chart, form, design canvas or video player.\n\nMCP Apps provide a standardized way to deliver interactive UIs from MCP servers.\nYour UI renders inline in the conversation, in context, in any compliant host.\n\n## How It Works\n\nMCP Apps extend the Model Context Protocol by letting tools declare UI\nresources:\n\n1. **Tool definition** — Your tool declares a `ui://` resource containing its\n   HTML interface\n2. **Tool call** — The LLM calls the tool on your server\n3. **Host renders** — The host fetches the resource and displays it in a\n   sandboxed iframe\n4. **Bidirectional communication** — The host passes tool data to the UI via\n   notifications, and the UI can call other tools through the host\n\n## Getting Started\n\n```bash\nnpm install -S @modelcontextprotocol/ext-apps\n```\n\n**New here?** Start with the\n[Quickstart Guide](https://apps.extensions.modelcontextprotocol.io/api/documents/Quickstart.html)\nto build your first MCP App.\n\n## Using the SDK\n\nThe SDK serves three roles: app developers building interactive Views, host\ndevelopers embedding those Views, and MCP server authors registering tools with\nUI metadata.\n\n| Package                                     | Purpose                                                   | Docs                                                                                                                |\n| ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |\n| `@modelcontextprotocol/ext-apps`            | Build interactive Views (App class, PostMessageTransport) | [API Docs →](https://apps.extensions.modelcontextprotocol.io/api/modules/app.html)                                  |\n| `@modelcontextprotocol/ext-apps/react`      | React hooks for Views (useApp, useHostStyles, etc.)       | [API Docs →](https://apps.extensions.modelcontextprotocol.io/api/modules/_modelcontextprotocol_ext-apps_react.html) |\n| `@modelcontextprotocol/ext-apps/app-bridge` | Embed and communicate with Views in your chat client      | [API Docs →](https://apps.extensions.modelcontextprotocol.io/api/modules/app-bridge.html)                           |\n| `@modelcontextprotocol/ext-apps/server`     | Register tools and resources on your MCP server           | [API Docs →](https://apps.extensions.modelcontextprotocol.io/api/modules/server-helpers.html)                       |\n\nThere's no _supported_ host implementation in this repo (beyond the\n[examples/basic-host](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-host)\nexample).\n\nThe [MCP-UI](https://github.com/idosal/mcp-ui) client SDK offers a\nfully-featured MCP Apps framework used by a few hosts. Clients may choose to use\nit or roll their own implementation.\n\n## Examples\n\nThe\n[`examples/`](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples)\ndirectory contains demo apps showcasing real-world use cases.\n\n<!-- prettier-ignore-start -->\n| | | |\n|:---:|:---:|:---:|\n| [![Map](examples/map-server/grid-cell.png \"Interactive 3D globe viewer using CesiumJS\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/map-server) | [![Three.js](examples/threejs-server/grid-cell.png \"Interactive 3D scene renderer\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/threejs-server) | [![ShaderToy](examples/shadertoy-server/grid-cell.png \"Real-time GLSL shader renderer\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/shadertoy-server) |\n| [**Map**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/map-server) | [**Three.js**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/threejs-server) | [**ShaderToy**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/shadertoy-server) |\n| [![Sheet Music](examples/sheet-music-server/grid-cell.png \"ABC notation to sheet music\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/sheet-music-server) | [![Wiki Explorer](examples/wiki-explorer-server/grid-cell.png \"Wikipedia link graph visualization\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/wiki-explorer-server) | [![Cohort Heatmap](examples/cohort-heatmap-server/grid-cell.png \"Customer retention heatmap\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/cohort-heatmap-server) |\n| [**Sheet Music**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/sheet-music-server) | [**Wiki Explorer**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/wiki-explorer-server) | [**Cohort Heatmap**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/cohort-heatmap-server) |\n| [![Scenario Modeler](examples/scenario-modeler-server/grid-cell.png \"SaaS business projections\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/scenario-modeler-server) | [![Budget Allocator](examples/budget-allocator-server/grid-cell.png \"Interactive budget allocation\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/budget-allocator-server) | [![Customer Segmentation](examples/customer-segmentation-server/grid-cell.png \"Scatter chart with clustering\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/customer-segmentation-server) |\n| [**Scenario Modeler**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/scenario-modeler-server) | [**Budget Allocator**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/budget-allocator-server) | [**Customer Segmentation**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/customer-segmentation-server) |\n| [![System Monitor](examples/system-monitor-server/grid-cell.png \"Real-time OS metrics\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/system-monitor-server) | [![Transcript](examples/transcript-server/grid-cell.png \"Live speech transcription\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/transcript-server) | [![Video Resource](examples/video-resource-server/grid-cell.png \"Binary video via MCP resources\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/video-resource-server) |\n| [**System Monitor**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/system-monitor-server) | [**Transcript**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/transcript-server) | [**Video Resource**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/video-resource-server) |\n| [![PDF Server](examples/pdf-server/grid-cell.png \"Interactive PDF viewer with chunked loading\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/pdf-server) | [![QR Code](examples/qr-server/grid-cell.png \"QR code generator\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/qr-server) | [![Say Demo](examples/say-server/grid-cell.png \"Text-to-speech demo\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/say-server) |\n| [**PDF Server**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/pdf-server) | [**QR Code (Python)**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/qr-server) | [**Say Demo**](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/say-server) |\n\n### Starter Templates\n\n| | |\n|:---:|:---|\n| [![Basic](examples/basic-server-react/grid-cell.png \"Starter template\")](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-react) | The same app built with different frameworks — pick your favorite!<br><br>[React](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-react) · [Vue](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-vue) · [Svelte](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-svelte) · [Preact](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-preact) · [Solid](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-solid) · [Vanilla JS](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-server-vanillajs) |\n<!-- prettier-ignore-end -->\n\n### Running the Examples\n\n#### With basic-host\n\nTo run all examples locally using\n[basic-host](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-host)\n(the reference host implementation included in this repo):\n\n```bash\ngit clone https://github.com/modelcontextprotocol/ext-apps.git\ncd ext-apps\nnpm install\nnpm start\n```\n\nThen open http://localhost:8080/.\n\n#### With MCP Clients\n\nEvery Node.js example is published as `@modelcontextprotocol/server-<name>`. To\nadd one to an MCP client that supports stdio (Claude Desktop, VS Code, etc.),\nuse this pattern:\n\n```json\n{\n  \"mcpServers\": {\n    \"<name>\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-<name>\", \"--stdio\"]\n    }\n  }\n}\n```\n\nFor example, to add the map server: `@modelcontextprotocol/server-map`. The\nPython examples (`qr-server`, `say-server`) use `uv run` instead — see their\nREADMEs for details.\n\n#### Local Development\n\nTo test local modifications with an MCP client, clone the repo, install, then\npoint your client at a local build:\n\n```json\n{\n  \"mcpServers\": {\n    \"<name>\": {\n      \"command\": \"bash\",\n      \"args\": [\n        \"-c\",\n        \"cd ~/code/ext-apps/examples/<name>-server && npm run build >&2 && node dist/index.js --stdio\"\n      ]\n    }\n  }\n}\n```\n\n## Specification\n\n<div align=\"center\">\n\n| Version        | Status      | Link                                                                                                                              |\n| -------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- |\n| **2026-01-26** | Stable      | [specification/2026-01-26/apps.mdx](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx) |\n| **draft**      | Development | [specification/draft/apps.mdx](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx)           |\n\n</div>\n\n## Resources\n\n- [Quickstart Guide](https://apps.extensions.modelcontextprotocol.io/api/documents/Quickstart.html)\n- [API Documentation](https://apps.extensions.modelcontextprotocol.io/api/)\n- [Specification (2026-01-26)](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)\n  ([Draft](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx))\n- [SEP-1865 Discussion](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865)\n\n## Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for\nguidelines on how to get started, submit pull requests, and report issues.\n",
  "bytes": 18022,
  "sha": "4173d32485e3afd0222576a2f6cb1643e29c4ffb6b025089d1c6607b58151742",
  "repo_slug": "modelcontextprotocol/ext-apps",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/skl_modelcontextprotocol_ext_apps_create_mcp_eeeab823/readme"
}