#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; const appUri = "ui://conformance/app"; const appModuleUrl = "https://cdn.jsdelivr.net/npm/@modelcontextprotocol/ext-apps@1.7.5/dist/src/app-with-deps.js"; const appHtml = ` pending `; const server = new McpServer({ name: "mcp-app-conformance", version: "1.0.0" }); const show = server.tool("show", "Show the conformance app", async () => ({ content: [{ type: "text", text: "initial-result" }], structuredContent: { value: "initial-result" }, })); show.update({ _meta: { ui: { resourceUri: appUri } } }); const appOnly = server.tool("app_companion", "App-only companion", async () => ({ content: [{ type: "text", text: "companion-called" }], structuredContent: { value: "companion-called" }, })); appOnly.update({ _meta: { ui: { visibility: ["app"] } } }); server.registerResource( "conformance_app", appUri, { mimeType: "text/html;profile=mcp-app" }, async (uri) => ({ contents: [ { uri: uri.href, mimeType: "text/html;profile=mcp-app", text: appHtml, _meta: { ui: { csp: { resourceDomains: ["https://cdn.jsdelivr.net"] } } }, }, ], }), ); server.registerResource( "conformance_data", "data://conformance/value", { mimeType: "text/plain" }, async (uri) => ({ contents: [{ uri: uri.href, mimeType: "text/plain", text: "resource-ok" }], }), ); await server.connect(new StdioServerTransport());