Mirror of https://github.com/modelcontextprotocol/ext-apps — Official repo for spec & SDK of MCP Apps protocol - standard for UIs embedded AI chatbots, served by MCP servers
  • TypeScript 76.4%
  • MDX 19.3%
  • JavaScript 4.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jonathan Hefner a8107a6733 Convert UiResourceMeta documentation to TypeDoc comments
Move metadata field documentation from separate prose section into
TypeDoc comments on the UiResourceMeta interface properties. This
consolidates the documentation and eliminates duplication while making
it more maintainable and IDE-friendly.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 08:58:45 -06:00
examples/simple-server update examples 2025-11-23 03:58:51 +00:00
specification/draft Convert UiResourceMeta documentation to TypeDoc comments 2025-11-24 08:58:45 -06:00
src npm run prettier:fix 2025-11-23 03:15:06 +00:00
.gitignore add a raw (no sdk) UI 2025-11-23 03:14:19 +00:00
build.bun.ts npm run prettier:fix 2025-11-23 03:15:06 +00:00
build.esbuild.ts build w/ bun to avoid internal deps hell 2025-11-21 19:28:45 +00:00
package.json fix types order in main package.json 2025-11-23 02:38:10 +00:00
README.md Merge branch 'main' into patch-1 2025-11-24 14:36:59 +00:00
tsconfig.json Initial commit 2025-11-21 11:56:27 +00:00

@modelcontextprotocol/ext-apps

This repo contains the SDK and specification for MCP Apps Extension (SEP-1865).

MCP Apps are proposed standard inspired by MCP-UI and OpenAI's Apps SDK to allow MCP Servers to display interactive UI elements in conversational MCP clients / chatbots.

This repo provides:

  • specification/draft/apps.mdx: The Draft Extension Specification. It's still... in flux! Feedback welcome! (also see discussions in SEP-1865).

  • types.ts: Types of JSON-RPC messages used to communicate between Apps & their host

    • Note that MCP Apps also use some standard MCP messages (e.g. tools/call for the App to trigger actions on its originating Server - these calls are proxied through the Host), but these types are the additional messages defined by the extension
  • examples/simple-example: Example Server + Apps

    • server.ts: MCP server with three tools that declare UI resources of Apps to be show in the chat when called
    • ui-react.tsx: React App returned by the create-ui-react tool shows how to use the useApp hook to register MCP callbacks
    • ui-vanilla.tsx: vanilla App returned by the create-ui-vanilla
    • ui-raw.tsx: same as vanilla App but doesn't use the SDK runtime (just its types)
  • message-transport: PostMessageTransport class that uses postMessage to exchange JSON-RPC messages between windows / iframes

  • app.ts: App class used by an App to talk to its host

  • app-bridge.ts: AppBridge class used by the host to talk to a single App

  • Soon: more examples!

What this repo does NOT provide:

  • There's no host implementation here (beyond the AppBridge just used for communications).
    • We have contributed a tentative implementation of hosting / iframing / sandboxing logic to the MCP-UI repository, and expect OSS clients may use it, while other clients might roll their own hosting logic.
    • A prior iteration of an e2e prototype w/ client, server and hosting parts is available in this gist

Installation

This repo is in flux and isn't published to npm (when it is, it will use the @modelcontextprotocol/ext-apps package). Please install it from git for now:

npm install git+https://github.com/modelcontextprotocol/ext-apps.git

Development Notes

Build tools in dependencies

The build tools (esbuild, tsx, typescript) are in dependencies rather than devDependencies. This is intentional: it allows the prepare script to run when the package is installed from git, since npm doesn't install devDependencies for git dependencies.

Once the package is published to npm with pre-built dist/, these can be moved back to devDependencies.