ext-apps/examples/integration-server
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Anton Pidkuiko MacBook 494c73e7ca
feat: add ui/download-file method for host-mediated file downloads
Add a new ui/download-file JSON-RPC request that allows MCP App views to
request file downloads through the host. Since MCP Apps run in sandboxed
iframes where direct downloads are blocked (allow-downloads not set),
this provides a host-mediated mechanism for file exports.

Spec changes (draft):
- Add ui/download-file request to Requests (View → Host) section
- Add downloadFile capability to HostCapabilities
- Document host behavior requirements (confirmation dialog, filename
  sanitization, base64 decoding, size limits)

SDK changes:
- Add McpUiDownloadFileRequest/Result interfaces to spec.types.ts
- Add downloadFile() method to App class
- Add ondownloadfile setter to AppBridge class
- Add DOWNLOAD_FILE_METHOD constant
- Generate Zod schemas

Example:
- Add download demo to integration-server (exports JSON with server time)
- Capability check: only shows download button when host advertises
  downloadFile capability

Based on developer feedback requesting file export capabilities for
visualization tools, document editors, and data analysis apps.
2026-02-19 21:25:48 +00:00
..
src feat: add ui/download-file method for host-mediated file downloads 2026-02-19 21:25:48 +00:00
.gitignore Improve consistency and organization of examples for AI learning 2026-01-13 20:48:02 -06:00
main.ts Refactor server startup functions 2026-01-24 09:27:54 -06:00
mcp-app.html Clean up examples (#182) 2025-12-19 11:44:27 +00:00
package.json Use escaped double quotes in npm scripts for Windows compatibility 2026-02-02 09:05:40 -06:00
README.md Clean up examples (#182) 2025-12-19 11:44:27 +00:00
server.ts fix(examples): resolve DIST_DIR path for npm package execution (#277) 2026-01-15 12:23:13 +00:00
tsconfig.json Clean up examples (#182) 2025-12-19 11:44:27 +00:00
tsconfig.server.json feat: compile example servers to JavaScript for npm consumption (#259) 2026-01-14 23:46:17 +00:00
vite.config.ts Clean up examples (#182) 2025-12-19 11:44:27 +00:00

Example: Integration Test Server

An MCP App example used for E2E integration testing.

Overview

This example demonstrates all App SDK communication APIs and is used by the E2E test suite to verify host-app interactions:

Key Files

Getting Started

npm install
npm run dev

How It Works

  1. The server registers a get-time tool with metadata linking it to a UI HTML resource (ui://get-time/mcp-app.html).
  2. When the tool is invoked, the Host renders the UI from the resource.
  3. The UI uses the MCP App SDK API to communicate with the host and call server tools.