@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-fe/mcp-worker",
3
- "version": "0.0.17",
3
+ "version": "0.1.1",
4
4
  "license": "Apache-2.0",
5
5
  "homepage": "https://mcp-fe.ai",
6
6
  "repository": {
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
@@ -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,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,eAAO,MAAM,YAAY,cAAqB,CAAC"}
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":"AACA;;;;;GAKG;AAEH,OAAO,EAAc,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQhE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAErD,qBAAa,aAAa;IAUtB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IAVrB,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;gBAG7B,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;IAgIvC,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;IAIhE,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"}
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"}
@@ -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,CAAA;AAMlE,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUrB,CAAA"}
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;IAIpC,IAAI,CACf,qBAAqB,CAAC,EAAE,yBAAyB,GAAG,uBAAuB,GAC1E,OAAO,CAAC,IAAI,CAAC;YAmFF,gBAAgB;YA8FhB,yBAAyB;IAiD1B,OAAO,CAAC,CAAC,GAAG,OAAO,EAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,SAAS,SAAO,GACf,OAAO,CAAC,CAAC,CAAC;IAuKA,IAAI,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAkDhB,OAAO,CAAC,4BAA4B;IAmC7B,kBAAkB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAI1D,mBAAmB,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAIrD,mBAAmB,IAAI,OAAO,CAAC,OAAO,CAAC;IAe7C,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAoBzC"}
1
+ {"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../../../../libs/mcp-worker/src/lib/worker-client.ts"],"names":[],"mappings":"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"}