mcp-use 1.9.0 → 1.9.1-canary.1
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/dist/.tsbuildinfo +1 -1
- package/dist/chunk-2EYAMIT3.js +76 -0
- package/dist/chunk-33U4IA4N.js +337 -0
- package/dist/chunk-362PI25Z.js +110 -0
- package/dist/chunk-LWVK6RXA.js +30 -0
- package/dist/context-storage-NA4MHWOZ.js +13 -0
- package/dist/conversion-5MA4VY3B.js +7 -0
- package/dist/conversion-OTRZZBUU.js +7 -0
- package/dist/src/server/context-storage.d.ts +8 -1
- package/dist/src/server/context-storage.d.ts.map +1 -1
- package/dist/src/server/endpoints/index.d.ts +7 -0
- package/dist/src/server/endpoints/index.d.ts.map +1 -0
- package/dist/src/server/endpoints/mount-mcp.d.ts +21 -0
- package/dist/src/server/endpoints/mount-mcp.d.ts.map +1 -0
- package/dist/src/server/index.cjs +4180 -3956
- package/dist/src/server/index.d.ts +4 -3
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +3590 -3040
- package/dist/src/server/inspector/index.d.ts +5 -0
- package/dist/src/server/inspector/index.d.ts.map +1 -0
- package/dist/src/server/inspector/mount.d.ts +33 -0
- package/dist/src/server/inspector/mount.d.ts.map +1 -0
- package/dist/src/server/logging.d.ts.map +1 -1
- package/dist/src/server/mcp-server.d.ts +91 -770
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/notifications/index.d.ts +7 -0
- package/dist/src/server/notifications/index.d.ts.map +1 -0
- package/dist/src/server/notifications/notification-registration.d.ts +82 -0
- package/dist/src/server/notifications/notification-registration.d.ts.map +1 -0
- package/dist/src/server/oauth/index.d.ts +1 -0
- package/dist/src/server/oauth/index.d.ts.map +1 -1
- package/dist/src/server/oauth/setup.d.ts +28 -0
- package/dist/src/server/oauth/setup.d.ts.map +1 -0
- package/dist/src/server/prompts/conversion.d.ts +22 -0
- package/dist/src/server/prompts/conversion.d.ts.map +1 -0
- package/dist/src/server/prompts/index.d.ts +60 -0
- package/dist/src/server/prompts/index.d.ts.map +1 -0
- package/dist/src/server/resources/conversion.d.ts +20 -0
- package/dist/src/server/resources/conversion.d.ts.map +1 -0
- package/dist/src/server/resources/index.d.ts +117 -0
- package/dist/src/server/resources/index.d.ts.map +1 -0
- package/dist/src/server/resources/subscriptions.d.ts +54 -0
- package/dist/src/server/resources/subscriptions.d.ts.map +1 -0
- package/dist/src/server/roots/index.d.ts +7 -0
- package/dist/src/server/roots/index.d.ts.map +1 -0
- package/dist/src/server/roots/roots-registration.d.ts +56 -0
- package/dist/src/server/roots/roots-registration.d.ts.map +1 -0
- package/dist/src/server/sessions/index.d.ts +6 -0
- package/dist/src/server/sessions/index.d.ts.map +1 -0
- package/dist/src/server/sessions/notifications.d.ts +25 -0
- package/dist/src/server/sessions/notifications.d.ts.map +1 -0
- package/dist/src/server/sessions/session-manager.d.ts +47 -0
- package/dist/src/server/sessions/session-manager.d.ts.map +1 -0
- package/dist/src/server/tools/index.d.ts +10 -0
- package/dist/src/server/tools/index.d.ts.map +1 -0
- package/dist/src/server/tools/schema-helpers.d.ts +54 -0
- package/dist/src/server/tools/schema-helpers.d.ts.map +1 -0
- package/dist/src/server/tools/tool-execution-helpers.d.ts +110 -0
- package/dist/src/server/tools/tool-execution-helpers.d.ts.map +1 -0
- package/dist/src/server/tools/tool-registration.d.ts +85 -0
- package/dist/src/server/tools/tool-registration.d.ts.map +1 -0
- package/dist/src/server/types/common.d.ts +24 -0
- package/dist/src/server/types/common.d.ts.map +1 -1
- package/dist/src/server/types/index.d.ts +5 -4
- package/dist/src/server/types/index.d.ts.map +1 -1
- package/dist/src/server/types/prompt.d.ts +61 -6
- package/dist/src/server/types/prompt.d.ts.map +1 -1
- package/dist/src/server/types/resource.d.ts +83 -8
- package/dist/src/server/types/resource.d.ts.map +1 -1
- package/dist/src/server/types/tool-context.d.ts +252 -0
- package/dist/src/server/types/tool-context.d.ts.map +1 -0
- package/dist/src/server/types/tool.d.ts +62 -5
- package/dist/src/server/types/tool.d.ts.map +1 -1
- package/dist/src/server/utils/hono-proxy.d.ts +21 -0
- package/dist/src/server/utils/hono-proxy.d.ts.map +1 -0
- package/dist/src/server/utils/index.d.ts +3 -0
- package/dist/src/server/utils/index.d.ts.map +1 -1
- package/dist/src/server/utils/jsonrpc-helpers.d.ts +94 -0
- package/dist/src/server/utils/jsonrpc-helpers.d.ts.map +1 -0
- package/dist/src/server/utils/response-helpers.d.ts +163 -7
- package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
- package/dist/src/server/utils/server-helpers.d.ts +78 -0
- package/dist/src/server/utils/server-helpers.d.ts.map +1 -0
- package/dist/src/server/utils/server-lifecycle.d.ts +52 -0
- package/dist/src/server/utils/server-lifecycle.d.ts.map +1 -0
- package/dist/src/server/utils/session-helpers.d.ts +55 -0
- package/dist/src/server/utils/session-helpers.d.ts.map +1 -0
- package/dist/src/server/widgets/index.d.ts +30 -0
- package/dist/src/server/widgets/index.d.ts.map +1 -0
- package/dist/src/server/widgets/mcp-ui-adapter.d.ts.map +1 -0
- package/dist/src/server/widgets/mount-widgets-dev.d.ts +28 -0
- package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -0
- package/dist/src/server/widgets/mount-widgets-production.d.ts +27 -0
- package/dist/src/server/widgets/mount-widgets-production.d.ts.map +1 -0
- package/dist/src/server/widgets/setup-widget-routes.d.ts +23 -0
- package/dist/src/server/widgets/setup-widget-routes.d.ts.map +1 -0
- package/dist/src/server/widgets/ui-resource-registration.d.ts +75 -0
- package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -0
- package/dist/src/server/widgets/widget-helpers.d.ts +277 -0
- package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -0
- package/dist/src/server/widgets/widget-types.d.ts +49 -0
- package/dist/src/server/widgets/widget-types.d.ts.map +1 -0
- package/dist/tool-execution-helpers-BQJTPWPN.js +29 -0
- package/package.json +6 -5
- package/dist/chunk-F4UHAA5L.js +0 -854
- package/dist/oauth-U4NNKN4B.js +0 -30
- package/dist/src/server/adapters/mcp-ui-adapter.d.ts.map +0 -1
- /package/dist/src/server/{adapters → widgets}/mcp-ui-adapter.d.ts +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UI Resource Registration
|
|
3
|
+
*
|
|
4
|
+
* This module handles the registration of UI widgets as both tools and resources
|
|
5
|
+
* in the MCP server. It creates a unified interface for MCP-UI compatible widgets.
|
|
6
|
+
*/
|
|
7
|
+
import type { UIResourceDefinition } from "../types/index.js";
|
|
8
|
+
/**
|
|
9
|
+
* Interface representing the server context needed for UI resource registration
|
|
10
|
+
*
|
|
11
|
+
* Note: Properties can be private/protected in the implementing class since they're
|
|
12
|
+
* accessed through the `this` context.
|
|
13
|
+
*/
|
|
14
|
+
export interface UIResourceServerContext {
|
|
15
|
+
/** Build ID for cache busting (can be private/protected) */
|
|
16
|
+
readonly buildId?: string;
|
|
17
|
+
/** Server host (can be private/protected) */
|
|
18
|
+
readonly serverHost: string;
|
|
19
|
+
/** Server port (can be private/protected) */
|
|
20
|
+
readonly serverPort?: number;
|
|
21
|
+
/** Server base URL (can be private/protected) */
|
|
22
|
+
readonly serverBaseUrl?: string;
|
|
23
|
+
/** Method to register a resource */
|
|
24
|
+
resource(definition: any): void;
|
|
25
|
+
/** Method to register a resource template */
|
|
26
|
+
resourceTemplate(definition: any): void;
|
|
27
|
+
/** Method to register a tool */
|
|
28
|
+
tool(definition: any): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Register a UI widget as both a tool and a resource
|
|
32
|
+
*
|
|
33
|
+
* Creates a unified interface for MCP-UI compatible widgets that can be accessed
|
|
34
|
+
* either as tools (with parameters) or as resources (static access). The tool
|
|
35
|
+
* allows dynamic parameter passing while the resource provides discoverable access.
|
|
36
|
+
*
|
|
37
|
+
* Supports multiple UI resource types:
|
|
38
|
+
* - externalUrl: Legacy MCP-UI iframe-based widgets
|
|
39
|
+
* - rawHtml: Legacy MCP-UI raw HTML content
|
|
40
|
+
* - remoteDom: Legacy MCP-UI Remote DOM scripting
|
|
41
|
+
* - appsSdk: OpenAI Apps SDK compatible widgets (text/html+skybridge)
|
|
42
|
+
*
|
|
43
|
+
* @param this - Server context with registration methods
|
|
44
|
+
* @param definition - Widget configuration object
|
|
45
|
+
* @param definition.name - Unique identifier for the resource
|
|
46
|
+
* @param definition.type - Type of UI resource (externalUrl, rawHtml, remoteDom, appsSdk)
|
|
47
|
+
* @param definition.title - Human-readable title for the widget
|
|
48
|
+
* @param definition.description - Description of the widget's functionality
|
|
49
|
+
* @param definition.props - Widget properties configuration with types and defaults
|
|
50
|
+
* @param definition.size - Preferred iframe size [width, height] (e.g., ['900px', '600px'])
|
|
51
|
+
* @param definition.annotations - Resource annotations for discovery
|
|
52
|
+
* @param definition.appsSdkMetadata - Apps SDK specific metadata (CSP, widget description, etc.)
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Usage in McpServer class
|
|
57
|
+
* class McpServer {
|
|
58
|
+
* public uiResource = uiResourceRegistration;
|
|
59
|
+
*
|
|
60
|
+
* // ... other methods
|
|
61
|
+
* }
|
|
62
|
+
*
|
|
63
|
+
* // Then call it normally
|
|
64
|
+
* server.uiResource({
|
|
65
|
+
* type: 'appsSdk',
|
|
66
|
+
* name: 'kanban-board',
|
|
67
|
+
* title: 'Kanban Board',
|
|
68
|
+
* description: 'Interactive task management board',
|
|
69
|
+
* htmlTemplate: '<div>...</div>',
|
|
70
|
+
* appsSdkMetadata: { ... }
|
|
71
|
+
* })
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
export declare function uiResourceRegistration(this: UIResourceServerContext, definition: UIResourceDefinition): UIResourceServerContext;
|
|
75
|
+
//# sourceMappingURL=ui-resource-registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui-resource-registration.d.ts","sourceRoot":"","sources":["../../../../src/server/widgets/ui-resource-registration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAS9D;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,4DAA4D;IAC5D,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,oCAAoC;IACpC,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC;IAChC,6CAA6C;IAC7C,gBAAgB,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC;IACxC,gCAAgC;IAChC,IAAI,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,uBAAuB,EAC7B,UAAU,EAAE,oBAAoB,GAC/B,uBAAuB,CA2LzB"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Widget helper utilities
|
|
3
|
+
*
|
|
4
|
+
* This module provides utility functions for widget registration, URI generation,
|
|
5
|
+
* and prop handling.
|
|
6
|
+
*/
|
|
7
|
+
import type { Hono as HonoType } from "hono";
|
|
8
|
+
import type { UIResourceContent, UIResourceDefinition, InputDefinition, WidgetProps } from "../types/index.js";
|
|
9
|
+
/**
|
|
10
|
+
* Generate a widget URI with optional build ID for cache busting
|
|
11
|
+
*
|
|
12
|
+
* @param widgetName - Widget name/identifier
|
|
13
|
+
* @param buildId - Optional build ID for cache busting
|
|
14
|
+
* @param extension - Optional file extension (e.g., '.html')
|
|
15
|
+
* @param suffix - Optional suffix (e.g., random ID for dynamic URIs)
|
|
16
|
+
* @returns Widget URI with build ID if available
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* generateWidgetUri('kanban-board', 'abc123', '.html')
|
|
21
|
+
* // Returns: 'ui://widget/kanban-board-abc123.html'
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function generateWidgetUri(widgetName: string, buildId: string | undefined, extension?: string, suffix?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Convert widget props definition to tool input schema
|
|
27
|
+
*
|
|
28
|
+
* Transforms the widget props configuration into the format expected by
|
|
29
|
+
* the tool registration system, mapping types and handling defaults.
|
|
30
|
+
*
|
|
31
|
+
* @param props - Widget props configuration
|
|
32
|
+
* @returns Array of InputDefinition objects for tool registration
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* const props = {
|
|
37
|
+
* title: { type: 'string', required: true, description: 'Board title' },
|
|
38
|
+
* color: { type: 'string', default: 'blue' }
|
|
39
|
+
* };
|
|
40
|
+
* const inputs = convertPropsToInputs(props);
|
|
41
|
+
* // Returns: [
|
|
42
|
+
* // { name: 'title', type: 'string', required: true, description: 'Board title' },
|
|
43
|
+
* // { name: 'color', type: 'string', default: 'blue' }
|
|
44
|
+
* // ]
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function convertPropsToInputs(props?: WidgetProps): InputDefinition[];
|
|
48
|
+
/**
|
|
49
|
+
* Apply default values to widget props
|
|
50
|
+
*
|
|
51
|
+
* Extracts default values from the props configuration to use when
|
|
52
|
+
* the resource is accessed without parameters.
|
|
53
|
+
*
|
|
54
|
+
* @param props - Widget props configuration
|
|
55
|
+
* @returns Object with default values for each prop
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const props = {
|
|
60
|
+
* title: { type: 'string', default: 'My Board' },
|
|
61
|
+
* color: { type: 'string', default: 'blue' },
|
|
62
|
+
* size: { type: 'number' } // no default
|
|
63
|
+
* };
|
|
64
|
+
* const defaults = applyDefaultProps(props);
|
|
65
|
+
* // Returns: { title: 'My Board', color: 'blue' }
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function applyDefaultProps(props?: WidgetProps): Record<string, any>;
|
|
69
|
+
/**
|
|
70
|
+
* Read build manifest file
|
|
71
|
+
*
|
|
72
|
+
* @returns Build manifest or null if not found
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* const manifest = await readBuildManifest();
|
|
77
|
+
* if (manifest) {
|
|
78
|
+
* console.log('Build ID:', manifest.buildId);
|
|
79
|
+
* console.log('Widgets:', manifest.widgets);
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export declare function readBuildManifest(): Promise<{
|
|
84
|
+
includeInspector: boolean;
|
|
85
|
+
widgets: string[] | Record<string, any>;
|
|
86
|
+
buildTime?: string;
|
|
87
|
+
buildId?: string;
|
|
88
|
+
} | null>;
|
|
89
|
+
/**
|
|
90
|
+
* Server configuration for widget UI resource creation
|
|
91
|
+
*/
|
|
92
|
+
export interface WidgetServerConfig {
|
|
93
|
+
/** Server host */
|
|
94
|
+
serverHost: string;
|
|
95
|
+
/** Server port */
|
|
96
|
+
serverPort: number;
|
|
97
|
+
/** Server base URL (if configured) */
|
|
98
|
+
serverBaseUrl?: string;
|
|
99
|
+
/** Build ID for cache busting */
|
|
100
|
+
buildId?: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a UIResource object for a widget with the given parameters
|
|
104
|
+
*
|
|
105
|
+
* This function creates a consistent UIResource structure that can be rendered
|
|
106
|
+
* by MCP-UI compatible clients. It handles URL configuration, build IDs, and
|
|
107
|
+
* metadata merging.
|
|
108
|
+
*
|
|
109
|
+
* @param definition - UIResource definition
|
|
110
|
+
* @param params - Parameters to pass to the widget via URL
|
|
111
|
+
* @param serverConfig - Server configuration (host, port, baseUrl, buildId)
|
|
112
|
+
* @returns UIResource object compatible with MCP-UI
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const serverConfig = {
|
|
117
|
+
* serverHost: 'localhost',
|
|
118
|
+
* serverPort: 3000,
|
|
119
|
+
* serverBaseUrl: 'http://localhost:3000',
|
|
120
|
+
* buildId: 'abc123'
|
|
121
|
+
* };
|
|
122
|
+
*
|
|
123
|
+
* const definition = {
|
|
124
|
+
* type: 'appsSdk',
|
|
125
|
+
* name: 'kanban-board',
|
|
126
|
+
* title: 'Kanban Board',
|
|
127
|
+
* htmlTemplate: '<div>...</div>',
|
|
128
|
+
* appsSdkMetadata: { ... }
|
|
129
|
+
* };
|
|
130
|
+
*
|
|
131
|
+
* const uiResource = await createWidgetUIResource(definition, { title: 'My Board' }, serverConfig);
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
/**
|
|
135
|
+
* Get content type for a file based on its extension
|
|
136
|
+
*
|
|
137
|
+
* @param filename - The filename or path
|
|
138
|
+
* @returns MIME type string
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* getContentType('script.js') // Returns: 'application/javascript'
|
|
143
|
+
* getContentType('styles.css') // Returns: 'text/css'
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
146
|
+
export declare function getContentType(filename: string): string;
|
|
147
|
+
/**
|
|
148
|
+
* Process widget HTML with base URL injection and path conversion
|
|
149
|
+
*
|
|
150
|
+
* @param html - Original HTML content
|
|
151
|
+
* @param widgetName - Widget identifier
|
|
152
|
+
* @param baseUrl - Server base URL
|
|
153
|
+
* @returns Processed HTML with injected base tag and absolute URLs
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* const html = '<html><head></head><body>...</body></html>';
|
|
158
|
+
* const processed = processWidgetHtml(html, 'kanban-board', 'http://localhost:3000');
|
|
159
|
+
* ```
|
|
160
|
+
*/
|
|
161
|
+
export declare function processWidgetHtml(html: string, widgetName: string, baseUrl: string): string;
|
|
162
|
+
/**
|
|
163
|
+
* Create a widget registration object with standard metadata
|
|
164
|
+
*
|
|
165
|
+
* @param widgetName - Widget identifier
|
|
166
|
+
* @param metadata - Widget metadata from file or manifest
|
|
167
|
+
* @param html - Processed HTML template
|
|
168
|
+
* @param serverConfig - Server configuration for CSP and URLs
|
|
169
|
+
* @param isDev - Whether this is development mode
|
|
170
|
+
* @returns Widget registration object
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const registration = createWidgetRegistration(
|
|
175
|
+
* 'kanban-board',
|
|
176
|
+
* { title: 'Kanban Board', description: 'Task board' },
|
|
177
|
+
* '<html>...</html>',
|
|
178
|
+
* { serverBaseUrl: 'http://localhost:3000', cspUrls: [] },
|
|
179
|
+
* true
|
|
180
|
+
* );
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
export declare function createWidgetRegistration(widgetName: string, metadata: any, html: string, serverConfig: {
|
|
184
|
+
serverBaseUrl: string;
|
|
185
|
+
cspUrls: string[];
|
|
186
|
+
}, isDev?: boolean): {
|
|
187
|
+
name: string;
|
|
188
|
+
title: string;
|
|
189
|
+
description: string;
|
|
190
|
+
type: "appsSdk";
|
|
191
|
+
props: any;
|
|
192
|
+
_meta: Record<string, any>;
|
|
193
|
+
htmlTemplate: string;
|
|
194
|
+
appsSdkMetadata: Record<string, any>;
|
|
195
|
+
};
|
|
196
|
+
export declare function createWidgetUIResource(definition: UIResourceDefinition, params: Record<string, any>, serverConfig: WidgetServerConfig): Promise<UIResourceContent>;
|
|
197
|
+
/**
|
|
198
|
+
* Ensure widget metadata has proper fallback values
|
|
199
|
+
*
|
|
200
|
+
* @param metadata - Widget metadata object
|
|
201
|
+
* @param widgetName - Widget identifier for fallback description
|
|
202
|
+
* @param widgetDescription - Optional custom description
|
|
203
|
+
* @returns Metadata with ensured description
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* const metadata = ensureWidgetMetadata({}, 'kanban-board');
|
|
208
|
+
* // Returns: { description: 'Widget: kanban-board' }
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
export declare function ensureWidgetMetadata(metadata: any, widgetName: string, widgetDescription?: string): any;
|
|
212
|
+
/**
|
|
213
|
+
* Read widget HTML file with consistent error handling
|
|
214
|
+
*
|
|
215
|
+
* @param filePath - Path to the HTML file
|
|
216
|
+
* @param widgetName - Widget identifier for error messages
|
|
217
|
+
* @returns HTML content or empty string on error
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* const html = await readWidgetHtml('/path/to/widget/index.html', 'kanban-board');
|
|
222
|
+
* ```
|
|
223
|
+
*/
|
|
224
|
+
export declare function readWidgetHtml(filePath: string, widgetName: string): Promise<string>;
|
|
225
|
+
/**
|
|
226
|
+
* Register a widget from its HTML template and metadata
|
|
227
|
+
*
|
|
228
|
+
* This function encapsulates the common pattern of registering a widget:
|
|
229
|
+
* - Read and process HTML template
|
|
230
|
+
* - Ensure metadata has proper fallbacks
|
|
231
|
+
* - Create widget registration object
|
|
232
|
+
* - Call the registration callback
|
|
233
|
+
*
|
|
234
|
+
* @param widgetName - Widget identifier
|
|
235
|
+
* @param htmlPath - Path to the HTML template file
|
|
236
|
+
* @param metadata - Widget metadata
|
|
237
|
+
* @param serverConfig - Server configuration for CSP and URLs
|
|
238
|
+
* @param registerWidget - Callback to register the widget
|
|
239
|
+
* @param isDev - Whether this is development mode
|
|
240
|
+
* @returns Promise that resolves when widget is registered
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* await registerWidgetFromTemplate(
|
|
245
|
+
* 'kanban-board',
|
|
246
|
+
* './dist/resources/widgets/kanban-board/index.html',
|
|
247
|
+
* { title: 'Kanban Board' },
|
|
248
|
+
* serverConfig,
|
|
249
|
+
* registerWidget,
|
|
250
|
+
* false
|
|
251
|
+
* );
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
export declare function registerWidgetFromTemplate(widgetName: string, htmlPath: string, metadata: any, serverConfig: {
|
|
255
|
+
serverBaseUrl: string;
|
|
256
|
+
cspUrls: string[];
|
|
257
|
+
}, registerWidget: (widgetDef: any) => void, isDev?: boolean): Promise<void>;
|
|
258
|
+
/**
|
|
259
|
+
* Setup static file serving routes for public files
|
|
260
|
+
*
|
|
261
|
+
* Creates an HTTP route to serve files from the public/ or dist/public/ directory.
|
|
262
|
+
* This function encapsulates the common pattern of serving static files.
|
|
263
|
+
*
|
|
264
|
+
* @param app - Hono app instance to mount routes on
|
|
265
|
+
* @param useDistDirectory - Whether to serve from dist/public (production) or public (dev)
|
|
266
|
+
*
|
|
267
|
+
* @example
|
|
268
|
+
* ```typescript
|
|
269
|
+
* // For development mode
|
|
270
|
+
* setupPublicRoutes(app, false);
|
|
271
|
+
*
|
|
272
|
+
* // For production mode
|
|
273
|
+
* setupPublicRoutes(app, true);
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
276
|
+
export declare function setupPublicRoutes(app: HonoType, useDistDirectory?: boolean): void;
|
|
277
|
+
//# sourceMappingURL=widget-helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-helpers.d.ts","sourceRoot":"","sources":["../../../../src/server/widgets/widget-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared type definitions for widget mounting and serving
|
|
3
|
+
*
|
|
4
|
+
* This module consolidates common types used across widget-related modules
|
|
5
|
+
* to avoid duplication and ensure consistency.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Server configuration for widget mounting
|
|
9
|
+
*
|
|
10
|
+
* Unified interface used by both development and production widget mounting,
|
|
11
|
+
* as well as static route setup.
|
|
12
|
+
*/
|
|
13
|
+
export interface ServerConfig {
|
|
14
|
+
/** Base URL of the server */
|
|
15
|
+
serverBaseUrl: string;
|
|
16
|
+
/** Server port (optional for production) */
|
|
17
|
+
serverPort?: number | string;
|
|
18
|
+
/** Additional CSP URLs for widget security */
|
|
19
|
+
cspUrls: string[];
|
|
20
|
+
/** Build ID from manifest for cache busting (optional) */
|
|
21
|
+
buildId?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Widget mounting options
|
|
25
|
+
*
|
|
26
|
+
* Common options used for both development and production widget mounting.
|
|
27
|
+
*/
|
|
28
|
+
export interface MountWidgetsOptions {
|
|
29
|
+
/** Base route for widgets (defaults to '/mcp-use/widgets') */
|
|
30
|
+
baseRoute?: string;
|
|
31
|
+
/** Resources directory path (defaults to 'resources') */
|
|
32
|
+
resourcesDir?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Widget registration callback function type
|
|
36
|
+
*
|
|
37
|
+
* Used to register discovered widgets with the MCP server.
|
|
38
|
+
*/
|
|
39
|
+
export type RegisterWidgetCallback = (widgetDefinition: {
|
|
40
|
+
name: string;
|
|
41
|
+
title: string;
|
|
42
|
+
description: string;
|
|
43
|
+
type: "appsSdk";
|
|
44
|
+
props: any;
|
|
45
|
+
_meta: Record<string, any>;
|
|
46
|
+
htmlTemplate: string;
|
|
47
|
+
appsSdkMetadata: Record<string, any>;
|
|
48
|
+
}) => void;
|
|
49
|
+
//# sourceMappingURL=widget-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../../src/server/widgets/widget-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,6BAA6B;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,gBAAgB,EAAE;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACtC,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import {
|
|
2
|
+
VALID_LOG_LEVELS,
|
|
3
|
+
createElicitMethod,
|
|
4
|
+
createEnhancedContext,
|
|
5
|
+
createReportProgressMethod,
|
|
6
|
+
createSampleMethod,
|
|
7
|
+
findSessionContext,
|
|
8
|
+
isValidLogLevel,
|
|
9
|
+
parseElicitParams,
|
|
10
|
+
sendProgressNotification,
|
|
11
|
+
shouldLogMessage,
|
|
12
|
+
withTimeout
|
|
13
|
+
} from "./chunk-33U4IA4N.js";
|
|
14
|
+
import "./chunk-KUEVOU4M.js";
|
|
15
|
+
import "./chunk-MTHLLDCX.js";
|
|
16
|
+
import "./chunk-3GQAWCBQ.js";
|
|
17
|
+
export {
|
|
18
|
+
VALID_LOG_LEVELS,
|
|
19
|
+
createElicitMethod,
|
|
20
|
+
createEnhancedContext,
|
|
21
|
+
createReportProgressMethod,
|
|
22
|
+
createSampleMethod,
|
|
23
|
+
findSessionContext,
|
|
24
|
+
isValidLogLevel,
|
|
25
|
+
parseElicitParams,
|
|
26
|
+
sendProgressNotification,
|
|
27
|
+
shouldLogMessage,
|
|
28
|
+
withTimeout
|
|
29
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-use",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.9.
|
|
4
|
+
"version": "1.9.1-canary.1",
|
|
5
5
|
"description": "Opinionated MCP Framework for TypeScript (@modelcontextprotocol/sdk compatible) - Build MCP Agents, Clients and Servers with support for ChatGPT Apps, Code Mode, OAuth, Notifications, Sampling, Observability and more.",
|
|
6
6
|
"author": "mcp-use, Inc.",
|
|
7
7
|
"license": "MIT",
|
|
@@ -105,15 +105,16 @@
|
|
|
105
105
|
"@hono/node-server": "^1.19.6",
|
|
106
106
|
"@langchain/core": "^1.1.0",
|
|
107
107
|
"@mcp-ui/server": "^5.15.0",
|
|
108
|
-
"@modelcontextprotocol/sdk": "https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@
|
|
108
|
+
"@modelcontextprotocol/sdk": "https://pkg.pr.new/modelcontextprotocol/typescript-sdk/@modelcontextprotocol/sdk@1209",
|
|
109
|
+
"express": "^5.2.0",
|
|
109
110
|
"hono": "^4.10.7",
|
|
110
111
|
"jose": "^6.1.2",
|
|
111
112
|
"langchain": "^1.1.1",
|
|
112
113
|
"posthog-node": "^5.14.1",
|
|
113
114
|
"ws": "^8.18.3",
|
|
114
115
|
"zod": "^4.1.13",
|
|
115
|
-
"@mcp-use/cli": "2.4.
|
|
116
|
-
"@mcp-use/inspector": "0.11.
|
|
116
|
+
"@mcp-use/cli": "2.4.9-canary.1",
|
|
117
|
+
"@mcp-use/inspector": "0.11.1-canary.1"
|
|
117
118
|
},
|
|
118
119
|
"optionalDependencies": {
|
|
119
120
|
"chalk": "^5.6.2",
|
|
@@ -193,7 +194,7 @@
|
|
|
193
194
|
"example:server:sampling": "tsx examples/server/sampling/src/server.ts",
|
|
194
195
|
"example:client:sampling": "tsx examples/client/sampling-client.ts",
|
|
195
196
|
"example:server:elicitation": "tsx examples/server/elicitation/src/server.ts",
|
|
196
|
-
"example:sampling": "lsof -ti:
|
|
197
|
+
"example:sampling": "lsof -ti:3000 | xargs kill -9 2>/dev/null; tsx examples/server/sampling/src/server.ts & sleep 3 && tsx examples/client/sampling-client.ts",
|
|
197
198
|
"example:server:oauth:supabase": "tsx examples/server/oauth/supabase/src/server.ts",
|
|
198
199
|
"example:client:oauth:auth0": "tsx examples/server/oauth/auth0/src/server.ts",
|
|
199
200
|
"example:client:oauth:workos": "tsx examples/server/oauth/workos/src/server.ts",
|