@modelcontextprotocol/ext-apps 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/dist/src/app-bridge.d.ts +44 -1
- package/dist/src/app-bridge.js +10 -10
- package/dist/src/app-with-deps.js +10 -10
- package/dist/src/app.d.ts +176 -10
- package/dist/src/app.js +11 -11
- package/dist/src/generated/schema.d.ts +78 -6
- package/dist/src/generated/schema.test.d.ts +2 -0
- package/dist/src/react/index.js +10 -10
- package/dist/src/react/react-with-deps.js +10 -10
- package/dist/src/server/index.js +10 -10
- package/dist/src/spec.types.d.ts +35 -2
- package/dist/src/types.d.ts +5 -5
- package/package.json +4 -23
package/README.md
CHANGED
|
@@ -8,9 +8,9 @@
|
|
|
8
8
|
<br /><br />
|
|
9
9
|
<a href="#why-mcp-apps">Why</a>
|
|
10
10
|
·
|
|
11
|
-
<a href="https://modelcontextprotocol.
|
|
11
|
+
<a href="https://apps.extensions.modelcontextprotocol.io/api/documents/Quickstart.html">Quickstart</a>
|
|
12
12
|
·
|
|
13
|
-
<a href="https://modelcontextprotocol.
|
|
13
|
+
<a href="https://apps.extensions.modelcontextprotocol.io/api/">API Docs</a>
|
|
14
14
|
·
|
|
15
15
|
<a href="https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx">Spec</a>
|
|
16
16
|
·
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
<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>
|
|
25
25
|
<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>
|
|
26
26
|
<a href="https://github.com/modelcontextprotocol/ext-apps"><img src="https://img.shields.io/github/stars/modelcontextprotocol/ext-apps" alt="GitHub stars"></a>
|
|
27
|
-
<a href="https://modelcontextprotocol.
|
|
27
|
+
<a href="https://apps.extensions.modelcontextprotocol.io/api/"><img src="https://img.shields.io/badge/docs-API%20Reference-blue" alt="API Documentation"></a>
|
|
28
28
|
</p>
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
@@ -122,7 +122,7 @@ npm install -S @modelcontextprotocol/ext-apps
|
|
|
122
122
|
```
|
|
123
123
|
|
|
124
124
|
**New here?** Start with the
|
|
125
|
-
[Quickstart Guide](https://modelcontextprotocol.
|
|
125
|
+
[Quickstart Guide](https://apps.extensions.modelcontextprotocol.io/api/documents/Quickstart.html)
|
|
126
126
|
to build your first MCP App.
|
|
127
127
|
|
|
128
128
|
## Using the SDK
|
|
@@ -133,10 +133,10 @@ UI metadata.
|
|
|
133
133
|
|
|
134
134
|
| Package | Purpose | Docs |
|
|
135
135
|
| ------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
136
|
-
| `@modelcontextprotocol/ext-apps` | Build interactive Views (App class, PostMessageTransport) | [API Docs →](https://modelcontextprotocol.
|
|
137
|
-
| `@modelcontextprotocol/ext-apps/react` | React hooks for Views (useApp, useHostStyles, etc.) | [API Docs →](https://modelcontextprotocol.
|
|
138
|
-
| `@modelcontextprotocol/ext-apps/app-bridge` | Embed and communicate with Views in your chat client | [API Docs →](https://modelcontextprotocol.
|
|
139
|
-
| `@modelcontextprotocol/ext-apps/server` | Register tools and resources on your MCP server | [API Docs →](https://modelcontextprotocol.
|
|
136
|
+
| `@modelcontextprotocol/ext-apps` | Build interactive Views (App class, PostMessageTransport) | [API Docs →](https://apps.extensions.modelcontextprotocol.io/api/modules/app.html) |
|
|
137
|
+
| `@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) |
|
|
138
|
+
| `@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) |
|
|
139
|
+
| `@modelcontextprotocol/ext-apps/server` | Register tools and resources on your MCP server | [API Docs →](https://apps.extensions.modelcontextprotocol.io/api/modules/server.html) |
|
|
140
140
|
|
|
141
141
|
There's no _supported_ host implementation in this repo (beyond the
|
|
142
142
|
[examples/basic-host](https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-host)
|
|
@@ -243,8 +243,8 @@ point your client at a local build:
|
|
|
243
243
|
|
|
244
244
|
## Resources
|
|
245
245
|
|
|
246
|
-
- [Quickstart Guide](https://modelcontextprotocol.
|
|
247
|
-
- [API Documentation](https://modelcontextprotocol.
|
|
246
|
+
- [Quickstart Guide](https://apps.extensions.modelcontextprotocol.io/api/documents/Quickstart.html)
|
|
247
|
+
- [API Documentation](https://apps.extensions.modelcontextprotocol.io/api/)
|
|
248
248
|
- [Specification (2026-01-26)](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx)
|
|
249
249
|
([Draft](https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx))
|
|
250
250
|
- [SEP-1865 Discussion](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/1865)
|
package/dist/src/app-bridge.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
|
2
2
|
import { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
3
3
|
import { CallToolRequest, CallToolResult, EmptyResult, Implementation, ListPromptsRequest, ListPromptsResult, ListResourcesRequest, ListResourcesResult, ListResourceTemplatesRequest, ListResourceTemplatesResult, LoggingMessageNotification, PingRequest, PromptListChangedNotification, ReadResourceRequest, ReadResourceResult, ResourceListChangedNotification, Tool, ToolListChangedNotification } from "@modelcontextprotocol/sdk/types.js";
|
|
4
4
|
import { Protocol, ProtocolOptions, RequestOptions } from "@modelcontextprotocol/sdk/shared/protocol.js";
|
|
5
|
-
import { type AppNotification, type AppRequest, type AppResult, type McpUiSandboxResourceReadyNotification, type McpUiSizeChangedNotification, type McpUiToolCancelledNotification, type McpUiToolInputNotification, type McpUiToolInputPartialNotification, type McpUiToolResultNotification, McpUiAppCapabilities, McpUiUpdateModelContextRequest, McpUiHostCapabilities, McpUiHostContext, McpUiHostContextChangedNotification, McpUiInitializedNotification, McpUiMessageRequest, McpUiMessageResult, McpUiOpenLinkRequest, McpUiOpenLinkResult, McpUiResourceTeardownRequest, McpUiSandboxProxyReadyNotification, McpUiRequestDisplayModeRequest, McpUiRequestDisplayModeResult, McpUiResourcePermissions } from "./types";
|
|
5
|
+
import { type AppNotification, type AppRequest, type AppResult, type McpUiSandboxResourceReadyNotification, type McpUiSizeChangedNotification, type McpUiToolCancelledNotification, type McpUiToolInputNotification, type McpUiToolInputPartialNotification, type McpUiToolResultNotification, McpUiAppCapabilities, McpUiUpdateModelContextRequest, McpUiHostCapabilities, McpUiHostContext, McpUiHostContextChangedNotification, McpUiInitializedNotification, McpUiMessageRequest, McpUiMessageResult, McpUiOpenLinkRequest, McpUiOpenLinkResult, McpUiDownloadFileRequest, McpUiDownloadFileResult, McpUiResourceTeardownRequest, McpUiSandboxProxyReadyNotification, McpUiRequestDisplayModeRequest, McpUiRequestDisplayModeResult, McpUiResourcePermissions } from "./types";
|
|
6
6
|
export * from "./types";
|
|
7
7
|
export { RESOURCE_URI_META_KEY, RESOURCE_MIME_TYPE } from "./app";
|
|
8
8
|
export { PostMessageTransport } from "./message-transport";
|
|
@@ -404,6 +404,49 @@ export declare class AppBridge extends Protocol<AppRequest, AppNotification, App
|
|
|
404
404
|
* @see {@link McpUiOpenLinkResult `McpUiOpenLinkResult`} for the result type
|
|
405
405
|
*/
|
|
406
406
|
set onopenlink(callback: (params: McpUiOpenLinkRequest["params"], extra: RequestHandlerExtra) => Promise<McpUiOpenLinkResult>);
|
|
407
|
+
/**
|
|
408
|
+
* Register a handler for file download requests from the View.
|
|
409
|
+
*
|
|
410
|
+
* The View sends `ui/download-file` requests when the user wants to
|
|
411
|
+
* download a file. The params contain an array of MCP resource content
|
|
412
|
+
* items — either `EmbeddedResource` (inline data) or `ResourceLink`
|
|
413
|
+
* (URI the host can fetch). The host should show a confirmation dialog
|
|
414
|
+
* and then trigger the download.
|
|
415
|
+
*
|
|
416
|
+
* @param callback - Handler that receives download params and returns a result
|
|
417
|
+
* - `params.contents` - Array of `EmbeddedResource` or `ResourceLink` items
|
|
418
|
+
* - `extra` - Request metadata (abort signal, session info)
|
|
419
|
+
* - Returns: `Promise<McpUiDownloadFileResult>` with optional `isError` flag
|
|
420
|
+
*
|
|
421
|
+
* @example
|
|
422
|
+
* ```ts
|
|
423
|
+
* bridge.ondownloadfile = async ({ contents }, extra) => {
|
|
424
|
+
* for (const item of contents) {
|
|
425
|
+
* if (item.type === "resource") {
|
|
426
|
+
* // EmbeddedResource — inline content
|
|
427
|
+
* const res = item.resource;
|
|
428
|
+
* const blob = res.blob
|
|
429
|
+
* ? new Blob([Uint8Array.from(atob(res.blob), c => c.charCodeAt(0))], { type: res.mimeType })
|
|
430
|
+
* : new Blob([res.text ?? ""], { type: res.mimeType });
|
|
431
|
+
* const url = URL.createObjectURL(blob);
|
|
432
|
+
* const link = document.createElement("a");
|
|
433
|
+
* link.href = url;
|
|
434
|
+
* link.download = res.uri.split("/").pop() ?? "download";
|
|
435
|
+
* link.click();
|
|
436
|
+
* URL.revokeObjectURL(url);
|
|
437
|
+
* } else if (item.type === "resource_link") {
|
|
438
|
+
* // ResourceLink — host fetches or opens directly
|
|
439
|
+
* window.open(item.uri, "_blank");
|
|
440
|
+
* }
|
|
441
|
+
* }
|
|
442
|
+
* return {};
|
|
443
|
+
* };
|
|
444
|
+
* ```
|
|
445
|
+
*
|
|
446
|
+
* @see {@link McpUiDownloadFileRequest `McpUiDownloadFileRequest`} for the request type
|
|
447
|
+
* @see {@link McpUiDownloadFileResult `McpUiDownloadFileResult`} for the result type
|
|
448
|
+
*/
|
|
449
|
+
set ondownloadfile(callback: (params: McpUiDownloadFileRequest["params"], extra: RequestHandlerExtra) => Promise<McpUiDownloadFileResult>);
|
|
407
450
|
/**
|
|
408
451
|
* Register a handler for display mode change requests from the view.
|
|
409
452
|
*
|