@mcp-fe/mcp-worker 0.0.17 → 0.1.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/README.md +184 -349
- package/docs/api.md +418 -0
- package/docs/architecture.md +195 -0
- package/docs/guide.md +454 -0
- package/docs/index.md +109 -0
- package/docs/initialization.md +188 -0
- package/docs/worker-details.md +435 -0
- package/index.js +365 -5
- package/mcp-service-worker.js +505 -204
- package/mcp-shared-worker.js +487 -173
- package/package.json +1 -1
- package/src/index.d.ts +2 -1
- package/src/index.d.ts.map +1 -1
- package/src/lib/built-in-tools.d.ts +9 -0
- package/src/lib/built-in-tools.d.ts.map +1 -0
- package/src/lib/mcp-controller.d.ts +18 -0
- package/src/lib/mcp-controller.d.ts.map +1 -1
- package/src/lib/mcp-server.d.ts +11 -0
- package/src/lib/mcp-server.d.ts.map +1 -1
- package/src/lib/tool-registry.d.ts +28 -0
- package/src/lib/tool-registry.d.ts.map +1 -0
- package/src/lib/worker-client.d.ts +123 -0
- package/src/lib/worker-client.d.ts.map +1 -1
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
import { WorkerClient } from './lib/worker-client';
|
|
17
|
-
export { type WorkerClientInitOptions } from './lib/worker-client';
|
|
17
|
+
export { WorkerClient, type WorkerClientInitOptions, } from './lib/worker-client';
|
|
18
18
|
export { queryEvents, type UserEvent } from './lib/database';
|
|
19
|
+
export { type ToolHandler, type ToolDefinition } from './lib/tool-registry';
|
|
19
20
|
export { logger } from './lib/logger';
|
|
20
21
|
export declare const workerClient: WorkerClient;
|
|
21
22
|
//# sourceMappingURL=index.d.ts.map
|
package/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/mcp-worker/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../libs/mcp-worker/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EACL,YAAY,EACZ,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in MCP tools for user event tracking
|
|
3
|
+
* These tools are automatically registered when the MCP server initializes
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Register all built-in tools with the tool registry
|
|
7
|
+
*/
|
|
8
|
+
export declare function registerBuiltInTools(): void;
|
|
9
|
+
//# sourceMappingURL=built-in-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"built-in-tools.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/built-in-tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8LH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
|
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Encapsulates the shared WebSocket / MCP server / storage logic used by
|
|
5
5
|
* both SharedWorker and ServiceWorker implementations.
|
|
6
|
+
*
|
|
7
|
+
* Supports dynamic tool registration via handleRegisterTool and handleUnregisterTool.
|
|
6
8
|
*/
|
|
7
9
|
import { queryEvents, UserEvent } from './database';
|
|
8
10
|
export type BroadcastFn = (message: unknown) => void;
|
|
@@ -16,6 +18,8 @@ export declare class MCPController {
|
|
|
16
18
|
private keepAliveInterval;
|
|
17
19
|
private requireAuth;
|
|
18
20
|
private isReconnectingForToken;
|
|
21
|
+
private pendingToolRegistrations;
|
|
22
|
+
private isMCPServerReady;
|
|
19
23
|
constructor(backendUrl: string, broadcastFn: BroadcastFn, requireAuth?: boolean);
|
|
20
24
|
private startKeepAlive;
|
|
21
25
|
private stopKeepAlive;
|
|
@@ -23,6 +27,20 @@ export declare class MCPController {
|
|
|
23
27
|
setAuthToken(token: string | null): void;
|
|
24
28
|
handleStoreEvent(userEvent: UserEvent): Promise<void>;
|
|
25
29
|
handleGetEvents(): Promise<ReturnType<typeof queryEvents>>;
|
|
30
|
+
/**
|
|
31
|
+
* Process pending tool registrations after MCP server is ready
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private processPendingToolRegistrations;
|
|
35
|
+
handleRegisterTool(toolData: Record<string, unknown>): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Internal method to register tool (assumes MCP server is ready)
|
|
38
|
+
* @private
|
|
39
|
+
*/
|
|
40
|
+
private handleRegisterToolInternal;
|
|
41
|
+
private pendingToolCalls?;
|
|
42
|
+
handleToolCallResult(callId: string, result: unknown): void;
|
|
43
|
+
handleUnregisterTool(toolName: string): Promise<boolean>;
|
|
26
44
|
getConnectionStatus(): boolean;
|
|
27
45
|
dispose(): void;
|
|
28
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-controller.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/mcp-controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-controller.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/mcp-controller.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAc,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAShE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAErD,qBAAa,aAAa;IAmBtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IAnBrB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,iBAAiB,CAA+C;IACxE,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,sBAAsB,CAAS;IAGvC,OAAO,CAAC,wBAAwB,CAIxB;IAER,OAAO,CAAC,gBAAgB,CAAS;gBAGvB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,EAChC,WAAW,UAAO;IAKpB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,aAAa;IAOR,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmIvC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAgClC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAIvE;;;OAGG;IACH,OAAO,CAAC,+BAA+B;IAoB1B,kBAAkB,CAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAoBhB;;;OAGG;YACW,0BAA0B;IA0ExC,OAAO,CAAC,gBAAgB,CAAC,CASvB;IAEK,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IA2BrD,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY9D,mBAAmB,IAAI,OAAO;IAI9B,OAAO,IAAI,IAAI;IAYtB;;;OAGG;WACW,MAAM,CAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,WAAW,EACxB,WAAW,UAAO,GACjB,aAAa;CAGjB"}
|
package/src/lib/mcp-server.d.ts
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
* Uses @modelcontextprotocol/sdk for type safety and validation
|
|
4
4
|
*/
|
|
5
5
|
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
6
|
+
export interface MCPServerOptions {
|
|
7
|
+
name?: string;
|
|
8
|
+
version?: string;
|
|
9
|
+
autoRegisterBuiltInTools?: boolean;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Factory function to create and configure an MCP server instance
|
|
13
|
+
* @param options Configuration options for the server
|
|
14
|
+
* @returns Configured MCP Server instance
|
|
15
|
+
*/
|
|
16
|
+
export declare function createMCPServer(options?: MCPServerOptions): Server;
|
|
6
17
|
export declare const mcpServer: Server<{
|
|
7
18
|
method: string;
|
|
8
19
|
params?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/mcp-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAQnE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAgDtE;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAoB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic tool registry for MCP server
|
|
3
|
+
* Manages tool definitions and their handlers
|
|
4
|
+
*/
|
|
5
|
+
export interface ToolDefinition {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
inputSchema: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export interface ToolHandler {
|
|
11
|
+
(args: unknown): Promise<{
|
|
12
|
+
content: Array<{
|
|
13
|
+
type: string;
|
|
14
|
+
text: string;
|
|
15
|
+
}>;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
export declare class ToolRegistry {
|
|
19
|
+
private tools;
|
|
20
|
+
private handlers;
|
|
21
|
+
register(definition: ToolDefinition, handler: ToolHandler): void;
|
|
22
|
+
unregister(name: string): boolean;
|
|
23
|
+
getTools(): ToolDefinition[];
|
|
24
|
+
getHandler(name: string): ToolHandler | undefined;
|
|
25
|
+
clear(): void;
|
|
26
|
+
}
|
|
27
|
+
export declare const toolRegistry: ToolRegistry;
|
|
28
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/tool-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC9E;AAGD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,QAAQ,CAAkC;IAElD,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAKhE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAMjC,QAAQ,IAAI,cAAc,EAAE;IAI5B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIjD,KAAK,IAAI,IAAI;CAId;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -55,7 +55,27 @@ export declare class WorkerClient {
|
|
|
55
55
|
private pendingAuthToken;
|
|
56
56
|
private connectionStatusCallbacks;
|
|
57
57
|
private initPromise;
|
|
58
|
+
private isInitialized;
|
|
59
|
+
private initResolvers;
|
|
60
|
+
private pendingRegistrations;
|
|
61
|
+
private toolHandlers;
|
|
62
|
+
private toolRegistry;
|
|
63
|
+
private toolChangeListeners;
|
|
58
64
|
init(registrationOrOptions?: ServiceWorkerRegistration | WorkerClientInitOptions): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Mark worker as initialized and process pending registrations
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
private markAsInitialized;
|
|
70
|
+
/**
|
|
71
|
+
* Wait for worker initialization
|
|
72
|
+
* @returns Promise that resolves when worker is initialized
|
|
73
|
+
*/
|
|
74
|
+
waitForInit(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Check if worker is initialized
|
|
77
|
+
*/
|
|
78
|
+
get initialized(): boolean;
|
|
59
79
|
private initSharedWorker;
|
|
60
80
|
private initServiceWorkerFallback;
|
|
61
81
|
request<T = unknown>(type: string, payload?: Record<string, unknown>, timeoutMs?: number): Promise<T>;
|
|
@@ -65,5 +85,108 @@ export declare class WorkerClient {
|
|
|
65
85
|
offConnectionStatus(cb: (connected: boolean) => void): void;
|
|
66
86
|
getConnectionStatus(): Promise<boolean>;
|
|
67
87
|
setAuthToken(token: string): void;
|
|
88
|
+
/**
|
|
89
|
+
* Register a custom MCP tool dynamically
|
|
90
|
+
*
|
|
91
|
+
* The handler function runs in the MAIN THREAD (browser context), not in the worker.
|
|
92
|
+
* This means you have full access to:
|
|
93
|
+
* - React context, hooks, Redux store
|
|
94
|
+
* - DOM API, window, localStorage
|
|
95
|
+
* - All your imports and dependencies
|
|
96
|
+
* - Closures and external variables
|
|
97
|
+
*
|
|
98
|
+
* The worker acts as a proxy - it receives MCP tool calls and forwards them
|
|
99
|
+
* to your handler via MessageChannel.
|
|
100
|
+
*
|
|
101
|
+
* @param name - Tool name
|
|
102
|
+
* @param description - Tool description
|
|
103
|
+
* @param inputSchema - JSON Schema for tool inputs
|
|
104
|
+
* @param handler - Async function that handles the tool execution (runs in main thread)
|
|
105
|
+
* @returns Promise that resolves when tool is registered
|
|
106
|
+
*
|
|
107
|
+
* @example With full access to imports and context:
|
|
108
|
+
* ```typescript
|
|
109
|
+
* import { z } from 'zod';
|
|
110
|
+
* import { useMyStore } from './store';
|
|
111
|
+
*
|
|
112
|
+
* const store = useMyStore();
|
|
113
|
+
*
|
|
114
|
+
* await client.registerTool(
|
|
115
|
+
* 'validate_user',
|
|
116
|
+
* 'Validate user data',
|
|
117
|
+
* { type: 'object', properties: { username: { type: 'string' } } },
|
|
118
|
+
* async (args: any) => {
|
|
119
|
+
* // Full access to everything!
|
|
120
|
+
* const schema = z.object({ username: z.string().min(3) });
|
|
121
|
+
* const validated = schema.parse(args);
|
|
122
|
+
*
|
|
123
|
+
* // Can access store, context, etc.
|
|
124
|
+
* const currentUser = store.getState().user;
|
|
125
|
+
*
|
|
126
|
+
* return {
|
|
127
|
+
* content: [{
|
|
128
|
+
* type: 'text',
|
|
129
|
+
* text: JSON.stringify({ validated, currentUser })
|
|
130
|
+
* }]
|
|
131
|
+
* };
|
|
132
|
+
* }
|
|
133
|
+
* );
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
registerTool(name: string, description: string, inputSchema: Record<string, unknown>, handler: (args: unknown) => Promise<{
|
|
137
|
+
content: Array<{
|
|
138
|
+
type: string;
|
|
139
|
+
text: string;
|
|
140
|
+
}>;
|
|
141
|
+
}>): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Internal method to register tool (assumes worker is initialized)
|
|
144
|
+
* @private
|
|
145
|
+
*/
|
|
146
|
+
private registerToolInternal;
|
|
147
|
+
/**
|
|
148
|
+
* Unregister a previously registered MCP tool
|
|
149
|
+
* @param name - Tool name to unregister
|
|
150
|
+
* @returns Promise that resolves to true if tool was found and removed
|
|
151
|
+
*/
|
|
152
|
+
unregisterTool(name: string): Promise<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* Subscribe to tool changes for a specific tool
|
|
155
|
+
* Returns unsubscribe function
|
|
156
|
+
*/
|
|
157
|
+
onToolChange(toolName: string, callback: (info: {
|
|
158
|
+
refCount: number;
|
|
159
|
+
isRegistered: boolean;
|
|
160
|
+
} | null) => void): () => void;
|
|
161
|
+
/**
|
|
162
|
+
* Notify all listeners about tool changes
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
private notifyToolChange;
|
|
166
|
+
/**
|
|
167
|
+
* Get tool info from registry
|
|
168
|
+
*/
|
|
169
|
+
getToolInfo(toolName: string): {
|
|
170
|
+
refCount: number;
|
|
171
|
+
isRegistered: boolean;
|
|
172
|
+
} | null;
|
|
173
|
+
/**
|
|
174
|
+
* Get all registered tool names
|
|
175
|
+
*/
|
|
176
|
+
getRegisteredTools(): string[];
|
|
177
|
+
/**
|
|
178
|
+
* Check if a tool is registered
|
|
179
|
+
*/
|
|
180
|
+
isToolRegistered(toolName: string): boolean;
|
|
181
|
+
/**
|
|
182
|
+
* Handle tool call from worker - execute handler in main thread and return result
|
|
183
|
+
* @private
|
|
184
|
+
*/
|
|
185
|
+
private handleToolCall;
|
|
186
|
+
/**
|
|
187
|
+
* Send tool call result back to worker
|
|
188
|
+
* @private
|
|
189
|
+
*/
|
|
190
|
+
private sendToolCallResult;
|
|
68
191
|
}
|
|
69
192
|
//# sourceMappingURL=worker-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/worker-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAOH,MAAM,MAAM,uBAAuB,GAAG;IACpC,gDAAgD;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,YAAY;IAEvB,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,YAAY,CAAwC;IAE5D,OAAO,CAAC,yBAAyB,CAA0C;IAC3E,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,gBAAgB,CAAuB;IAE/C,OAAO,CAAC,yBAAyB,CACrB;IAGZ,OAAO,CAAC,WAAW,CAA8B;
|
|
1
|
+
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/worker-client.ts"],"names":[],"mappings":"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"}
|