@grackle-ai/mcp 0.110.2 → 0.111.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.
Files changed (40) hide show
  1. package/README.md +25 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +2 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/mcp-server.d.ts +10 -0
  7. package/dist/mcp-server.d.ts.map +1 -1
  8. package/dist/mcp-server.js +80 -6
  9. package/dist/mcp-server.js.map +1 -1
  10. package/dist/resource-registry.d.ts +42 -0
  11. package/dist/resource-registry.d.ts.map +1 -0
  12. package/dist/resource-registry.js +30 -0
  13. package/dist/resource-registry.js.map +1 -0
  14. package/dist/resources/hello-widget.d.ts +29 -0
  15. package/dist/resources/hello-widget.d.ts.map +1 -0
  16. package/dist/resources/hello-widget.js +77 -0
  17. package/dist/resources/hello-widget.js.map +1 -0
  18. package/dist/resources/index.d.ts +9 -0
  19. package/dist/resources/index.d.ts.map +1 -0
  20. package/dist/resources/index.js +15 -0
  21. package/dist/resources/index.js.map +1 -0
  22. package/dist/tool-registry.d.ts +6 -0
  23. package/dist/tool-registry.d.ts.map +1 -1
  24. package/dist/tool-registry.js.map +1 -1
  25. package/dist/tools/index.d.ts.map +1 -1
  26. package/dist/tools/index.js +2 -0
  27. package/dist/tools/index.js.map +1 -1
  28. package/dist/tools/widget.d.ts +8 -0
  29. package/dist/tools/widget.d.ts.map +1 -0
  30. package/dist/tools/widget.js +32 -0
  31. package/dist/tools/widget.js.map +1 -0
  32. package/dist/ui-app.d.ts +36 -0
  33. package/dist/ui-app.d.ts.map +1 -0
  34. package/dist/ui-app.js +32 -0
  35. package/dist/ui-app.js.map +1 -0
  36. package/dist/widget-asset-server.d.ts +10 -0
  37. package/dist/widget-asset-server.d.ts.map +1 -0
  38. package/dist/widget-asset-server.js +41 -0
  39. package/dist/widget-asset-server.js.map +1 -0
  40. package/package.json +5 -4
package/README.md CHANGED
@@ -254,6 +254,31 @@ Query aggregated token usage and cost data.
254
254
  |------|-------------|------------|
255
255
  | `usage_get` | Get token usage and cost for a session, task, task tree, workspace, or environment. | `scope` (`session` \| `task` \| `task_tree` \| `workspace` \| `environment`), `id` (string) |
256
256
 
257
+ ### Widget Tools
258
+
259
+ [MCP Apps](#mcp-apps-ui-widgets) UI widgets. These tools return data **and** reference a `ui://` HTML resource that capable hosts render inline. They appear in `tools/list` **only** when the connected host advertises the `io.modelcontextprotocol/ui` extension.
260
+
261
+ | Tool | Description | Parameters |
262
+ |------|-------------|------------|
263
+ | `show_hello_widget` | Display the Grackle hello widget — a minimal interactive MCP Apps UI that echoes the provided message. | `message` (string, optional) |
264
+
265
+ ---
266
+
267
+ ## MCP Apps (UI widgets)
268
+
269
+ Grackle's MCP server is a conformant **MCP Apps** ([SEP-1865](https://modelcontextprotocol.io/)) provider. Hosts that support MCP Apps can fetch and render interactive HTML widgets inline.
270
+
271
+ How it works:
272
+
273
+ - **Capability negotiation** — A host advertises support during `initialize` via the `io.modelcontextprotocol/ui` extension (with `mimeTypes` including `text/html;profile=mcp-app`). The server detects this and only lists [Widget Tools](#widget-tools) to capable hosts; other clients see the data-only tools.
274
+ - **Resources** — The server declares the `resources` capability and implements `resources/list` and `resources/read`. Widget UIs are served as `ui://…` resources with MIME `text/html;profile=mcp-app`.
275
+ - **Tool ↔ resource link** — A widget tool carries `_meta.ui.resourceUri` (and the legacy `_meta["ui/resourceUri"]`) pointing at its `ui://` resource. The host reads the resource and renders it, passing the tool's input and result into the widget.
276
+ - **Widget assets** — The widget's browser scripts are served (unauthenticated, since they are non-sensitive static JS) from `/widgets/<name>/…` on the MCP server's HTTP origin.
277
+
278
+ > **Note:** the widget's scripts load from the MCP server's origin, so a host whose sandbox CSP forbids cross-origin scripts won't render them. Grackle's own chat-pane host handles this; that integration is tracked separately.
279
+
280
+ The current built-in widget is `show_hello_widget` (resource `ui://grackle/hello-widget`). Try it with the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) or Claude Desktop.
281
+
257
282
  ---
258
283
 
259
284
  ## Scoped Access
package/dist/index.d.ts CHANGED
@@ -3,6 +3,9 @@ export type { McpServerOptions } from "./mcp-server.js";
3
3
  export { createToolRegistry } from "./tools/index.js";
4
4
  export { ToolRegistry } from "./tool-registry.js";
5
5
  export type { ToolDefinition, ToolResult } from "./tool-registry.js";
6
+ export { createResourceRegistry } from "./resources/index.js";
7
+ export { ResourceRegistry } from "./resource-registry.js";
8
+ export type { ResourceDefinition, ResourceReadResult } from "./resource-registry.js";
6
9
  export type { AuthContext, OAuthTokenClaims } from "@grackle-ai/auth";
7
10
  export { createScopedToken, revokeTask, verifyScopedToken, createOAuthAccessToken, verifyOAuthAccessToken, OAUTH_ACCESS_TOKEN_TTL_MS, OAUTH_REFRESH_TOKEN_TTL_MS, authenticateMcpRequest, } from "@grackle-ai/auth";
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAChD,sBAAsB,EAAE,sBAAsB,EAC9C,yBAAyB,EAAE,0BAA0B,EACrD,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGrF,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAChD,sBAAsB,EAAE,sBAAsB,EAC9C,yBAAyB,EAAE,0BAA0B,EACrD,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
1
  export { createMcpServer } from "./mcp-server.js";
2
2
  export { createToolRegistry } from "./tools/index.js";
3
3
  export { ToolRegistry } from "./tool-registry.js";
4
+ export { createResourceRegistry } from "./resources/index.js";
5
+ export { ResourceRegistry } from "./resource-registry.js";
4
6
  export { createScopedToken, revokeTask, verifyScopedToken, createOAuthAccessToken, verifyOAuthAccessToken, OAUTH_ACCESS_TOKEN_TTL_MS, OAUTH_REFRESH_TOKEN_TTL_MS, authenticateMcpRequest, } from "@grackle-ai/auth";
5
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKlD,OAAO,EACL,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAChD,sBAAsB,EAAE,sBAAsB,EAC9C,yBAAyB,EAAE,0BAA0B,EACrD,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK1D,OAAO,EACL,iBAAiB,EAAE,UAAU,EAAE,iBAAiB,EAChD,sBAAsB,EAAE,sBAAsB,EAC9C,yBAAyB,EAAE,0BAA0B,EACrD,sBAAsB,GACvB,MAAM,kBAAkB,CAAC"}
@@ -22,4 +22,14 @@ export interface McpServerOptions {
22
22
  * and Server instance, tracked by session ID.
23
23
  */
24
24
  export declare function createMcpServer(options: McpServerOptions): http.Server;
25
+ /**
26
+ * Resolve the public origin the client reached us on, for embedding into widget
27
+ * asset URLs. Honors `X-Forwarded-Proto` (reverse proxies) and TLS for the
28
+ * scheme, and normalizes the Host header through `URL` so a hostile value cannot
29
+ * inject markup when interpolated into the widget HTML's `<script src>`.
30
+ *
31
+ * @returns A clean `scheme://host[:port]` origin, or `http://localhost` if the
32
+ * Host header is missing or unparseable.
33
+ */
34
+ export declare function resolveAssetBaseUrl(hostHeader: string | undefined, forwardedProto: string | string[] | undefined, encrypted: boolean): string;
25
35
  //# sourceMappingURL=mcp-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAmB7B,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAiBzE,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oFAAoF;IACpF,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC;CACjC;AAqND;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAgFtE"}
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,WAAW,CAAC;AAwB7B,OAAO,KAAK,EAAE,cAAc,EAAkB,MAAM,oBAAoB,CAAC;AAoBzE,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oFAAoF;IACpF,UAAU,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC;CACjC;AAgQD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAuFtE;AA+BD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EAC7C,SAAS,EAAE,OAAO,GACjB,MAAM,CASR"}
@@ -8,13 +8,16 @@ import { createGrpcTransport } from "@connectrpc/connect-node";
8
8
  import { grackle, ROOT_TASK_ID } from "@grackle-ai/common";
9
9
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
10
10
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
11
- import { ListToolsRequestSchema, CallToolRequestSchema, isInitializeRequest, } from "@modelcontextprotocol/sdk/types.js";
11
+ import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, isInitializeRequest, McpError, ErrorCode, } from "@modelcontextprotocol/sdk/types.js";
12
12
  import pino from "pino";
13
13
  import { z } from "zod";
14
14
  import { authenticateMcpRequest, pruneRevocations } from "@grackle-ai/auth";
15
15
  import { grpcErrorToToolResult } from "./error-handler.js";
16
16
  import { createToolRegistry } from "./tools/index.js";
17
17
  import { resolveToolForAuth, listToolsForAuth } from "./tool-scoping.js";
18
+ import { createResourceRegistry } from "./resources/index.js";
19
+ import { hostSupportsUiApps, uiToolMeta } from "./ui-app.js";
20
+ import { tryServeWidgetAsset } from "./widget-asset-server.js";
18
21
  /** Read the package version from package.json at module load time. */
19
22
  const PACKAGE_VERSION = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "package.json"), "utf8")).version;
20
23
  const logger = pino({
@@ -68,23 +71,63 @@ async function resolvePersonaTools(grpcClients, authContext) {
68
71
  return undefined;
69
72
  }
70
73
  /** Create a low-level MCP Server instance with tool handlers wired to the ConnectRPC backend. */
71
- async function createMcpServerInstance(grpcClients, authContext, toolGroups) {
74
+ async function createMcpServerInstance(grpcClients, authContext, assetBaseUrl, toolGroups) {
72
75
  const registry = createToolRegistry(toolGroups);
76
+ const resourceRegistry = createResourceRegistry(assetBaseUrl);
73
77
  // Resolve persona-scoped tool set once at session creation (cached for session lifetime)
74
78
  const personaAllowedTools = await resolvePersonaTools(grpcClients, authContext);
75
79
  const visibleTools = listToolsForAuth(registry, authContext, personaAllowedTools);
76
80
  logger.info({ authType: authContext.type, toolCount: visibleTools.length }, "MCP session exposing %d tools", visibleTools.length);
77
- const server = new Server({ name: "grackle-mcp", version: PACKAGE_VERSION }, { capabilities: { tools: {} } });
78
- // Pre-compute the visible tool list and names (immutable for this session)
81
+ const server = new Server({ name: "grackle-mcp", version: PACKAGE_VERSION }, { capabilities: { tools: {}, resources: {} } });
82
+ // Pre-compute the visible tool list and names (immutable for this session).
83
+ // UI (MCP Apps) tools carry _meta.ui.resourceUri so a host knows which ui://
84
+ // resource to render.
79
85
  const visibleToolDefs = visibleTools.map((t) => ({
80
86
  name: t.name,
81
87
  description: t.description,
82
88
  inputSchema: z.toJSONSchema(t.inputSchema),
83
89
  annotations: t.annotations,
90
+ ...(t.uiResourceUri ? { _meta: uiToolMeta(t.uiResourceUri) } : {}),
84
91
  }));
85
92
  const visibleToolNames = visibleTools.map((t) => t.name).join(", ");
93
+ /** Names of UI tools — only listed to hosts that can render MCP Apps widgets. */
94
+ const uiToolNames = new Set(visibleTools.filter((t) => t.uiResourceUri).map((t) => t.name));
86
95
  server.setRequestHandler(ListToolsRequestSchema, async () => {
87
- return { tools: visibleToolDefs };
96
+ // Gate widget tools on the host advertising the io.modelcontextprotocol/ui
97
+ // extension (known only after initialize). Non-UI hosts see the rest.
98
+ const uiOn = hostSupportsUiApps(server.getClientCapabilities());
99
+ const tools = uiOn ? visibleToolDefs : visibleToolDefs.filter((t) => !uiToolNames.has(t.name));
100
+ return { tools };
101
+ });
102
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
103
+ return {
104
+ resources: resourceRegistry.list().map((r) => ({
105
+ uri: r.uri,
106
+ name: r.name,
107
+ ...(r.description ? { description: r.description } : {}),
108
+ mimeType: r.mimeType,
109
+ ...(r.meta ? { _meta: r.meta } : {}),
110
+ })),
111
+ };
112
+ });
113
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
114
+ // Resources are session-global and unscoped in #1237 (a widget shell is not
115
+ // sensitive). Per-session / auth-scoped resources are #1239.
116
+ const resource = resourceRegistry.get(request.params.uri);
117
+ if (!resource) {
118
+ throw new McpError(ErrorCode.InvalidParams, `Unknown resource: ${request.params.uri}`);
119
+ }
120
+ const { text } = resource.read();
121
+ return {
122
+ contents: [
123
+ {
124
+ uri: resource.uri,
125
+ mimeType: resource.mimeType,
126
+ text,
127
+ ...(resource.meta ? { _meta: resource.meta } : {}),
128
+ },
129
+ ],
130
+ };
88
131
  });
89
132
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
90
133
  const { name, arguments: args } = request.params;
@@ -238,6 +281,12 @@ export function createMcpServer(options) {
238
281
  }));
239
282
  return;
240
283
  }
284
+ // Serve the built-in widget's browser assets (static JS) before the /mcp
285
+ // routing + auth check — an MCP Apps host sandbox fetches these without the
286
+ // API key. They are non-sensitive (the widget shell + the ext-apps App).
287
+ if (req.method?.toUpperCase() === "GET" && tryServeWidgetAsset(url.pathname, res)) {
288
+ return;
289
+ }
241
290
  // Only serve the /mcp endpoint
242
291
  if (url.pathname !== "/mcp") {
243
292
  res.writeHead(404, { "Content-Type": "application/json" });
@@ -301,6 +350,26 @@ async function parseBody(req) {
301
350
  req.on("error", reject);
302
351
  });
303
352
  }
353
+ /**
354
+ * Resolve the public origin the client reached us on, for embedding into widget
355
+ * asset URLs. Honors `X-Forwarded-Proto` (reverse proxies) and TLS for the
356
+ * scheme, and normalizes the Host header through `URL` so a hostile value cannot
357
+ * inject markup when interpolated into the widget HTML's `<script src>`.
358
+ *
359
+ * @returns A clean `scheme://host[:port]` origin, or `http://localhost` if the
360
+ * Host header is missing or unparseable.
361
+ */
362
+ export function resolveAssetBaseUrl(hostHeader, forwardedProto, encrypted) {
363
+ const rawProto = Array.isArray(forwardedProto) ? forwardedProto[0] : forwardedProto;
364
+ const proto = rawProto?.split(",")[0]?.trim();
365
+ const scheme = proto && proto.length > 0 ? proto : encrypted ? "https" : "http";
366
+ try {
367
+ return new URL(`${scheme}://${hostHeader ?? "localhost"}`).origin;
368
+ }
369
+ catch {
370
+ return "http://localhost";
371
+ }
372
+ }
304
373
  /** Handle POST requests to /mcp — initialization or tool calls. */
305
374
  async function handlePost(req, res, grpcClients, transports, authContexts, authContext, toolGroups) {
306
375
  try {
@@ -337,7 +406,12 @@ async function handlePost(req, res, grpcClients, transports, authContexts, authC
337
406
  authContexts.delete(sid);
338
407
  }
339
408
  };
340
- const mcpServer = await createMcpServerInstance(grpcClients, authContext, toolGroups);
409
+ // Asset base URL is the origin the client actually reached us on, so the
410
+ // widget HTML references assets correctly. Normalized via URL parsing to
411
+ // avoid attribute injection from a hostile Host header.
412
+ const encrypted = "encrypted" in req.socket && req.socket.encrypted === true;
413
+ const assetBaseUrl = resolveAssetBaseUrl(req.headers.host, req.headers["x-forwarded-proto"], encrypted);
414
+ const mcpServer = await createMcpServerInstance(grpcClients, authContext, assetBaseUrl, toolGroups);
341
415
  await mcpServer.connect(transport);
342
416
  await transport.handleRequest(req, res, body);
343
417
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /** Content returned when an MCP resource is read. */
2
+ export interface ResourceReadResult {
3
+ /** UTF-8 text body of the resource. */
4
+ text: string;
5
+ }
6
+ /**
7
+ * Declarative definition of an MCP resource served by the Grackle MCP server.
8
+ *
9
+ * `read` is a function (not a static string) so a later phase (#1239) can serve
10
+ * dynamic / per-session / agent-authored content without changing this shape.
11
+ */
12
+ export interface ResourceDefinition {
13
+ /** Resource URI, e.g. `ui://grackle/hello-widget`. */
14
+ uri: string;
15
+ /** Human-readable name. */
16
+ name: string;
17
+ /** Optional description shown in `resources/list`. */
18
+ description?: string;
19
+ /** MIME type (e.g. `text/html;profile=mcp-app` for MCP Apps widgets). */
20
+ mimeType: string;
21
+ /** Optional `_meta` (e.g. MCP Apps `McpUiResourceMeta`); omitted in #1237. */
22
+ meta?: Record<string, unknown>;
23
+ /** Produce the resource body. */
24
+ read: () => ResourceReadResult;
25
+ }
26
+ /**
27
+ * Registry of MCP resource definitions with lookup support — mirrors
28
+ * {@link ToolRegistry}. Static (register-at-startup) in #1237; the mutable /
29
+ * per-session registry for agent-authored widgets is #1239.
30
+ */
31
+ export declare class ResourceRegistry {
32
+ private readonly resources;
33
+ /** Register a resource. Throws if a resource with the same URI already exists. */
34
+ register(resource: ResourceDefinition): void;
35
+ /** Register an array of resource definitions. */
36
+ registerAll(resources: ResourceDefinition[]): void;
37
+ /** Return all registered resources. */
38
+ list(): ResourceDefinition[];
39
+ /** Look up a resource by URI. Returns undefined if not found. */
40
+ get(uri: string): ResourceDefinition | undefined;
41
+ }
42
+ //# sourceMappingURL=resource-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../src/resource-registry.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,iCAAiC;IACjC,IAAI,EAAE,MAAM,kBAAkB,CAAC;CAChC;AAED;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IAExE,kFAAkF;IAC3E,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAOnD,iDAAiD;IAC1C,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAMzD,uCAAuC;IAChC,IAAI,IAAI,kBAAkB,EAAE;IAInC,iEAAiE;IAC1D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;CAGxD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Registry of MCP resource definitions with lookup support — mirrors
3
+ * {@link ToolRegistry}. Static (register-at-startup) in #1237; the mutable /
4
+ * per-session registry for agent-authored widgets is #1239.
5
+ */
6
+ export class ResourceRegistry {
7
+ resources = new Map();
8
+ /** Register a resource. Throws if a resource with the same URI already exists. */
9
+ register(resource) {
10
+ if (this.resources.has(resource.uri)) {
11
+ throw new Error(`Duplicate resource uri: ${resource.uri}`);
12
+ }
13
+ this.resources.set(resource.uri, resource);
14
+ }
15
+ /** Register an array of resource definitions. */
16
+ registerAll(resources) {
17
+ for (const resource of resources) {
18
+ this.register(resource);
19
+ }
20
+ }
21
+ /** Return all registered resources. */
22
+ list() {
23
+ return Array.from(this.resources.values());
24
+ }
25
+ /** Look up a resource by URI. Returns undefined if not found. */
26
+ get(uri) {
27
+ return this.resources.get(uri);
28
+ }
29
+ }
30
+ //# sourceMappingURL=resource-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-registry.js","sourceRoot":"","sources":["../src/resource-registry.ts"],"names":[],"mappings":"AA2BA;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACV,SAAS,GAAoC,IAAI,GAAG,EAAE,CAAC;IAExE,kFAAkF;IAC3E,QAAQ,CAAC,QAA4B;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,iDAAiD;IAC1C,WAAW,CAAC,SAA+B;QAChD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,uCAAuC;IAChC,IAAI;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,iEAAiE;IAC1D,GAAG,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import type { ResourceDefinition } from "../resource-registry.js";
2
+ /** URI of the built-in hello widget resource. Single source of truth. */
3
+ export declare const HELLO_WIDGET_URI: string;
4
+ /**
5
+ * Path prefix under which the MCP server serves this widget's browser assets
6
+ * (`/index.js` + `/app-with-deps.js`). Used both by the server's static router
7
+ * and by the widget HTML's `<script src>`.
8
+ */
9
+ export declare const WIDGET_ASSET_BASE_PATH: string;
10
+ /**
11
+ * App-side ES module for the hello widget, served at
12
+ * `<base>${WIDGET_ASSET_BASE_PATH}/index.js`. Uses the REAL ext-apps `App`
13
+ * (imported from the sibling `app-with-deps.js` the server also serves) for a
14
+ * spec-conformant `ui/initialize` -> `initialized` -> tool-input/result
15
+ * handshake. Ported from the T1 Storybook sample widget (#1236). Kept as a
16
+ * string so it ships in `dist` without a heft asset-copy step.
17
+ */
18
+ export declare const HELLO_WIDGET_CLIENT_JS: string;
19
+ /**
20
+ * Build the built-in hello widget resource. The widget's browser assets are
21
+ * loaded from `assetBaseUrl` (the MCP server's own public origin), so the host
22
+ * sandbox must be allowed to load cross-origin scripts from it — that host-CSP /
23
+ * cross-origin concern is out of scope for #1237 (handled for Grackle's own host
24
+ * in #1238).
25
+ *
26
+ * @param assetBaseUrl - Public origin of the MCP server, e.g. `http://127.0.0.1:7435`.
27
+ */
28
+ export declare function createHelloWidgetResource(assetBaseUrl: string): ResourceDefinition;
29
+ //# sourceMappingURL=hello-widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello-widget.d.ts","sourceRoot":"","sources":["../../src/resources/hello-widget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,EAAE,MAAoC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAyB,CAAC;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAqBzB,CAAC;AAsBb;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAQlF"}
@@ -0,0 +1,77 @@
1
+ import { RESOURCE_MIME_TYPE } from "../ui-app.js";
2
+ /** URI of the built-in hello widget resource. Single source of truth. */
3
+ export const HELLO_WIDGET_URI = "ui://grackle/hello-widget";
4
+ /**
5
+ * Path prefix under which the MCP server serves this widget's browser assets
6
+ * (`/index.js` + `/app-with-deps.js`). Used both by the server's static router
7
+ * and by the widget HTML's `<script src>`.
8
+ */
9
+ export const WIDGET_ASSET_BASE_PATH = "/widgets/hello";
10
+ /**
11
+ * App-side ES module for the hello widget, served at
12
+ * `<base>${WIDGET_ASSET_BASE_PATH}/index.js`. Uses the REAL ext-apps `App`
13
+ * (imported from the sibling `app-with-deps.js` the server also serves) for a
14
+ * spec-conformant `ui/initialize` -> `initialized` -> tool-input/result
15
+ * handshake. Ported from the T1 Storybook sample widget (#1236). Kept as a
16
+ * string so it ships in `dist` without a heft asset-copy step.
17
+ */
18
+ export const HELLO_WIDGET_CLIENT_JS = [
19
+ 'import { App, PostMessageTransport, applyHostStyleVariables, applyHostFonts, applyDocumentTheme } from "./app-with-deps.js";',
20
+ 'const inputEl = document.getElementById("input");',
21
+ 'const resultEl = document.getElementById("result");',
22
+ "function renderResult(content) {",
23
+ " const blocks = content || [];",
24
+ ' resultEl.textContent = blocks.map(function (b) { return b.type === "text" ? b.text : "<" + b.type + ">"; }).join(" ") || "(empty)";',
25
+ "}",
26
+ 'const app = new App({ name: "GrackleHelloWidget", version: "1.0.0" }, {});',
27
+ "app.ontoolinput = function (params) { inputEl.textContent = JSON.stringify((params && params.arguments) || {}); };",
28
+ "app.ontoolresult = function (params) { renderResult(params && params.content); };",
29
+ "function applyHostStyles() {",
30
+ " const ctx = app.getHostContext();",
31
+ " if (ctx && ctx.styles && ctx.styles.variables) { applyHostStyleVariables(ctx.styles.variables); }",
32
+ " if (ctx && ctx.styles && ctx.styles.css && ctx.styles.css.fonts) { applyHostFonts(ctx.styles.css.fonts); }",
33
+ " if (ctx && ctx.theme) { applyDocumentTheme(ctx.theme); }",
34
+ "}",
35
+ "app.onhostcontextchanged = function () { applyHostStyles(); };",
36
+ "await app.connect(new PostMessageTransport(window.parent, window.parent));",
37
+ "applyHostStyles();",
38
+ "",
39
+ ].join("\n");
40
+ /** Build the widget HTML document, pointing its script at the asset base URL. */
41
+ function helloWidgetHtml(assetBaseUrl) {
42
+ const src = `${assetBaseUrl}${WIDGET_ASSET_BASE_PATH}/index.js`;
43
+ return [
44
+ '<!doctype html><html><head><meta charset="utf-8" /><meta name="color-scheme" content="light dark" /><style>',
45
+ "body{margin:0;font-family:var(--font-sans,sans-serif);color:var(--color-text-primary,#111);",
46
+ "background:var(--color-background-secondary,#f5f5f5);padding:16px}",
47
+ ".card{background:var(--color-background-primary,#fff);border:1px solid var(--color-border-primary,#ddd);",
48
+ "border-radius:var(--border-radius-md,6px);padding:16px}",
49
+ "code{font-family:var(--font-mono,monospace)}",
50
+ '</style></head><body><div class="card">',
51
+ "<h2>Grackle</h2>",
52
+ '<div>Input: <code id="input">(none)</code></div>',
53
+ '<div>Result: <code id="result">(pending)</code></div>',
54
+ "</div>",
55
+ `<script type="module" src="${src}"></script>`,
56
+ "</body></html>",
57
+ ].join("");
58
+ }
59
+ /**
60
+ * Build the built-in hello widget resource. The widget's browser assets are
61
+ * loaded from `assetBaseUrl` (the MCP server's own public origin), so the host
62
+ * sandbox must be allowed to load cross-origin scripts from it — that host-CSP /
63
+ * cross-origin concern is out of scope for #1237 (handled for Grackle's own host
64
+ * in #1238).
65
+ *
66
+ * @param assetBaseUrl - Public origin of the MCP server, e.g. `http://127.0.0.1:7435`.
67
+ */
68
+ export function createHelloWidgetResource(assetBaseUrl) {
69
+ return {
70
+ uri: HELLO_WIDGET_URI,
71
+ name: "Grackle Hello Widget",
72
+ description: "A minimal MCP Apps widget that displays the tool input and result.",
73
+ mimeType: RESOURCE_MIME_TYPE,
74
+ read: () => ({ text: helloWidgetHtml(assetBaseUrl) }),
75
+ };
76
+ }
77
+ //# sourceMappingURL=hello-widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hello-widget.js","sourceRoot":"","sources":["../../src/resources/hello-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAW,2BAA2B,CAAC;AAEpE;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW,gBAAgB,CAAC;AAE/D;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,8HAA8H;IAC9H,mDAAmD;IACnD,qDAAqD;IACrD,kCAAkC;IAClC,iCAAiC;IACjC,uIAAuI;IACvI,GAAG;IACH,4EAA4E;IAC5E,oHAAoH;IACpH,mFAAmF;IACnF,8BAA8B;IAC9B,qCAAqC;IACrC,qGAAqG;IACrG,8GAA8G;IAC9G,4DAA4D;IAC5D,GAAG;IACH,gEAAgE;IAChE,4EAA4E;IAC5E,oBAAoB;IACpB,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,iFAAiF;AACjF,SAAS,eAAe,CAAC,YAAoB;IAC3C,MAAM,GAAG,GAAW,GAAG,YAAY,GAAG,sBAAsB,WAAW,CAAC;IACxE,OAAO;QACL,6GAA6G;QAC7G,6FAA6F;QAC7F,oEAAoE;QACpE,0GAA0G;QAC1G,yDAAyD;QACzD,8CAA8C;QAC9C,yCAAyC;QACzC,kBAAkB;QAClB,kDAAkD;QAClD,uDAAuD;QACvD,QAAQ;QACR,8BAA8B,GAAG,aAAa;QAC9C,gBAAgB;KACjB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,YAAoB;IAC5D,OAAO;QACL,GAAG,EAAE,gBAAgB;QACrB,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,oEAAoE;QACjF,QAAQ,EAAE,kBAAkB;QAC5B,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { ResourceRegistry } from "../resource-registry.js";
2
+ /**
3
+ * Create a ResourceRegistry pre-populated with the built-in MCP Apps resources.
4
+ *
5
+ * @param assetBaseUrl - Public origin of the MCP server (e.g. `http://127.0.0.1:7435`),
6
+ * embedded into widget HTML so hosts can load the widget's browser assets.
7
+ */
8
+ export declare function createResourceRegistry(assetBaseUrl: string): ResourceRegistry;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,yBAAyB,CAAC;AAGpF;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,CAK7E"}
@@ -0,0 +1,15 @@
1
+ import { ResourceRegistry } from "../resource-registry.js";
2
+ import { createHelloWidgetResource } from "./hello-widget.js";
3
+ /**
4
+ * Create a ResourceRegistry pre-populated with the built-in MCP Apps resources.
5
+ *
6
+ * @param assetBaseUrl - Public origin of the MCP server (e.g. `http://127.0.0.1:7435`),
7
+ * embedded into widget HTML so hosts can load the widget's browser assets.
8
+ */
9
+ export function createResourceRegistry(assetBaseUrl) {
10
+ const registry = new ResourceRegistry();
11
+ const builtinResources = [createHelloWidgetResource(assetBaseUrl)];
12
+ registry.registerAll(builtinResources);
13
+ return registry;
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAA2B,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAAoB;IACzD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAyB,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC;IACzF,QAAQ,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -47,6 +47,12 @@ export interface ToolDefinition {
47
47
  mutating: boolean;
48
48
  /** Optional behavioral hints for the client. */
49
49
  annotations?: ToolAnnotations;
50
+ /**
51
+ * Optional MCP Apps UI resource (`ui://…`) this tool renders. When set, the
52
+ * tool carries `_meta.ui.resourceUri` in `tools/list` and is only listed to
53
+ * hosts that advertise the `io.modelcontextprotocol/ui` extension.
54
+ */
55
+ uiResourceUri?: string;
50
56
  /** Execute the tool, forwarding to the ConnectRPC backend. */
51
57
  handler: (args: Record<string, unknown>, clients: GrackleClients, authContext?: AuthContext) => Promise<ToolResult>;
52
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3D,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrD,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpD;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,8DAA8D;IAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACrH;AAED,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC;AAE9D,0EAA0E;AAC1E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAEhE,sFAAsF;IAC/E,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAO3C,6CAA6C;IACtC,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMjD,uEAAuE;IAChE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,cAAc,EAAE;IAQxD,8DAA8D;IACvD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;CAGrD"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC3D,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACrD,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC,OAAO,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACpD;AAED,oDAAoD;AACpD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,iEAAiE;AACjE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;IACpB,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACrH;AAED,iFAAiF;AACjF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC;AAE9D,0EAA0E;AAC1E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAEhE,sFAAsF;IAC/E,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAO3C,6CAA6C;IACtC,WAAW,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAMjD,uEAAuE;IAChE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,cAAc,EAAE;IAQxD,8DAA8D;IACvD,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;CAGrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AA6DA,0EAA0E;AAC1E,MAAM,OAAO,YAAY;IACN,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAEhE,sFAAsF;IAC/E,QAAQ,CAAC,IAAoB;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,6CAA6C;IACtC,WAAW,CAAC,KAAuB;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,uEAAuE;IAChE,IAAI,CAAC,SAAyB;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8DAA8D;IACvD,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAmEA,0EAA0E;AAC1E,MAAM,OAAO,YAAY;IACN,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAEhE,sFAAsF;IAC/E,QAAQ,CAAC,IAAoB;QAClC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,6CAA6C;IACtC,WAAW,CAAC,KAAuB;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,uEAAuE;IAChE,IAAI,CAAC,SAAyB;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8DAA8D;IACvD,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAwCxE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,cAAc,EAAE,EAAE,GAAG,YAAY,CAW1F"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA0CxE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,cAAc,EAAE,EAAE,GAAG,YAAY,CAW1F"}
@@ -16,6 +16,7 @@ import { scheduleTools } from "./schedule.js";
16
16
  import { versionTools } from "./version.js";
17
17
  import { escalationTools } from "./escalation.js";
18
18
  import { pluginTools } from "./plugin.js";
19
+ import { widgetTools } from "./widget.js";
19
20
  /** Built-in tool groups shipped with the MCP package. */
20
21
  const builtinToolGroups = [
21
22
  envTools,
@@ -35,6 +36,7 @@ const builtinToolGroups = [
35
36
  versionTools,
36
37
  escalationTools,
37
38
  pluginTools,
39
+ widgetTools,
38
40
  ];
39
41
  /**
40
42
  * Create a ToolRegistry pre-populated with all built-in MCP tools.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,yDAAyD;AACzD,MAAM,iBAAiB,GAAuB;IAC5C,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,eAAe;IACf,UAAU;IACV,WAAW;IACX,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,eAAe;IACf,WAAW;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,oBAAyC;IAC1E,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,oBAAoB,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;YACzC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,yDAAyD;AACzD,MAAM,iBAAiB,GAAuB;IAC5C,QAAQ;IACR,YAAY;IACZ,cAAc;IACd,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,SAAS;IACT,eAAe;IACf,UAAU;IACV,WAAW;IACX,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,eAAe;IACf,WAAW;IACX,WAAW;CACZ,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,oBAAyC;IAC1E,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,oBAAoB,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;YACzC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ToolDefinition } from "../tool-registry.js";
2
+ /**
3
+ * MCP Apps widget tools. The `uiResourceUri` ties each tool to a `ui://` HTML
4
+ * resource the host renders; these tools are only listed to hosts that advertise
5
+ * the `io.modelcontextprotocol/ui` extension (see `mcp-server.ts` gating).
6
+ */
7
+ export declare const widgetTools: ToolDefinition[];
8
+ //# sourceMappingURL=widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAI1D;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,cAAc,EAuBvC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { z } from "zod";
2
+ import { jsonResult } from "../result-helpers.js";
3
+ import { HELLO_WIDGET_URI } from "../resources/hello-widget.js";
4
+ /**
5
+ * MCP Apps widget tools. The `uiResourceUri` ties each tool to a `ui://` HTML
6
+ * resource the host renders; these tools are only listed to hosts that advertise
7
+ * the `io.modelcontextprotocol/ui` extension (see `mcp-server.ts` gating).
8
+ */
9
+ export const widgetTools = [
10
+ {
11
+ name: "show_hello_widget",
12
+ group: "widget",
13
+ description: "Display the Grackle hello widget — a minimal interactive MCP Apps UI that echoes the provided message. Renders inline in hosts that support MCP Apps.",
14
+ inputSchema: z.object({
15
+ message: z.string().optional().describe("Message to echo back in the widget."),
16
+ }),
17
+ rpcMethod: "showHelloWidget",
18
+ mutating: false,
19
+ annotations: {
20
+ readOnlyHint: true,
21
+ destructiveHint: false,
22
+ idempotentHint: true,
23
+ openWorldHint: false,
24
+ },
25
+ uiResourceUri: HELLO_WIDGET_URI,
26
+ async handler(args) {
27
+ const message = typeof args.message === "string" ? args.message : "Hello from Grackle";
28
+ return jsonResult({ message, renderedAt: new Date().toISOString() });
29
+ },
30
+ },
31
+ ];
32
+ //# sourceMappingURL=widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/tools/widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C;QACE,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,QAAQ;QACf,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SAC/E,CAAC;QACF,SAAS,EAAE,iBAAiB;QAC5B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;QACD,aAAa,EAAE,gBAAgB;QAC/B,KAAK,CAAC,OAAO,CAAC,IAA6B;YACzC,MAAM,OAAO,GAAW,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC;YAC/F,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { EXTENSION_ID, RESOURCE_MIME_TYPE } from "@modelcontextprotocol/ext-apps/server";
2
+ import type { ClientCapabilities } from "@modelcontextprotocol/sdk/types.js";
3
+ /**
4
+ * MCP Apps "app-side" helpers for Grackle's low-level MCP {@link Server}.
5
+ *
6
+ * The ext-apps `registerAppTool`/`registerAppResource` helpers require the
7
+ * high-level `McpServer`, which Grackle does not use, so we replicate their tiny
8
+ * `_meta` normalization here while still importing the spec constants/helper from
9
+ * `@modelcontextprotocol/ext-apps/server` (single source of truth — no copied
10
+ * string literals). See SEP-1865 (MCP Apps).
11
+ */
12
+ /** Visibility of a UI tool, per the MCP Apps spec (`McpUiToolVisibility`). */
13
+ export type UiToolVisibility = "model" | "app";
14
+ /** Re-exported so callers tag UI resources with the MCP Apps MIME type. */
15
+ export { RESOURCE_MIME_TYPE, EXTENSION_ID };
16
+ /**
17
+ * Build a tool's `_meta` for MCP Apps, populating BOTH the modern nested key
18
+ * (`_meta.ui.resourceUri`) and the legacy flat key (`_meta["ui/resourceUri"]`)
19
+ * for host backwards-compatibility — mirroring ext-apps `registerAppTool`.
20
+ *
21
+ * @param resourceUri - The `ui://` resource the host should render for this tool.
22
+ * @param visibility - Optional audience(s) the widget targets (`model`/`app`).
23
+ * @returns A `_meta` object to attach to the tool's `tools/list` entry.
24
+ */
25
+ export declare function uiToolMeta(resourceUri: string, visibility?: UiToolVisibility[]): Record<string, unknown>;
26
+ /**
27
+ * Whether the connected host can render MCP Apps widgets — i.e. it advertised the
28
+ * `io.modelcontextprotocol/ui` extension during `initialize` with the MCP App
29
+ * HTML MIME in its supported `mimeTypes`. Use the SDK's
30
+ * `Server.getClientCapabilities()` (available after the handshake) as the input.
31
+ *
32
+ * @param capabilities - The negotiated client capabilities, or `undefined`.
33
+ * @returns `true` only when the host can render `text/html;profile=mcp-app`.
34
+ */
35
+ export declare function hostSupportsUiApps(capabilities: ClientCapabilities | undefined): boolean;
36
+ //# sourceMappingURL=ui-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-app.d.ts","sourceRoot":"","sources":["../src/ui-app.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAGnB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E;;;;;;;;GAQG;AAEH,8EAA8E;AAC9E,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,KAAK,CAAC;AAE/C,2EAA2E;AAC3E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CACxB,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,gBAAgB,EAAE,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKzB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,kBAAkB,GAAG,SAAS,GAAG,OAAO,CAGxF"}
package/dist/ui-app.js ADDED
@@ -0,0 +1,32 @@
1
+ import { EXTENSION_ID, RESOURCE_MIME_TYPE, RESOURCE_URI_META_KEY, getUiCapability, } from "@modelcontextprotocol/ext-apps/server";
2
+ /** Re-exported so callers tag UI resources with the MCP Apps MIME type. */
3
+ export { RESOURCE_MIME_TYPE, EXTENSION_ID };
4
+ /**
5
+ * Build a tool's `_meta` for MCP Apps, populating BOTH the modern nested key
6
+ * (`_meta.ui.resourceUri`) and the legacy flat key (`_meta["ui/resourceUri"]`)
7
+ * for host backwards-compatibility — mirroring ext-apps `registerAppTool`.
8
+ *
9
+ * @param resourceUri - The `ui://` resource the host should render for this tool.
10
+ * @param visibility - Optional audience(s) the widget targets (`model`/`app`).
11
+ * @returns A `_meta` object to attach to the tool's `tools/list` entry.
12
+ */
13
+ export function uiToolMeta(resourceUri, visibility) {
14
+ return {
15
+ ui: { resourceUri, ...(visibility ? { visibility } : {}) },
16
+ [RESOURCE_URI_META_KEY]: resourceUri,
17
+ };
18
+ }
19
+ /**
20
+ * Whether the connected host can render MCP Apps widgets — i.e. it advertised the
21
+ * `io.modelcontextprotocol/ui` extension during `initialize` with the MCP App
22
+ * HTML MIME in its supported `mimeTypes`. Use the SDK's
23
+ * `Server.getClientCapabilities()` (available after the handshake) as the input.
24
+ *
25
+ * @param capabilities - The negotiated client capabilities, or `undefined`.
26
+ * @returns `true` only when the host can render `text/html;profile=mcp-app`.
27
+ */
28
+ export function hostSupportsUiApps(capabilities) {
29
+ const ui = getUiCapability(capabilities);
30
+ return Boolean(ui?.mimeTypes?.includes(RESOURCE_MIME_TYPE));
31
+ }
32
+ //# sourceMappingURL=ui-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-app.js","sourceRoot":"","sources":["../src/ui-app.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAgB/C,2EAA2E;AAC3E,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CACxB,WAAmB,EACnB,UAA+B;IAE/B,OAAO;QACL,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1D,CAAC,qBAAqB,CAAC,EAAE,WAAW;KACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,YAA4C;IAC7E,MAAM,EAAE,GAAG,eAAe,CAAC,YAAY,CAAyC,CAAC;IACjF,OAAO,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type http from "node:http";
2
+ /**
3
+ * Serve the built-in widget's browser assets (the app-side module + the ext-apps
4
+ * `App` bundle it imports). These are static, non-sensitive JS that an MCP Apps
5
+ * host fetches into its sandbox iframe, so they are served WITHOUT auth.
6
+ *
7
+ * @returns `true` if the path matched a widget asset and a response was written.
8
+ */
9
+ export declare function tryServeWidgetAsset(pathname: string, res: http.ServerResponse): boolean;
10
+ //# sourceMappingURL=widget-asset-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-asset-server.d.ts","sourceRoot":"","sources":["../src/widget-asset-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AA0BlC;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,GAAG,OAAO,CAYvF"}
@@ -0,0 +1,41 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { createRequire } from "node:module";
3
+ import { WIDGET_ASSET_BASE_PATH, HELLO_WIDGET_CLIENT_JS } from "./resources/hello-widget.js";
4
+ const nodeRequire = createRequire(import.meta.url);
5
+ /** Lazily-resolved, cached ext-apps app-side bundle (the real `App`, deps inlined). */
6
+ let appWithDepsBundle;
7
+ /** Resolve + read the ext-apps `app-with-deps` browser bundle from node_modules, once. */
8
+ function readAppWithDeps() {
9
+ if (appWithDepsBundle === undefined) {
10
+ const bundlePath = nodeRequire.resolve("@modelcontextprotocol/ext-apps/app-with-deps");
11
+ appWithDepsBundle = readFileSync(bundlePath, "utf8");
12
+ }
13
+ return appWithDepsBundle;
14
+ }
15
+ /** Headers for the served JS modules. CORS-open: hosts fetch these into their sandbox. */
16
+ const JS_HEADERS = {
17
+ "Content-Type": "text/javascript; charset=utf-8",
18
+ "Cache-Control": "no-cache",
19
+ "Access-Control-Allow-Origin": "*",
20
+ };
21
+ /**
22
+ * Serve the built-in widget's browser assets (the app-side module + the ext-apps
23
+ * `App` bundle it imports). These are static, non-sensitive JS that an MCP Apps
24
+ * host fetches into its sandbox iframe, so they are served WITHOUT auth.
25
+ *
26
+ * @returns `true` if the path matched a widget asset and a response was written.
27
+ */
28
+ export function tryServeWidgetAsset(pathname, res) {
29
+ if (pathname === `${WIDGET_ASSET_BASE_PATH}/index.js`) {
30
+ res.writeHead(200, JS_HEADERS);
31
+ res.end(HELLO_WIDGET_CLIENT_JS);
32
+ return true;
33
+ }
34
+ if (pathname === `${WIDGET_ASSET_BASE_PATH}/app-with-deps.js`) {
35
+ res.writeHead(200, JS_HEADERS);
36
+ res.end(readAppWithDeps());
37
+ return true;
38
+ }
39
+ return false;
40
+ }
41
+ //# sourceMappingURL=widget-asset-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-asset-server.js","sourceRoot":"","sources":["../src/widget-asset-server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAE7F,MAAM,WAAW,GAAgB,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhE,uFAAuF;AACvF,IAAI,iBAAqC,CAAC;AAE1C,0FAA0F;AAC1F,SAAS,eAAe;IACtB,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,UAAU,GAAW,WAAW,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC/F,iBAAiB,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,GAAqC;IACnD,cAAc,EAAE,gCAAgC;IAChD,eAAe,EAAE,UAAU;IAC3B,6BAA6B,EAAE,GAAG;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,GAAwB;IAC5E,IAAI,QAAQ,KAAK,GAAG,sBAAsB,WAAW,EAAE,CAAC;QACtD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,KAAK,GAAG,sBAAsB,mBAAmB,EAAE,CAAC;QAC9D,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/mcp",
3
- "version": "0.110.2",
3
+ "version": "0.111.0",
4
4
  "description": "MCP (Model Context Protocol) server for Grackle — translates MCP tool calls to ConnectRPC",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -34,11 +34,12 @@
34
34
  "@bufbuild/protobuf": "^2.5.0",
35
35
  "@connectrpc/connect": "^2.0.0",
36
36
  "@connectrpc/connect-node": "^2.0.0",
37
- "@modelcontextprotocol/sdk": "^1.27.0",
37
+ "@modelcontextprotocol/ext-apps": "^1.7.2",
38
+ "@modelcontextprotocol/sdk": "^1.29.0",
38
39
  "pino": "^10.3.1",
39
40
  "zod": "^4.0.0",
40
- "@grackle-ai/common": "0.110.2",
41
- "@grackle-ai/auth": "0.110.2"
41
+ "@grackle-ai/common": "0.111.0",
42
+ "@grackle-ai/auth": "0.111.0"
42
43
  },
43
44
  "devDependencies": {
44
45
  "@rushstack/heft": "1.2.7",