chore: stable spec release 2026-01-26 and SDK v1.0.0 (#362)
* chore: add stable spec release 2026-01-26 - Use git mv to copy specification from draft to specification/2026-01-26/apps.mdx (preserves history) - Update status from 'Draft' to 'Stable (2026-01-26)' - Add specification version table to README - Update Resources section with links to both stable and draft specs * chore: bump version to 1.0.0 - Update main package version from 0.4.2 to 1.0.0 - Update all example package versions to 1.0.0 - Regenerate package-lock.json * prettier * chore: align protocol version with spec release 2026-01-26 - Add 'Protocol Version: 2026-01-26' to spec header - Update LATEST_PROTOCOL_VERSION from '2025-11-21' to '2026-01-26' - Update spec examples to use '2026-01-26' protocol version - Add '2025-11-21' to SUPPORTED_PROTOCOL_VERSIONS for backwards compatibility * chore: update spec references to stable 2026-01-26 - Update typedoc.config.mjs navigation link - Update docs/overview.md spec links (10 occurrences) - Update plugins/mcp-apps/skills/create-mcp-app/SKILL.md spec link - Update src/spec.types.ts @see links - Update AGENTS.md spec path - Regenerate src/generated/schema.ts with updated links * chore: simplify versioning - first stable release - Remove backwards compatibility version (2025-11-21) - this is the first stable release - Remove redundant 'Protocol Version' header - spec version IS the protocol version * chore: add history reference comment to stable spec
This commit is contained in:
parent
dc948d1af9
commit
298e884ec3
53 changed files with 1935 additions and 91 deletions
|
|
@ -10,7 +10,7 @@ Key abstractions:
|
|||
- **Host** - Chat client embedding the iframe, uses `AppBridge` class to proxy MCP requests
|
||||
- **Server** - MCP server that registers tools/resources with UI metadata
|
||||
|
||||
Specification (draft): `specification/draft/apps.mdx`
|
||||
Specification (stable): `specification/2026-01-26/apps.mdx`
|
||||
|
||||
## Commands
|
||||
|
||||
|
|
|
|||
21
README.md
21
README.md
|
|
@ -2,7 +2,14 @@
|
|||
|
||||
[](https://www.npmjs.com/package/@modelcontextprotocol/ext-apps) [](https://modelcontextprotocol.github.io/ext-apps/api/)
|
||||
|
||||
This repo contains the SDK and [specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx) for MCP Apps Extension ([SEP-1865](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865)).
|
||||
This repo contains the SDK and specification for MCP Apps Extension ([SEP-1865](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865)).
|
||||
|
||||
## Specification
|
||||
|
||||
| Version | Status | Link |
|
||||
| -------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **2026-01-26** | Stable | [specification/2026-01-26/apps.mdx](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx) |
|
||||
| draft | Development | [specification/draft/apps.mdx](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx) |
|
||||
|
||||
MCP Apps are a proposed standard inspired by [MCP-UI](https://mcpui.dev/) and [OpenAI's Apps SDK](https://developers.openai.com/apps-sdk/) to allow MCP Servers to display interactive UI elements in conversational MCP clients / chatbots.
|
||||
|
||||
|
|
@ -479,11 +486,17 @@ Then configure your MCP client to build and run the local server. Replace `~/cod
|
|||
},
|
||||
"qr": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "uv run ~/code/ext-apps/examples/qr-server/server.py --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"uv run ~/code/ext-apps/examples/qr-server/server.py --stdio"
|
||||
]
|
||||
},
|
||||
"say": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "uv run --index https://pypi.org/simple ~/code/ext-apps/examples/say-server/server.py --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"uv run --index https://pypi.org/simple ~/code/ext-apps/examples/say-server/server.py --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -497,5 +510,5 @@ This configuration rebuilds each server on launch, ensuring your local changes a
|
|||
|
||||
- [Quickstart Guide](https://modelcontextprotocol.github.io/ext-apps/api/documents/Quickstart.html)
|
||||
- [API Documentation](https://modelcontextprotocol.github.io/ext-apps/api/)
|
||||
- [Draft Specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx)
|
||||
- [Specification (2026-01-26)](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx) ([Draft](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx))
|
||||
- [SEP-1865 Discussion](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ MCP Apps is designed for graceful degradation. Hosts advertise their UI support
|
|||
|
||||
This is fundamental: UI is a progressive enhancement, not a requirement. Your server works everywhere; hosts that support UI get a richer experience.
|
||||
|
||||
See the [Client<>Server Capability Negotiation](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#clientserver-capability-negotiation) section of the specification.
|
||||
See the [Client<>Server Capability Negotiation](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#clientserver-capability-negotiation) section of the specification.
|
||||
|
||||
## Architecture
|
||||
|
||||
|
|
@ -96,7 +96,7 @@ sequenceDiagram
|
|||
4. **Interactive phase** — The user interacts with the View. The View can call tools, send messages, or update context.
|
||||
5. **Teardown** — Before unmounting, the Host notifies the View so it can save state or release resources.
|
||||
|
||||
See the [Lifecycle](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#lifecycle) section of the specification for the complete sequence diagrams.
|
||||
See the [Lifecycle](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#lifecycle) section of the specification for the complete sequence diagrams.
|
||||
|
||||
## UI Resources
|
||||
|
||||
|
|
@ -108,7 +108,7 @@ Resources are declared upfront, during tool registration. This design enables:
|
|||
- **Separation of concerns** — Templates (presentation) are separate from tool results (data)
|
||||
- **Review** — Hosts can inspect UI templates during connection setup
|
||||
|
||||
See the [UI Resource Format](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#ui-resource-format) section of the specification for the full schema.
|
||||
See the [UI Resource Format](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#ui-resource-format) section of the specification for the full schema.
|
||||
|
||||
## Tool-UI Linkage
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ When this tool is called, the Host:
|
|||
2. Renders it in a sandboxed iframe
|
||||
3. Passes the tool arguments and results to the View
|
||||
|
||||
See the [Resource Discovery](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#resource-discovery) section of the specification for details.
|
||||
See the [Resource Discovery](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#resource-discovery) section of the specification for details.
|
||||
|
||||
## Bidirectional Communication
|
||||
|
||||
|
|
@ -146,7 +146,7 @@ Views communicate with Hosts using JSON-RPC over [`postMessage`](https://develop
|
|||
|
||||
- Open external links (`ui/open-link`)
|
||||
|
||||
See the {@link app!App} class for the View-side API and the [Communication Protocol](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#communication-protocol) section of the specification.
|
||||
See the {@link app!App} class for the View-side API and the [Communication Protocol](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#communication-protocol) section of the specification.
|
||||
|
||||
## Tool Visibility
|
||||
|
||||
|
|
@ -168,7 +168,7 @@ Views use this context to adapt their presentation. For example, a chart might u
|
|||
|
||||
The Host notifies Views when context changes (e.g., the user toggles dark mode), allowing dynamic updates without reloading.
|
||||
|
||||
See the [Host Context](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#host-context-in-mcpuiinitializeresult) section of the specification for the full schema.
|
||||
See the [Host Context](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#host-context-in-mcpuiinitializeresult) section of the specification for the full schema.
|
||||
|
||||
## Theming
|
||||
|
||||
|
|
@ -183,7 +183,7 @@ Hosts provide CSS custom properties for colors, typography, and borders. Views u
|
|||
|
||||
Theme changes (light/dark toggle) are sent via notifications, allowing Views to update dynamically.
|
||||
|
||||
See the [Theming](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#theming) section of the specification for the full list of CSS variables.
|
||||
See the [Theming](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#theming) section of the specification for the full list of CSS variables.
|
||||
|
||||
## Display Modes
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ Views can be displayed in different modes:
|
|||
|
||||
Views declare which modes they support; Hosts declare which they can provide. Views can request mode changes, but the Host decides whether to honor them — the Host always has final say over its own UI.
|
||||
|
||||
See the [Display Modes](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#display-modes) section of the specification.
|
||||
See the [Display Modes](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#display-modes) section of the specification.
|
||||
|
||||
## Security
|
||||
|
||||
|
|
@ -203,9 +203,9 @@ All Views run in sandboxed iframes with no access to the Host's DOM, cookies, or
|
|||
|
||||
Servers declare which external domains their UI needs via [CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CSP) metadata. Hosts enforce these declarations — if no domains are declared, no external connections are allowed. This "restrictive by default" approach prevents data exfiltration to undeclared servers.
|
||||
|
||||
See the [Security Implications](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#security-implications) section of the specification for the threat model and mitigations.
|
||||
See the [Security Implications](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx#security-implications) section of the specification for the threat model and mitigations.
|
||||
|
||||
## Learn More
|
||||
|
||||
- [Specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx) — Full protocol specification
|
||||
- [Specification](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx) — Full protocol specification
|
||||
- [Quickstart](./quickstart.md) — Build your first MCP App
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"homepage": "https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-host",
|
||||
"name": "@modelcontextprotocol/ext-apps-basic-host",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "tsc --noEmit && concurrently \"cross-env INPUT=index.html vite build\" \"cross-env INPUT=sandbox.html vite build\"",
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"basic-preact": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/basic-server-preact && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/basic-server-preact && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-basic-preact",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Basic MCP App Server example using Preact",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -37,7 +37,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"basic-react": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/basic-server-react && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/basic-server-react && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-basic-react",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Basic MCP App Server example using React",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"basic-solid": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/basic-server-solid && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/basic-server-solid && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-basic-solid",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Basic MCP App Server example using Solid",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"basic-svelte": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/basic-server-svelte && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/basic-server-svelte && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-basic-svelte",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Basic MCP App Server example using Svelte",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"basic-vanillajs": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/basic-server-vanillajs && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/basic-server-vanillajs && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-basic-vanillajs",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Basic MCP App Server example using vanilla JavaScript",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"basic-vue": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/basic-server-vue && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/basic-server-vue && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-basic-vue",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Basic MCP App Server example using Vue",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"budget-allocator": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/budget-allocator-server && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/budget-allocator-server && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-budget-allocator",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Budget allocator MCP App Server with interactive visualization",
|
||||
"repository": {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,10 @@ To test local modifications, use this configuration (replace `~/code/ext-apps` w
|
|||
"mcpServers": {
|
||||
"cohort-heatmap": {
|
||||
"command": "bash",
|
||||
"args": ["-c", "cd ~/code/ext-apps/examples/cohort-heatmap-server && npm run build >&2 && node dist/index.js --stdio"]
|
||||
"args": [
|
||||
"-c",
|
||||
"cd ~/code/ext-apps/examples/cohort-heatmap-server && npm run build >&2 && node dist/index.js --stdio"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "@modelcontextprotocol/server-cohort-heatmap",
|
||||
"version": "0.4.2",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"description": "Cohort heatmap MCP App Server for retention analysis",
|
||||
"repository": {
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue