@opentabs-dev/mcp-server 0.0.22 → 0.0.25
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/adapter-files.d.ts +53 -0
- package/dist/adapter-files.d.ts.map +1 -0
- package/dist/adapter-files.js +176 -0
- package/dist/adapter-files.js.map +1 -0
- package/dist/audit-disk.d.ts.map +1 -1
- package/dist/audit-disk.js +5 -6
- package/dist/audit-disk.js.map +1 -1
- package/dist/browser-tool-names.d.ts +14 -0
- package/dist/browser-tool-names.d.ts.map +1 -0
- package/dist/browser-tool-names.js +52 -0
- package/dist/browser-tool-names.js.map +1 -0
- package/dist/browser-tools/analyze-site/detect-auth.d.ts.map +1 -1
- package/dist/browser-tools/analyze-site/detect-auth.js +2 -1
- package/dist/browser-tools/analyze-site/detect-auth.js.map +1 -1
- package/dist/browser-tools/analyze-site/index.d.ts.map +1 -1
- package/dist/browser-tools/analyze-site/index.js +111 -15
- package/dist/browser-tools/analyze-site/index.js.map +1 -1
- package/dist/browser-tools/execute-script.js +1 -1
- package/dist/browser-tools/execute-script.js.map +1 -1
- package/dist/browser-tools/extension-get-logs.d.ts +2 -2
- package/dist/browser-tools/focus-tab.js +1 -1
- package/dist/browser-tools/focus-tab.js.map +1 -1
- package/dist/browser-tools/get-console-logs.d.ts +2 -2
- package/dist/browser-tools/index.d.ts +4 -0
- package/dist/browser-tools/index.d.ts.map +1 -1
- package/dist/browser-tools/index.js +19 -0
- package/dist/browser-tools/index.js.map +1 -1
- package/dist/browser-tools/select-option.d.ts.map +1 -1
- package/dist/browser-tools/select-option.js +11 -6
- package/dist/browser-tools/select-option.js.map +1 -1
- package/dist/config.d.ts +13 -16
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +43 -109
- package/dist/config.js.map +1 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +9 -12
- package/dist/discovery.js.map +1 -1
- package/dist/extension-handlers.d.ts +102 -0
- package/dist/extension-handlers.d.ts.map +1 -0
- package/dist/extension-handlers.js +443 -0
- package/dist/extension-handlers.js.map +1 -0
- package/dist/extension-protocol.d.ts +6 -38
- package/dist/extension-protocol.d.ts.map +1 -1
- package/dist/extension-protocol.js +47 -535
- package/dist/extension-protocol.js.map +1 -1
- package/dist/file-watcher.d.ts.map +1 -1
- package/dist/file-watcher.js +106 -104
- package/dist/file-watcher.js.map +1 -1
- package/dist/http-routes.d.ts +9 -7
- package/dist/http-routes.d.ts.map +1 -1
- package/dist/http-routes.js +275 -265
- package/dist/http-routes.js.map +1 -1
- package/dist/index.js +17 -10
- package/dist/index.js.map +1 -1
- package/dist/loader.d.ts +14 -3
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +42 -22
- package/dist/loader.js.map +1 -1
- package/dist/log-buffer.d.ts.map +1 -1
- package/dist/log-buffer.js +17 -6
- package/dist/log-buffer.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +5 -2
- package/dist/logger.js.map +1 -1
- package/dist/mcp-setup.d.ts +3 -18
- package/dist/mcp-setup.d.ts.map +1 -1
- package/dist/mcp-setup.js +13 -407
- package/dist/mcp-setup.js.map +1 -1
- package/dist/mcp-tool-dispatch.d.ts +51 -0
- package/dist/mcp-tool-dispatch.d.ts.map +1 -0
- package/dist/mcp-tool-dispatch.js +410 -0
- package/dist/mcp-tool-dispatch.js.map +1 -0
- package/dist/plugin-management.d.ts +123 -0
- package/dist/plugin-management.d.ts.map +1 -0
- package/dist/plugin-management.js +340 -0
- package/dist/plugin-management.js.map +1 -0
- package/dist/registry.d.ts +2 -13
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +2 -24
- package/dist/registry.js.map +1 -1
- package/dist/reload.d.ts.map +1 -1
- package/dist/reload.js +13 -2
- package/dist/reload.js.map +1 -1
- package/dist/resolver.d.ts.map +1 -1
- package/dist/resolver.js +33 -25
- package/dist/resolver.js.map +1 -1
- package/dist/state.d.ts +30 -21
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +14 -10
- package/dist/state.js.map +1 -1
- package/dist/version-check.d.ts.map +1 -1
- package/dist/version-check.js +36 -14
- package/dist/version-check.js.map +1 -1
- package/package.json +2 -2
package/dist/mcp-setup.js
CHANGED
|
@@ -20,81 +20,15 @@
|
|
|
20
20
|
* old handler closures with new ones that reference the fresh module imports
|
|
21
21
|
* (dispatchToExtension, sendInvocationStart, etc.).
|
|
22
22
|
*/
|
|
23
|
-
import { dispatchToExtension, isDispatchError
|
|
23
|
+
import { dispatchToExtension, isDispatchError } from './extension-protocol.js';
|
|
24
24
|
import { log } from './logger.js';
|
|
25
|
-
import {
|
|
25
|
+
import { handleBrowserToolCall, handlePluginToolCall } from './mcp-tool-dispatch.js';
|
|
26
26
|
import { getResource, getPrompt, listAllResources, listAllPrompts, trustTierPrefix } from './registry.js';
|
|
27
|
-
import {
|
|
28
|
-
import { prefixedToolName, isToolEnabled, isBrowserToolEnabled, appendAuditEntry, isSessionAllowed } from './state.js';
|
|
27
|
+
import { prefixedToolName, isToolEnabled, isBrowserToolEnabled } from './state.js';
|
|
29
28
|
import { version } from './version.js';
|
|
30
29
|
import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, McpError as SdkMcpError, ErrorCode, } from '@modelcontextprotocol/sdk/types.js';
|
|
30
|
+
import { toErrorMessage } from '@opentabs-dev/shared';
|
|
31
31
|
import { z } from 'zod';
|
|
32
|
-
/** Maximum concurrent tool dispatches per plugin to prevent tab performance degradation */
|
|
33
|
-
const MAX_CONCURRENT_DISPATCHES_PER_PLUGIN = 5;
|
|
34
|
-
/** Keys that could trigger prototype pollution in JSON deserialization */
|
|
35
|
-
const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
36
|
-
/**
|
|
37
|
-
* Recursively remove dangerous keys from objects to prevent prototype pollution
|
|
38
|
-
* in MCP clients that use naive JSON deserialization.
|
|
39
|
-
*/
|
|
40
|
-
const sanitizeOutput = (obj, depth = 0) => {
|
|
41
|
-
if (depth > 50 || obj === null || obj === undefined || typeof obj !== 'object')
|
|
42
|
-
return obj;
|
|
43
|
-
if (Array.isArray(obj))
|
|
44
|
-
return obj.map(item => sanitizeOutput(item, depth + 1));
|
|
45
|
-
const result = {};
|
|
46
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
47
|
-
if (!DANGEROUS_KEYS.has(key))
|
|
48
|
-
result[key] = sanitizeOutput(value, depth + 1);
|
|
49
|
-
}
|
|
50
|
-
return result;
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Extract the target domain hostname for a browser tool call.
|
|
54
|
-
*
|
|
55
|
-
* - Tools with a `url` param (get_cookies, set_cookie, delete_cookies, open_tab):
|
|
56
|
-
* parse the hostname from the URL
|
|
57
|
-
* - Tools with a `tabId` param: dispatch browser.getTabInfo to get the tab's URL,
|
|
58
|
-
* then parse the hostname
|
|
59
|
-
* - Tools with neither: return null (observe-tier tools, extension diagnostics)
|
|
60
|
-
*/
|
|
61
|
-
const resolveToolDomain = async (toolName, args, state) => {
|
|
62
|
-
// URL-based tools: parse domain from the url parameter
|
|
63
|
-
const urlArg = args.url;
|
|
64
|
-
if (typeof urlArg === 'string' && urlArg !== '') {
|
|
65
|
-
try {
|
|
66
|
-
return new URL(urlArg).hostname;
|
|
67
|
-
}
|
|
68
|
-
catch {
|
|
69
|
-
return null;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
// Tab-based tools: get the tab's URL via a lightweight dispatch
|
|
73
|
-
const tabIdArg = args.tabId;
|
|
74
|
-
if (typeof tabIdArg === 'number') {
|
|
75
|
-
try {
|
|
76
|
-
const tabInfo = (await dispatchToExtension(state, 'browser.getTabInfo', { tabId: tabIdArg }));
|
|
77
|
-
if (typeof tabInfo.url === 'string' && tabInfo.url !== '') {
|
|
78
|
-
return new URL(tabInfo.url).hostname;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
catch {
|
|
82
|
-
// Tab may be closed or unreachable — domain resolution is best-effort
|
|
83
|
-
}
|
|
84
|
-
return null;
|
|
85
|
-
}
|
|
86
|
-
return null;
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Truncate tool parameters into a short preview for the confirmation dialog.
|
|
90
|
-
* Shows the first ~200 characters of the JSON-stringified args.
|
|
91
|
-
*/
|
|
92
|
-
const truncateParamsPreview = (args) => {
|
|
93
|
-
const json = JSON.stringify(args, null, 2);
|
|
94
|
-
if (json.length <= 200)
|
|
95
|
-
return json;
|
|
96
|
-
return json.slice(0, 200) + '…';
|
|
97
|
-
};
|
|
98
32
|
/**
|
|
99
33
|
* Dynamically import the MCP SDK Server constructor.
|
|
100
34
|
*
|
|
@@ -108,48 +42,6 @@ const getServerCtor = async () => {
|
|
|
108
42
|
const mod = (await import('@modelcontextprotocol/sdk/server/index.js'));
|
|
109
43
|
return mod.Server;
|
|
110
44
|
};
|
|
111
|
-
/**
|
|
112
|
-
* Format a structured error response for MCP clients.
|
|
113
|
-
*
|
|
114
|
-
* When the error data contains structured fields (category, retryable, retryAfterMs),
|
|
115
|
-
* produces a human-readable prefix line followed by a machine-readable JSON block.
|
|
116
|
-
* When only the code is present (legacy), produces [CODE] message.
|
|
117
|
-
*/
|
|
118
|
-
const formatStructuredError = (code, message, data) => {
|
|
119
|
-
const category = typeof data?.category === 'string' ? data.category : undefined;
|
|
120
|
-
const retryable = typeof data?.retryable === 'boolean' ? data.retryable : undefined;
|
|
121
|
-
const retryAfterMs = typeof data?.retryAfterMs === 'number' ? data.retryAfterMs : undefined;
|
|
122
|
-
const hasStructuredFields = category !== undefined || retryable !== undefined || retryAfterMs !== undefined;
|
|
123
|
-
if (!hasStructuredFields) {
|
|
124
|
-
return `[${code}] ${message}`;
|
|
125
|
-
}
|
|
126
|
-
// Build the human-readable prefix with only present fields
|
|
127
|
-
const parts = [`code=${code}`];
|
|
128
|
-
if (category !== undefined)
|
|
129
|
-
parts.push(`category=${category}`);
|
|
130
|
-
if (retryable !== undefined)
|
|
131
|
-
parts.push(`retryable=${String(retryable)}`);
|
|
132
|
-
if (retryAfterMs !== undefined)
|
|
133
|
-
parts.push(`retryAfterMs=${retryAfterMs}`);
|
|
134
|
-
const prefix = `[ERROR ${parts.join(' ')}] ${message}`;
|
|
135
|
-
// Build the machine-readable JSON block with only present fields
|
|
136
|
-
const jsonObj = { code };
|
|
137
|
-
if (category !== undefined)
|
|
138
|
-
jsonObj.category = category;
|
|
139
|
-
if (retryable !== undefined)
|
|
140
|
-
jsonObj.retryable = retryable;
|
|
141
|
-
if (retryAfterMs !== undefined)
|
|
142
|
-
jsonObj.retryAfterMs = retryAfterMs;
|
|
143
|
-
return `${prefix}\n\n\`\`\`json\n${JSON.stringify(jsonObj)}\n\`\`\``;
|
|
144
|
-
};
|
|
145
|
-
/** Format a ZodError into a readable validation message listing each failing field */
|
|
146
|
-
const formatZodError = (err) => {
|
|
147
|
-
const issues = err.issues.map(issue => {
|
|
148
|
-
const path = issue.path.length > 0 ? issue.path.join('.') : '(root)';
|
|
149
|
-
return ` - ${path}: ${issue.message}`;
|
|
150
|
-
});
|
|
151
|
-
return `Invalid arguments:\n${issues.join('\n')}`;
|
|
152
|
-
};
|
|
153
45
|
/**
|
|
154
46
|
* Rebuild cached browser tool JSON schemas on state.
|
|
155
47
|
* Called after state.browserTools changes (during reload).
|
|
@@ -223,7 +115,7 @@ const registerMcpHandlers = (server, state) => {
|
|
|
223
115
|
if (isDispatchError(err)) {
|
|
224
116
|
throw new SdkMcpError(err.code, err.message);
|
|
225
117
|
}
|
|
226
|
-
const msg =
|
|
118
|
+
const msg = toErrorMessage(err);
|
|
227
119
|
throw new SdkMcpError(ErrorCode.InternalError, `Resource read error: ${msg}`);
|
|
228
120
|
}
|
|
229
121
|
});
|
|
@@ -260,12 +152,12 @@ const registerMcpHandlers = (server, state) => {
|
|
|
260
152
|
if (isDispatchError(err)) {
|
|
261
153
|
throw new SdkMcpError(err.code, err.message);
|
|
262
154
|
}
|
|
263
|
-
const msg =
|
|
155
|
+
const msg = toErrorMessage(err);
|
|
264
156
|
throw new SdkMcpError(ErrorCode.InternalError, `Prompt get error: ${msg}`);
|
|
265
157
|
}
|
|
266
158
|
});
|
|
267
159
|
// Handler: tools/call — dispatch to extension or handle browser tool locally.
|
|
268
|
-
//
|
|
160
|
+
// Delegates to handleBrowserToolCall or handlePluginToolCall for the actual logic.
|
|
269
161
|
server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
270
162
|
const toolName = request.params.name;
|
|
271
163
|
const args = request.params.arguments ?? {};
|
|
@@ -273,138 +165,7 @@ const registerMcpHandlers = (server, state) => {
|
|
|
273
165
|
// Browser tools are few and fixed.
|
|
274
166
|
const cachedBt = state.cachedBrowserTools.find(c => c.name === toolName);
|
|
275
167
|
if (cachedBt) {
|
|
276
|
-
|
|
277
|
-
return {
|
|
278
|
-
content: [{ type: 'text', text: `Tool ${toolName} is disabled via configuration` }],
|
|
279
|
-
isError: true,
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
// Validate args through the tool's Zod input schema
|
|
283
|
-
const parseResult = cachedBt.tool.input.safeParse(args);
|
|
284
|
-
if (!parseResult.success) {
|
|
285
|
-
return {
|
|
286
|
-
content: [
|
|
287
|
-
{
|
|
288
|
-
type: 'text',
|
|
289
|
-
text: formatZodError(parseResult.error),
|
|
290
|
-
},
|
|
291
|
-
],
|
|
292
|
-
isError: true,
|
|
293
|
-
};
|
|
294
|
-
}
|
|
295
|
-
// Permission evaluation: resolve domain, check session permissions,
|
|
296
|
-
// evaluate against policy, and hold for confirmation if needed.
|
|
297
|
-
const parsedArgs = parseResult.data;
|
|
298
|
-
const domain = await resolveToolDomain(toolName, parsedArgs, state);
|
|
299
|
-
// Check session permissions first (set by previous "Allow Always" actions)
|
|
300
|
-
const permission = isSessionAllowed(state.sessionPermissions, toolName, domain)
|
|
301
|
-
? 'allow'
|
|
302
|
-
: evaluatePermission(toolName, domain, state);
|
|
303
|
-
if (permission === 'deny') {
|
|
304
|
-
return {
|
|
305
|
-
content: [
|
|
306
|
-
{
|
|
307
|
-
type: 'text',
|
|
308
|
-
text: `PERMISSION_DENIED: Tool "${toolName}" is denied${domain ? ` for domain "${domain}"` : ''} by permission policy. Ask the user to update their OpenTabs permission configuration if this tool is needed.`,
|
|
309
|
-
},
|
|
310
|
-
],
|
|
311
|
-
isError: true,
|
|
312
|
-
};
|
|
313
|
-
}
|
|
314
|
-
if (permission === 'ask') {
|
|
315
|
-
// Send progress notification to MCP client (if progressToken is available)
|
|
316
|
-
const progressToken = extra._meta?.progressToken;
|
|
317
|
-
if (progressToken !== undefined) {
|
|
318
|
-
extra
|
|
319
|
-
.sendNotification({
|
|
320
|
-
method: 'notifications/progress',
|
|
321
|
-
params: {
|
|
322
|
-
progressToken,
|
|
323
|
-
progress: 0,
|
|
324
|
-
total: 1,
|
|
325
|
-
message: 'Waiting for human approval in the OpenTabs side panel...',
|
|
326
|
-
},
|
|
327
|
-
})
|
|
328
|
-
.catch(() => {
|
|
329
|
-
// Fire-and-forget
|
|
330
|
-
});
|
|
331
|
-
}
|
|
332
|
-
try {
|
|
333
|
-
const paramsPreview = truncateParamsPreview(parsedArgs);
|
|
334
|
-
const tabIdArg = parsedArgs.tabId;
|
|
335
|
-
const decision = await sendConfirmationRequest(state, toolName, domain, typeof tabIdArg === 'number' ? tabIdArg : undefined, paramsPreview);
|
|
336
|
-
if (decision === 'deny') {
|
|
337
|
-
return {
|
|
338
|
-
content: [
|
|
339
|
-
{
|
|
340
|
-
type: 'text',
|
|
341
|
-
text: `PERMISSION_DENIED: The user denied "${toolName}"${domain ? ` on "${domain}"` : ''}. Inform the user that the operation was blocked by their decision.`,
|
|
342
|
-
},
|
|
343
|
-
],
|
|
344
|
-
isError: true,
|
|
345
|
-
};
|
|
346
|
-
}
|
|
347
|
-
// decision is 'allow_once' or 'allow_always' — proceed with dispatch
|
|
348
|
-
// (allow_always session rules are handled by handleConfirmationResponse in extension-protocol)
|
|
349
|
-
}
|
|
350
|
-
catch (err) {
|
|
351
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
352
|
-
if (msg === 'CONFIRMATION_TIMEOUT') {
|
|
353
|
-
return {
|
|
354
|
-
content: [
|
|
355
|
-
{
|
|
356
|
-
type: 'text',
|
|
357
|
-
text: `CONFIRMATION_TIMEOUT: Human approval for "${toolName}"${domain ? ` on "${domain}"` : ''} timed out after 30 seconds. The user did not respond in the OpenTabs side panel. Ask the user to try again.`,
|
|
358
|
-
},
|
|
359
|
-
],
|
|
360
|
-
isError: true,
|
|
361
|
-
};
|
|
362
|
-
}
|
|
363
|
-
return {
|
|
364
|
-
content: [
|
|
365
|
-
{
|
|
366
|
-
type: 'text',
|
|
367
|
-
text: `Confirmation error: ${msg}`,
|
|
368
|
-
},
|
|
369
|
-
],
|
|
370
|
-
isError: true,
|
|
371
|
-
};
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
const btStartTs = Date.now();
|
|
375
|
-
let btSuccess = true;
|
|
376
|
-
let btErrorInfo;
|
|
377
|
-
try {
|
|
378
|
-
const result = await cachedBt.tool.handler(parseResult.data, state);
|
|
379
|
-
const cleaned = sanitizeOutput(result);
|
|
380
|
-
return {
|
|
381
|
-
content: [{ type: 'text', text: JSON.stringify(cleaned, null, 2) }],
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
catch (err) {
|
|
385
|
-
btSuccess = false;
|
|
386
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
387
|
-
btErrorInfo = { code: 'UNKNOWN', message: msg };
|
|
388
|
-
return {
|
|
389
|
-
content: [
|
|
390
|
-
{
|
|
391
|
-
type: 'text',
|
|
392
|
-
text: `Browser tool error: ${msg}`,
|
|
393
|
-
},
|
|
394
|
-
],
|
|
395
|
-
isError: true,
|
|
396
|
-
};
|
|
397
|
-
}
|
|
398
|
-
finally {
|
|
399
|
-
appendAuditEntry(state, {
|
|
400
|
-
timestamp: new Date(btStartTs).toISOString(),
|
|
401
|
-
tool: toolName,
|
|
402
|
-
plugin: 'browser',
|
|
403
|
-
success: btSuccess,
|
|
404
|
-
durationMs: Date.now() - btStartTs,
|
|
405
|
-
error: btErrorInfo,
|
|
406
|
-
});
|
|
407
|
-
}
|
|
168
|
+
return handleBrowserToolCall(state, toolName, args, cachedBt, extra);
|
|
408
169
|
}
|
|
409
170
|
// O(1) plugin tool lookup + enabled check via pre-built map
|
|
410
171
|
const callableCheck = checkToolCallable(state, toolName);
|
|
@@ -418,165 +179,7 @@ const registerMcpHandlers = (server, state) => {
|
|
|
418
179
|
log.debug('tool.call:', toolName, '→', foundPlugin + '/' + foundTool);
|
|
419
180
|
// Safe to assert: checkToolCallable verified the tool exists in registry.toolLookup
|
|
420
181
|
const lookup = state.registry.toolLookup.get(toolName);
|
|
421
|
-
|
|
422
|
-
// The validator is pre-compiled at discovery time for performance.
|
|
423
|
-
// If schema compilation failed, reject the call entirely — unvalidated
|
|
424
|
-
// input must never reach plugin handlers.
|
|
425
|
-
if (!lookup.validate) {
|
|
426
|
-
return {
|
|
427
|
-
content: [
|
|
428
|
-
{
|
|
429
|
-
type: 'text',
|
|
430
|
-
text: `Tool "${toolName}" cannot be called: schema compilation failed. ${lookup.validationErrors()}`,
|
|
431
|
-
},
|
|
432
|
-
],
|
|
433
|
-
isError: true,
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
// Wrap validation in try-catch: compiled Ajv validators can throw on
|
|
437
|
-
// pathological input (e.g., regex catastrophic backtracking from a
|
|
438
|
-
// community plugin's pattern keyword). Normal schemas complete in
|
|
439
|
-
// microseconds; this guard catches the unexpected edge case.
|
|
440
|
-
let valid;
|
|
441
|
-
try {
|
|
442
|
-
valid = lookup.validate(args);
|
|
443
|
-
}
|
|
444
|
-
catch (err) {
|
|
445
|
-
log.warn(`Schema validation threw for tool "${toolName}":`, err);
|
|
446
|
-
return {
|
|
447
|
-
content: [
|
|
448
|
-
{
|
|
449
|
-
type: 'text',
|
|
450
|
-
text: `Tool "${toolName}" validation failed unexpectedly. The tool's schema may be invalid.`,
|
|
451
|
-
},
|
|
452
|
-
],
|
|
453
|
-
isError: true,
|
|
454
|
-
};
|
|
455
|
-
}
|
|
456
|
-
if (!valid) {
|
|
457
|
-
return {
|
|
458
|
-
content: [
|
|
459
|
-
{
|
|
460
|
-
type: 'text',
|
|
461
|
-
text: `Invalid arguments for tool "${toolName}":\n${lookup.validationErrors()}`,
|
|
462
|
-
},
|
|
463
|
-
],
|
|
464
|
-
isError: true,
|
|
465
|
-
};
|
|
466
|
-
}
|
|
467
|
-
log.debug('tool.call: input validated for', toolName);
|
|
468
|
-
// Concurrency limit: prevent a runaway MCP client from flooding a single
|
|
469
|
-
// plugin's tab with simultaneous executeScript calls. Each dispatch runs
|
|
470
|
-
// in the page's MAIN world, so too many concurrent dispatches can degrade
|
|
471
|
-
// the target tab's performance.
|
|
472
|
-
const currentDispatches = state.activeDispatches.get(foundPlugin) ?? 0;
|
|
473
|
-
if (currentDispatches >= MAX_CONCURRENT_DISPATCHES_PER_PLUGIN) {
|
|
474
|
-
return {
|
|
475
|
-
content: [
|
|
476
|
-
{
|
|
477
|
-
type: 'text',
|
|
478
|
-
text: `Too many concurrent dispatches for plugin "${foundPlugin}" (limit: ${MAX_CONCURRENT_DISPATCHES_PER_PLUGIN}). Wait for in-flight requests to complete.`,
|
|
479
|
-
},
|
|
480
|
-
],
|
|
481
|
-
isError: true,
|
|
482
|
-
};
|
|
483
|
-
}
|
|
484
|
-
// Send invocation start notification to extension (for side panel)
|
|
485
|
-
sendInvocationStart(state, foundPlugin, foundTool);
|
|
486
|
-
const startTs = Date.now();
|
|
487
|
-
let success = true;
|
|
488
|
-
let errorInfo;
|
|
489
|
-
try {
|
|
490
|
-
state.activeDispatches.set(foundPlugin, currentDispatches + 1);
|
|
491
|
-
if (!state.extensionWs) {
|
|
492
|
-
success = false;
|
|
493
|
-
return {
|
|
494
|
-
content: [
|
|
495
|
-
{
|
|
496
|
-
type: 'text',
|
|
497
|
-
text: 'Extension not connected. Please ensure the OpenTabs Chrome extension is running.',
|
|
498
|
-
},
|
|
499
|
-
],
|
|
500
|
-
isError: true,
|
|
501
|
-
};
|
|
502
|
-
}
|
|
503
|
-
log.debug('tool.call: dispatching', foundPlugin + '/' + foundTool);
|
|
504
|
-
// Extract progressToken from MCP request _meta and build onProgress callback
|
|
505
|
-
const progressToken = extra._meta?.progressToken;
|
|
506
|
-
const onProgress = progressToken !== undefined
|
|
507
|
-
? (progress, total, message) => {
|
|
508
|
-
const params = { progressToken, progress, total };
|
|
509
|
-
if (message !== undefined)
|
|
510
|
-
params.message = message;
|
|
511
|
-
extra.sendNotification({ method: 'notifications/progress', params }).catch(() => {
|
|
512
|
-
// Fire-and-forget — errors in the progress chain must not affect tool execution
|
|
513
|
-
});
|
|
514
|
-
}
|
|
515
|
-
: undefined;
|
|
516
|
-
const result = await dispatchToExtension(state, 'tool.dispatch', { plugin: foundPlugin, tool: foundTool, input: args }, { label: `${foundPlugin}/${foundTool}`, progressToken, onProgress });
|
|
517
|
-
const rawOutput = result.output ?? result;
|
|
518
|
-
const cleaned = sanitizeOutput(rawOutput);
|
|
519
|
-
return {
|
|
520
|
-
content: [{ type: 'text', text: JSON.stringify(cleaned, null, 2) }],
|
|
521
|
-
};
|
|
522
|
-
}
|
|
523
|
-
catch (err) {
|
|
524
|
-
success = false;
|
|
525
|
-
if (isDispatchError(err)) {
|
|
526
|
-
const code = err.code;
|
|
527
|
-
let errorMsg = err.message;
|
|
528
|
-
if (code === -32001) {
|
|
529
|
-
errorMsg = `Tab closed: ${errorMsg}`;
|
|
530
|
-
}
|
|
531
|
-
else if (code === -32002) {
|
|
532
|
-
errorMsg = `Tab unavailable: ${errorMsg}`;
|
|
533
|
-
}
|
|
534
|
-
const toolErrorCode = err.data?.code;
|
|
535
|
-
const category = typeof err.data?.category === 'string' ? err.data.category : undefined;
|
|
536
|
-
if (typeof toolErrorCode === 'string') {
|
|
537
|
-
errorMsg = formatStructuredError(toolErrorCode, errorMsg, err.data);
|
|
538
|
-
errorInfo = { code: toolErrorCode, message: err.message, category };
|
|
539
|
-
}
|
|
540
|
-
else {
|
|
541
|
-
errorInfo = { code: String(code), message: err.message };
|
|
542
|
-
}
|
|
543
|
-
return {
|
|
544
|
-
content: [{ type: 'text', text: errorMsg }],
|
|
545
|
-
isError: true,
|
|
546
|
-
};
|
|
547
|
-
}
|
|
548
|
-
const msg = sanitizeErrorMessage(err instanceof Error ? err.message : String(err));
|
|
549
|
-
errorInfo = { code: 'UNKNOWN', message: msg };
|
|
550
|
-
return {
|
|
551
|
-
content: [
|
|
552
|
-
{
|
|
553
|
-
type: 'text',
|
|
554
|
-
text: `Tool dispatch error: ${msg}`,
|
|
555
|
-
},
|
|
556
|
-
],
|
|
557
|
-
isError: true,
|
|
558
|
-
};
|
|
559
|
-
}
|
|
560
|
-
finally {
|
|
561
|
-
const prev = state.activeDispatches.get(foundPlugin) ?? 1;
|
|
562
|
-
if (prev <= 1) {
|
|
563
|
-
state.activeDispatches.delete(foundPlugin);
|
|
564
|
-
}
|
|
565
|
-
else {
|
|
566
|
-
state.activeDispatches.set(foundPlugin, prev - 1);
|
|
567
|
-
}
|
|
568
|
-
const durationMs = Date.now() - startTs;
|
|
569
|
-
log.debug('tool.call:', foundPlugin + '/' + foundTool, 'completed in', `${durationMs}ms`);
|
|
570
|
-
sendInvocationEnd(state, foundPlugin, foundTool, durationMs, success);
|
|
571
|
-
appendAuditEntry(state, {
|
|
572
|
-
timestamp: new Date(startTs).toISOString(),
|
|
573
|
-
tool: toolName,
|
|
574
|
-
plugin: foundPlugin,
|
|
575
|
-
success,
|
|
576
|
-
durationMs,
|
|
577
|
-
error: errorInfo,
|
|
578
|
-
});
|
|
579
|
-
}
|
|
182
|
+
return handlePluginToolCall(state, toolName, args, foundPlugin, foundTool, lookup, extra);
|
|
580
183
|
});
|
|
581
184
|
};
|
|
582
185
|
/**
|
|
@@ -669,5 +272,8 @@ export const checkToolCallable = (state, prefixedToolName) => {
|
|
|
669
272
|
return { ok: false, error: `Tool ${prefixedToolName} is disabled` };
|
|
670
273
|
return { ok: true, pluginName: lookup.pluginName, toolName: lookup.toolName };
|
|
671
274
|
};
|
|
672
|
-
export
|
|
275
|
+
// Re-export sanitizeOutput and RequestHandlerExtra so existing callers
|
|
276
|
+
// (tests, reload.ts) can continue importing from mcp-setup.js.
|
|
277
|
+
export { sanitizeOutput } from './mcp-tool-dispatch.js';
|
|
278
|
+
export { createMcpServer, registerMcpHandlers, rebuildCachedBrowserTools, notifyToolListChanged, notifyResourceListChanged, notifyPromptListChanged, };
|
|
673
279
|
//# sourceMappingURL=mcp-setup.js.map
|
package/dist/mcp-setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-setup.js","sourceRoot":"","sources":["../src/mcp-setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-setup.js","sourceRoot":"","sources":["../src/mcp-setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool dispatch handlers for browser tools and plugin tools.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from the monolith tools/call handler in mcp-setup.ts so each
|
|
5
|
+
* dispatch path can be tested independently. The tools/call handler in
|
|
6
|
+
* mcp-setup.ts delegates to these functions after resolving the tool name.
|
|
7
|
+
*/
|
|
8
|
+
import type { ServerState, CachedBrowserTool, ToolLookupEntry } from './state.js';
|
|
9
|
+
import type { ZodError } from 'zod';
|
|
10
|
+
/**
|
|
11
|
+
* Recursively remove dangerous keys from objects to prevent prototype pollution
|
|
12
|
+
* in MCP clients that use naive JSON deserialization.
|
|
13
|
+
*/
|
|
14
|
+
declare const sanitizeOutput: (obj: unknown, depth?: number) => unknown;
|
|
15
|
+
/** Format a ZodError into a readable validation message listing each failing field */
|
|
16
|
+
declare const formatZodError: (err: ZodError) => string;
|
|
17
|
+
/** Result shape returned by both handleBrowserToolCall and handlePluginToolCall */
|
|
18
|
+
interface ToolCallResult {
|
|
19
|
+
content: Array<{
|
|
20
|
+
type: 'text';
|
|
21
|
+
text: string;
|
|
22
|
+
}>;
|
|
23
|
+
isError?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** Extra context passed to request handlers by the MCP SDK */
|
|
26
|
+
interface RequestHandlerExtra {
|
|
27
|
+
signal: AbortSignal;
|
|
28
|
+
sessionId?: string;
|
|
29
|
+
_meta?: {
|
|
30
|
+
progressToken?: string | number;
|
|
31
|
+
};
|
|
32
|
+
sendNotification: (notification: {
|
|
33
|
+
method: string;
|
|
34
|
+
params?: Record<string, unknown>;
|
|
35
|
+
}) => Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Handle a browser tool call: Zod validation, permission evaluation,
|
|
39
|
+
* confirmation flow, execution, output sanitization, and audit logging.
|
|
40
|
+
*/
|
|
41
|
+
declare const handleBrowserToolCall: (state: ServerState, toolName: string, args: Record<string, unknown>, cachedBt: CachedBrowserTool, extra: RequestHandlerExtra) => Promise<ToolCallResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Handle a plugin tool call: Ajv validation, concurrency limiting,
|
|
44
|
+
* dispatch to extension, error formatting, and audit logging.
|
|
45
|
+
*
|
|
46
|
+
* The caller must have already verified the tool is callable via checkToolCallable.
|
|
47
|
+
*/
|
|
48
|
+
declare const handlePluginToolCall: (state: ServerState, toolName: string, args: Record<string, unknown>, pluginName: string, toolBaseName: string, lookup: ToolLookupEntry, extra: RequestHandlerExtra) => Promise<ToolCallResult>;
|
|
49
|
+
export type { ToolCallResult, RequestHandlerExtra };
|
|
50
|
+
export { sanitizeOutput, formatZodError, handleBrowserToolCall, handlePluginToolCall };
|
|
51
|
+
//# sourceMappingURL=mcp-tool-dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-tool-dispatch.d.ts","sourceRoot":"","sources":["../src/mcp-tool-dispatch.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAoC,MAAM,YAAY,CAAC;AACpH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAQpC;;;GAGG;AACH,QAAA,MAAM,cAAc,GAAI,KAAK,OAAO,EAAE,cAAS,KAAG,OASjD,CAAC;AAyFF,sFAAsF;AACtF,QAAA,MAAM,cAAc,GAAI,KAAK,QAAQ,KAAG,MAMvC,CAAC;AAEF,mFAAmF;AACnF,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,8DAA8D;AAC9D,UAAU,mBAAmB;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC5C,gBAAgB,EAAE,CAAC,YAAY,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzG;AAED;;;GAGG;AACH,QAAA,MAAM,qBAAqB,GACzB,OAAO,WAAW,EAClB,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,UAAU,iBAAiB,EAC3B,OAAO,mBAAmB,KACzB,OAAO,CAAC,cAAc,CAiIxB,CAAC;AAEF;;;;;GAKG;AACH,QAAA,MAAM,oBAAoB,GACxB,OAAO,WAAW,EAClB,UAAU,MAAM,EAChB,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,YAAY,MAAM,EAClB,cAAc,MAAM,EACpB,QAAQ,eAAe,EACvB,OAAO,mBAAmB,KACzB,OAAO,CAAC,cAAc,CAuKxB,CAAC;AAEF,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,CAAC"}
|