diff --git a/examples/basic-host/package.json b/examples/basic-host/package.json index c2fc987d6..01532426c 100644 --- a/examples/basic-host/package.json +++ b/examples/basic-host/package.json @@ -1,7 +1,7 @@ { "homepage": "https://github.com/modelcontextprotocol/ext-apps/tree/main/examples/basic-host", "name": "@modelcontextprotocol/ext-apps-basic-host", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "scripts": { "build": "tsc --noEmit && concurrently \"cross-env INPUT=index.html vite build\" \"cross-env INPUT=sandbox.html vite build\"", diff --git a/examples/basic-server-preact/package.json b/examples/basic-server-preact/package.json index 12e136501..9b79e206b 100644 --- a/examples/basic-server-preact/package.json +++ b/examples/basic-server-preact/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-basic-preact", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Basic MCP App Server example using Preact", "repository": { diff --git a/examples/basic-server-react/package.json b/examples/basic-server-react/package.json index a7153e170..b53c2bd5a 100644 --- a/examples/basic-server-react/package.json +++ b/examples/basic-server-react/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-basic-react", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Basic MCP App Server example using React", "repository": { diff --git a/examples/basic-server-solid/package.json b/examples/basic-server-solid/package.json index 0606408c8..efb64d467 100644 --- a/examples/basic-server-solid/package.json +++ b/examples/basic-server-solid/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-basic-solid", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Basic MCP App Server example using Solid", "repository": { diff --git a/examples/basic-server-svelte/package.json b/examples/basic-server-svelte/package.json index 3b5430910..238efe812 100644 --- a/examples/basic-server-svelte/package.json +++ b/examples/basic-server-svelte/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-basic-svelte", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Basic MCP App Server example using Svelte", "repository": { diff --git a/examples/basic-server-vanillajs/package.json b/examples/basic-server-vanillajs/package.json index dc7c333e0..f89331cb6 100644 --- a/examples/basic-server-vanillajs/package.json +++ b/examples/basic-server-vanillajs/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-basic-vanillajs", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Basic MCP App Server example using vanilla JavaScript", "repository": { diff --git a/examples/basic-server-vue/package.json b/examples/basic-server-vue/package.json index c479adf2e..8423293e8 100644 --- a/examples/basic-server-vue/package.json +++ b/examples/basic-server-vue/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-basic-vue", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Basic MCP App Server example using Vue", "repository": { diff --git a/examples/budget-allocator-server/package.json b/examples/budget-allocator-server/package.json index bd8865f16..d2b1221f7 100644 --- a/examples/budget-allocator-server/package.json +++ b/examples/budget-allocator-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-budget-allocator", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Budget allocator MCP App Server with interactive visualization", "repository": { diff --git a/examples/cohort-heatmap-server/package.json b/examples/cohort-heatmap-server/package.json index c92105a39..08c70484a 100644 --- a/examples/cohort-heatmap-server/package.json +++ b/examples/cohort-heatmap-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-cohort-heatmap", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Cohort heatmap MCP App Server for retention analysis", "repository": { diff --git a/examples/customer-segmentation-server/package.json b/examples/customer-segmentation-server/package.json index b7532508f..16d33225f 100644 --- a/examples/customer-segmentation-server/package.json +++ b/examples/customer-segmentation-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-customer-segmentation", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Customer segmentation MCP App Server with filtering", "repository": { diff --git a/examples/debug-server/package.json b/examples/debug-server/package.json index 9f2ba836c..6c3f52ab8 100644 --- a/examples/debug-server/package.json +++ b/examples/debug-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-debug", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Debug MCP App Server for testing all SDK capabilities", "repository": { diff --git a/examples/integration-server/package.json b/examples/integration-server/package.json index 807ce2d22..fb8cc991b 100644 --- a/examples/integration-server/package.json +++ b/examples/integration-server/package.json @@ -1,6 +1,6 @@ { "name": "integration-server", - "version": "1.5.0", + "version": "1.6.0", "private": true, "type": "module", "scripts": { diff --git a/examples/map-server/package.json b/examples/map-server/package.json index 52c6d8015..e6c212423 100644 --- a/examples/map-server/package.json +++ b/examples/map-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-map", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "MCP App Server example with CesiumJS 3D globe and geocoding", "repository": { diff --git a/examples/pdf-server/package.json b/examples/pdf-server/package.json index fc08d5e40..0180f7ba4 100644 --- a/examples/pdf-server/package.json +++ b/examples/pdf-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-pdf", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer", "repository": { diff --git a/examples/qr-server/package.json b/examples/qr-server/package.json index a7813e3c5..a71f39f9c 100644 --- a/examples/qr-server/package.json +++ b/examples/qr-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-qr", - "version": "1.5.0", + "version": "1.6.0", "private": true, "scripts": { "start": "uv run server.py", diff --git a/examples/quickstart/package.json b/examples/quickstart/package.json index 8451e20eb..31c4d6fdf 100644 --- a/examples/quickstart/package.json +++ b/examples/quickstart/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/quickstart", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "private": true, "description": "Quickstart MCP App Server example", diff --git a/examples/say-server/package.json b/examples/say-server/package.json index 2e90491e7..c9c268dec 100644 --- a/examples/say-server/package.json +++ b/examples/say-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-say", - "version": "1.5.0", + "version": "1.6.0", "private": true, "description": "Streaming TTS MCP App Server with karaoke-style text highlighting", "repository": { diff --git a/examples/scenario-modeler-server/package.json b/examples/scenario-modeler-server/package.json index e00afc09c..b7fbcef0e 100644 --- a/examples/scenario-modeler-server/package.json +++ b/examples/scenario-modeler-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-scenario-modeler", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Financial scenario modeling MCP App Server", "repository": { diff --git a/examples/shadertoy-server/package.json b/examples/shadertoy-server/package.json index 03bcb96c5..6e5899a28 100644 --- a/examples/shadertoy-server/package.json +++ b/examples/shadertoy-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-shadertoy", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "MCP App Server example for rendering ShaderToy-compatible GLSL shaders", "repository": { diff --git a/examples/sheet-music-server/package.json b/examples/sheet-music-server/package.json index 3706c25a4..756ed331a 100644 --- a/examples/sheet-music-server/package.json +++ b/examples/sheet-music-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-sheet-music", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "MCP App Server for rendering and playing sheet music from ABC notation", "repository": { diff --git a/examples/system-monitor-server/package.json b/examples/system-monitor-server/package.json index c80b9ad7c..5f9d33393 100644 --- a/examples/system-monitor-server/package.json +++ b/examples/system-monitor-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-system-monitor", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "System monitor MCP App Server with real-time stats", "repository": { diff --git a/examples/threejs-server/package.json b/examples/threejs-server/package.json index d4b8192f7..50ff990b6 100644 --- a/examples/threejs-server/package.json +++ b/examples/threejs-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-threejs", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Three.js 3D visualization MCP App Server", "repository": { diff --git a/examples/transcript-server/package.json b/examples/transcript-server/package.json index 341780127..0660aa449 100644 --- a/examples/transcript-server/package.json +++ b/examples/transcript-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-transcript", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "MCP App Server for live speech transcription", "repository": { diff --git a/examples/video-resource-server/package.json b/examples/video-resource-server/package.json index fb01e3136..88f3b9781 100644 --- a/examples/video-resource-server/package.json +++ b/examples/video-resource-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-video-resource", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "MCP App Server demonstrating video resources served as base64 blobs", "repository": { diff --git a/examples/wiki-explorer-server/package.json b/examples/wiki-explorer-server/package.json index 605c39ae3..a2aea7afd 100644 --- a/examples/wiki-explorer-server/package.json +++ b/examples/wiki-explorer-server/package.json @@ -1,6 +1,6 @@ { "name": "@modelcontextprotocol/server-wiki-explorer", - "version": "1.5.0", + "version": "1.6.0", "type": "module", "description": "Wikipedia link explorer MCP App Server with graph visualization", "repository": { diff --git a/package-lock.json b/package-lock.json index b63a8e550..1e689bcb9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@modelcontextprotocol/ext-apps", - "version": "1.5.0", + "version": "1.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@modelcontextprotocol/ext-apps", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "workspaces": [ "examples/*" @@ -63,7 +63,7 @@ }, "examples/basic-host": { "name": "@modelcontextprotocol/ext-apps-basic-host", - "version": "1.5.0", + "version": "1.6.0", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", "@modelcontextprotocol/sdk": "^1.29.0", @@ -106,7 +106,7 @@ }, "examples/basic-server-preact": { "name": "@modelcontextprotocol/server-basic-preact", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -150,7 +150,7 @@ }, "examples/basic-server-react": { "name": "@modelcontextprotocol/server-basic-react", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -197,7 +197,7 @@ }, "examples/basic-server-solid": { "name": "@modelcontextprotocol/server-basic-solid", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -241,7 +241,7 @@ }, "examples/basic-server-svelte": { "name": "@modelcontextprotocol/server-basic-svelte", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -285,7 +285,7 @@ }, "examples/basic-server-vanillajs": { "name": "@modelcontextprotocol/server-basic-vanillajs", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -327,7 +327,7 @@ }, "examples/basic-server-vue": { "name": "@modelcontextprotocol/server-basic-vue", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -371,7 +371,7 @@ }, "examples/budget-allocator-server": { "name": "@modelcontextprotocol/server-budget-allocator", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -414,7 +414,7 @@ }, "examples/cohort-heatmap-server": { "name": "@modelcontextprotocol/server-cohort-heatmap", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -461,7 +461,7 @@ }, "examples/customer-segmentation-server": { "name": "@modelcontextprotocol/server-customer-segmentation", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -504,7 +504,7 @@ }, "examples/debug-server": { "name": "@modelcontextprotocol/server-debug", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -545,7 +545,7 @@ "license": "MIT" }, "examples/integration-server": { - "version": "1.5.0", + "version": "1.6.0", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", "@modelcontextprotocol/sdk": "^1.29.0", @@ -590,7 +590,7 @@ }, "examples/map-server": { "name": "@modelcontextprotocol/server-map", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -632,7 +632,7 @@ }, "examples/pdf-server": { "name": "@modelcontextprotocol/server-pdf", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -676,7 +676,7 @@ }, "examples/qr-server": { "name": "@modelcontextprotocol/server-qr", - "version": "1.5.0", + "version": "1.6.0", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", "@modelcontextprotocol/sdk": "^1.29.0" @@ -684,7 +684,7 @@ }, "examples/quickstart": { "name": "@modelcontextprotocol/quickstart", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -716,7 +716,7 @@ }, "examples/say-server": { "name": "@modelcontextprotocol/server-say", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -725,7 +725,7 @@ }, "examples/scenario-modeler-server": { "name": "@modelcontextprotocol/server-scenario-modeler", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -773,7 +773,7 @@ }, "examples/shadertoy-server": { "name": "@modelcontextprotocol/server-shadertoy", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -815,7 +815,7 @@ }, "examples/sheet-music-server": { "name": "@modelcontextprotocol/server-sheet-music", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -858,7 +858,7 @@ }, "examples/system-monitor-server": { "name": "@modelcontextprotocol/server-system-monitor", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -928,7 +928,7 @@ }, "examples/threejs-server": { "name": "@modelcontextprotocol/server-threejs", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -977,7 +977,7 @@ }, "examples/transcript-server": { "name": "@modelcontextprotocol/server-transcript", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -1020,7 +1020,7 @@ }, "examples/video-resource-server": { "name": "@modelcontextprotocol/server-video-resource", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", @@ -1062,7 +1062,7 @@ }, "examples/wiki-explorer-server": { "name": "@modelcontextprotocol/server-wiki-explorer", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@modelcontextprotocol/ext-apps": "^1.0.0", diff --git a/package.json b/package.json index 3e040d16f..34b2c6a46 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "url": "https://github.com/modelcontextprotocol/ext-apps" }, "homepage": "https://github.com/modelcontextprotocol/ext-apps", - "version": "1.5.0", + "version": "1.6.0", "license": "MIT", "description": "MCP Apps SDK — Enable MCP servers to display interactive user interfaces in conversational clients.", "type": "module", diff --git a/src/app.ts b/src/app.ts index f5f97b37c..4f429e829 100644 --- a/src/app.ts +++ b/src/app.ts @@ -860,7 +860,14 @@ export class App extends ProtocolWithEvents< return await this.request( { method: "tools/call", params }, CallToolResultSchema, - options, + { + // Hosts may interpose long-running or user-interactive steps before the + // tool result arrives. Opting in here lets a host heartbeat keep the + // request alive past the default timeout; callers can still override. + onprogress: () => {}, + resetTimeoutOnProgress: true, + ...options, + }, ); } diff --git a/tests/e2e/pdf-viewer-zoom.spec.ts b/tests/e2e/pdf-viewer-zoom.spec.ts index 6258faa38..574809bd8 100644 --- a/tests/e2e/pdf-viewer-zoom.spec.ts +++ b/tests/e2e/pdf-viewer-zoom.spec.ts @@ -63,8 +63,13 @@ test.describe("PDF Viewer — fullscreen fit + pinch zoom", () => { await waitForPdfRender(page); const app = getAppFrame(page); + // Initial fit-to-width measures container.clientWidth immediately after + // showViewer() flips display:flex; under CI load the reflow can lag, so + // poll until the shrink-to-fit scale has actually applied. + await expect + .poll(() => readZoomPercent(page), { timeout: 5000 }) + .toBeLessThan(100); const inlineZoom = await readZoomPercent(page); - expect(inlineZoom).toBeLessThan(100); // Widen + give plenty of height, then enter fullscreen. Fullscreen uses // fit-to-PAGE (whole page visible), so the resulting zoom is whichever