@sonoma-security/mcp-gateway 0.1.2 → 0.1.5
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 +104 -45
- package/dist/__tests__/config.test.js +28 -0
- package/dist/__tests__/config.test.js.map +1 -1
- package/dist/__tests__/ssrf-protection.test.d.ts +2 -0
- package/dist/__tests__/ssrf-protection.test.d.ts.map +1 -0
- package/dist/__tests__/ssrf-protection.test.js +389 -0
- package/dist/__tests__/ssrf-protection.test.js.map +1 -0
- package/dist/auth/client.d.ts +2 -0
- package/dist/auth/client.d.ts.map +1 -1
- package/dist/auth/client.js +17 -15
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/crypto.d.ts +23 -0
- package/dist/auth/crypto.d.ts.map +1 -0
- package/dist/auth/crypto.js +78 -0
- package/dist/auth/crypto.js.map +1 -0
- package/dist/auth/index.d.ts +4 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +4 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server.d.ts +2 -0
- package/dist/auth/server.d.ts.map +1 -1
- package/dist/auth/server.js +337 -59
- package/dist/auth/server.js.map +1 -1
- package/dist/auth/storage.d.ts.map +1 -1
- package/dist/auth/storage.js +2 -72
- package/dist/auth/storage.js.map +1 -1
- package/dist/auth/upstream-oauth-provider.d.ts +41 -0
- package/dist/auth/upstream-oauth-provider.d.ts.map +1 -0
- package/dist/auth/upstream-oauth-provider.js +88 -0
- package/dist/auth/upstream-oauth-provider.js.map +1 -0
- package/dist/auth/upstream-oauth.d.ts +31 -0
- package/dist/auth/upstream-oauth.d.ts.map +1 -0
- package/dist/auth/upstream-oauth.js +79 -0
- package/dist/auth/upstream-oauth.js.map +1 -0
- package/dist/auth/upstream-token-store.d.ts +27 -0
- package/dist/auth/upstream-token-store.d.ts.map +1 -0
- package/dist/auth/upstream-token-store.js +103 -0
- package/dist/auth/upstream-token-store.js.map +1 -0
- package/dist/cli.js +115 -86
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +30 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +203 -9
- package/dist/config.js.map +1 -1
- package/dist/gateway.d.ts +23 -1
- package/dist/gateway.d.ts.map +1 -1
- package/dist/gateway.js +224 -35
- package/dist/gateway.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pattern-matcher.d.ts +47 -0
- package/dist/pattern-matcher.d.ts.map +1 -0
- package/dist/pattern-matcher.js +98 -0
- package/dist/pattern-matcher.js.map +1 -0
- package/dist/sonoma-client.d.ts +21 -5
- package/dist/sonoma-client.d.ts.map +1 -1
- package/dist/sonoma-client.js +42 -2
- package/dist/sonoma-client.js.map +1 -1
- package/dist/ssrf-protection.d.ts +59 -0
- package/dist/ssrf-protection.d.ts.map +1 -0
- package/dist/ssrf-protection.js +253 -0
- package/dist/ssrf-protection.js.map +1 -0
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/gateway.js
CHANGED
|
@@ -14,10 +14,14 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
16
16
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
17
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
18
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
17
19
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
18
20
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
19
21
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
20
22
|
import { SonomaClient } from "./sonoma-client.js";
|
|
23
|
+
import { matchesToolPattern, getPatternSpecificity } from "./pattern-matcher.js";
|
|
24
|
+
import { UpstreamTokenStore, authenticateUpstream } from "./auth/index.js";
|
|
21
25
|
// Timeout configuration
|
|
22
26
|
const CONNECT_TIMEOUT_MS = 10_000; // 10 seconds
|
|
23
27
|
const TOOL_CALL_TIMEOUT_MS = 30_000; // 30 seconds
|
|
@@ -35,10 +39,12 @@ export class McpGateway {
|
|
|
35
39
|
sonomaClient = null;
|
|
36
40
|
policy = null;
|
|
37
41
|
policyRefreshInterval = null;
|
|
42
|
+
upstreamTokenStore;
|
|
38
43
|
started = false;
|
|
39
44
|
constructor(config) {
|
|
40
45
|
this.config = config;
|
|
41
46
|
this.debug = config.debug ?? false;
|
|
47
|
+
this.upstreamTokenStore = new UpstreamTokenStore();
|
|
42
48
|
// Initialize Sonoma client if endpoint provided
|
|
43
49
|
// Auth priority: OAuth token (user-linked) > org API key (device-level)
|
|
44
50
|
if (config.sonomaEndpoint) {
|
|
@@ -53,49 +59,108 @@ export class McpGateway {
|
|
|
53
59
|
version: "0.1.0",
|
|
54
60
|
}, {
|
|
55
61
|
capabilities: {
|
|
56
|
-
tools: {},
|
|
62
|
+
tools: { listChanged: true },
|
|
57
63
|
},
|
|
58
64
|
});
|
|
59
65
|
this.setupHandlers();
|
|
60
66
|
}
|
|
61
67
|
log(message, ...args) {
|
|
62
68
|
if (this.debug) {
|
|
63
|
-
|
|
69
|
+
// Security: message is from developer code, not user input
|
|
70
|
+
console.error(`[gateway] ${message}`, ...args); // nosemgrep: unsafe-formatstring
|
|
64
71
|
}
|
|
65
72
|
}
|
|
66
73
|
/**
|
|
67
74
|
* Check if a tool is blocked by policy
|
|
75
|
+
*
|
|
76
|
+
* Supports both server-level and tool-level blocking:
|
|
77
|
+
* - Server-level: `toolPattern = null` blocks/allows entire server
|
|
78
|
+
* - Tool-level: `toolPattern = "read_*"` blocks/allows specific tools
|
|
79
|
+
*
|
|
80
|
+
* Priority ordering: higher priority wins, then more specific patterns
|
|
81
|
+
* Deny wins: in case of equal priority, blocked status takes precedence
|
|
82
|
+
*
|
|
68
83
|
* @returns true if blocked, false if allowed
|
|
69
84
|
*/
|
|
70
85
|
isToolBlocked(serverName, toolName) {
|
|
71
86
|
if (!this.policy || this.policy.mode === "disabled") {
|
|
72
87
|
return false;
|
|
73
88
|
}
|
|
74
|
-
// Get identifiers to check
|
|
89
|
+
// Get server identifiers to check
|
|
75
90
|
const upstream = this.upstreams.get(serverName);
|
|
76
91
|
const packageName = upstream?.config.packageName;
|
|
77
|
-
//
|
|
78
|
-
const
|
|
92
|
+
// Build set of identifiers: packageName (preferred) or server name
|
|
93
|
+
const serverIdentifiers = new Set();
|
|
79
94
|
if (packageName)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
//
|
|
83
|
-
const
|
|
95
|
+
serverIdentifiers.add(packageName);
|
|
96
|
+
serverIdentifiers.add(serverName);
|
|
97
|
+
// Find all matching rules (server-level and tool-level)
|
|
98
|
+
const matchingRules = this.policy.list.filter((rule) => {
|
|
99
|
+
// Check if server identifier matches (or rule is global with "*")
|
|
100
|
+
const serverMatches = serverIdentifiers.has(rule.identifier) || rule.identifier === "*";
|
|
101
|
+
if (!serverMatches)
|
|
102
|
+
return false;
|
|
103
|
+
// Check tool pattern match
|
|
104
|
+
if (!rule.toolPattern) {
|
|
105
|
+
// Server-level rule - applies to all tools on this server
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
// Tool-level rule - check if pattern matches the tool name
|
|
109
|
+
return matchesToolPattern(toolName, rule.toolPattern);
|
|
110
|
+
});
|
|
111
|
+
// No matching rules found
|
|
112
|
+
if (matchingRules.length === 0) {
|
|
113
|
+
if (this.policy.mode === "blocklist") {
|
|
114
|
+
// Blocklist with no matches = not blocked
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
if (this.policy.mode === "allowlist") {
|
|
118
|
+
// Allowlist with no matches = blocked (not explicitly allowed)
|
|
119
|
+
this.log(`Tool not in allowlist: ${serverName}.${toolName}`);
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
// Sort rules by priority (higher first), then by pattern specificity (more specific first)
|
|
125
|
+
const sortedRules = [...matchingRules].sort((a, b) => {
|
|
126
|
+
// First sort by explicit priority (higher wins)
|
|
127
|
+
if (a.priority !== b.priority)
|
|
128
|
+
return b.priority - a.priority;
|
|
129
|
+
// Then by pattern specificity (more specific wins)
|
|
130
|
+
const specA = getPatternSpecificity(a.toolPattern);
|
|
131
|
+
const specB = getPatternSpecificity(b.toolPattern);
|
|
132
|
+
return specB - specA;
|
|
133
|
+
});
|
|
134
|
+
// Get the highest priority rule
|
|
135
|
+
const topRule = sortedRules[0];
|
|
136
|
+
// Find if there's a deny rule at the same priority level
|
|
137
|
+
const topPriority = topRule.priority;
|
|
138
|
+
const topSpecificity = getPatternSpecificity(topRule.toolPattern);
|
|
139
|
+
const denyAtTopLevel = sortedRules.find((r) => r.status === "blocked" &&
|
|
140
|
+
r.priority === topPriority &&
|
|
141
|
+
getPatternSpecificity(r.toolPattern) === topSpecificity);
|
|
84
142
|
if (this.policy.mode === "blocklist") {
|
|
85
|
-
// Blocklist: block if
|
|
86
|
-
|
|
87
|
-
|
|
143
|
+
// Blocklist: block if any matching rule says "blocked"
|
|
144
|
+
// Deny wins at same priority level
|
|
145
|
+
if (denyAtTopLevel) {
|
|
146
|
+
this.log(`Tool blocked by policy: ${serverName}.${toolName} (pattern: ${denyAtTopLevel.toolPattern ?? "server-level"})`);
|
|
88
147
|
return true;
|
|
89
148
|
}
|
|
90
149
|
return false;
|
|
91
150
|
}
|
|
92
151
|
if (this.policy.mode === "allowlist") {
|
|
93
|
-
// Allowlist:
|
|
94
|
-
|
|
95
|
-
|
|
152
|
+
// Allowlist: allow only if there's an "allowed" rule
|
|
153
|
+
// But deny wins at same priority level
|
|
154
|
+
if (denyAtTopLevel) {
|
|
155
|
+
this.log(`Tool blocked by deny rule: ${serverName}.${toolName} (pattern: ${denyAtTopLevel.toolPattern ?? "server-level"})`);
|
|
96
156
|
return true;
|
|
97
157
|
}
|
|
98
|
-
|
|
158
|
+
// Check if top rule allows
|
|
159
|
+
if (topRule.status === "allowed") {
|
|
160
|
+
return false; // Allowed
|
|
161
|
+
}
|
|
162
|
+
this.log(`Tool not in allowlist: ${serverName}.${toolName}`);
|
|
163
|
+
return true; // No allow rule = blocked
|
|
99
164
|
}
|
|
100
165
|
return false;
|
|
101
166
|
}
|
|
@@ -230,16 +295,12 @@ export class McpGateway {
|
|
|
230
295
|
});
|
|
231
296
|
}
|
|
232
297
|
/**
|
|
233
|
-
*
|
|
298
|
+
* Create a stdio transport for command-based servers.
|
|
234
299
|
*/
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
version: "0.1.0",
|
|
240
|
-
}, {
|
|
241
|
-
capabilities: {},
|
|
242
|
-
});
|
|
300
|
+
createStdioTransport(config) {
|
|
301
|
+
if (!config.command) {
|
|
302
|
+
throw new Error(`Server ${config.name} has neither url nor command`);
|
|
303
|
+
}
|
|
243
304
|
// Build env with only defined values (filter out undefined from process.env)
|
|
244
305
|
let env;
|
|
245
306
|
if (config.env) {
|
|
@@ -251,27 +312,121 @@ export class McpGateway {
|
|
|
251
312
|
}
|
|
252
313
|
Object.assign(env, config.env);
|
|
253
314
|
}
|
|
254
|
-
|
|
315
|
+
return new StdioClientTransport({
|
|
255
316
|
command: config.command,
|
|
256
317
|
args: config.args,
|
|
257
318
|
env,
|
|
258
319
|
cwd: config.cwd,
|
|
259
320
|
});
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Build HTTP request options from config headers.
|
|
324
|
+
*/
|
|
325
|
+
getHttpRequestInit(config) {
|
|
326
|
+
if (config.headers && Object.keys(config.headers).length > 0) {
|
|
327
|
+
return { headers: config.headers };
|
|
328
|
+
}
|
|
329
|
+
return undefined;
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Connect a client to a transport with a timeout.
|
|
333
|
+
*/
|
|
334
|
+
async connectWithTimeout(client, transport, name) {
|
|
335
|
+
const connectPromise = client.connect(transport);
|
|
336
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
337
|
+
setTimeout(() => reject(new Error(`Connection timeout after ${CONNECT_TIMEOUT_MS}ms: ${name}`)), CONNECT_TIMEOUT_MS);
|
|
338
|
+
});
|
|
339
|
+
await Promise.race([connectPromise, timeoutPromise]);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Connect to an upstream MCP server.
|
|
343
|
+
* For URL-based servers, tries StreamableHTTP first, then falls back to SSE.
|
|
344
|
+
*/
|
|
345
|
+
async connectUpstream(config, existingConnection) {
|
|
346
|
+
const label = config.url ?? config.command ?? config.name;
|
|
347
|
+
this.log(`Connecting to upstream: ${config.name} (${label})`);
|
|
348
|
+
const serverName = config.name;
|
|
349
|
+
const makeClient = () => new Client({
|
|
350
|
+
name: `gateway-client-${serverName}`,
|
|
351
|
+
version: "0.1.0",
|
|
352
|
+
}, {
|
|
353
|
+
capabilities: {},
|
|
354
|
+
listChanged: {
|
|
355
|
+
tools: {
|
|
356
|
+
autoRefresh: true,
|
|
357
|
+
debounceMs: 200,
|
|
358
|
+
onChanged: (error, tools) => {
|
|
359
|
+
if (error) {
|
|
360
|
+
this.log(`Failed to refresh tools from ${serverName}: ${error.message}`);
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
const upstream = this.upstreams.get(serverName);
|
|
364
|
+
if (upstream) {
|
|
365
|
+
upstream.tools = tools || [];
|
|
366
|
+
this.log(`Tools updated from ${serverName}: ${upstream.tools.length} tools`);
|
|
367
|
+
}
|
|
368
|
+
this.server.sendToolListChanged().catch((err) => {
|
|
369
|
+
this.log(`Failed to notify client of tool list change: ${err}`);
|
|
370
|
+
});
|
|
371
|
+
},
|
|
372
|
+
},
|
|
373
|
+
},
|
|
374
|
+
});
|
|
375
|
+
let client;
|
|
376
|
+
let transport;
|
|
377
|
+
if (config.url) {
|
|
378
|
+
const url = new URL(config.url);
|
|
379
|
+
const requestInit = this.getHttpRequestInit(config);
|
|
380
|
+
// Try OAuth pre-auth for HTTP servers (discovers if server needs OAuth)
|
|
381
|
+
let authProvider;
|
|
382
|
+
try {
|
|
383
|
+
authProvider = await authenticateUpstream({
|
|
384
|
+
serverUrl: config.url,
|
|
385
|
+
serverName: config.name,
|
|
386
|
+
store: this.upstreamTokenStore,
|
|
387
|
+
debug: this.debug,
|
|
388
|
+
});
|
|
389
|
+
this.log(` ${config.name}: OAuth pre-auth succeeded`);
|
|
390
|
+
}
|
|
391
|
+
catch (err) {
|
|
392
|
+
// Server may not require OAuth, or user declined; try without auth
|
|
393
|
+
this.log(` ${config.name}: OAuth pre-auth skipped (${err instanceof Error ? err.message : err})`);
|
|
394
|
+
}
|
|
395
|
+
// Try StreamableHTTP first, fall back to SSE
|
|
396
|
+
try {
|
|
397
|
+
client = makeClient();
|
|
398
|
+
transport = new StreamableHTTPClientTransport(url, { requestInit, authProvider });
|
|
399
|
+
await this.connectWithTimeout(client, transport, config.name);
|
|
400
|
+
this.log(` ${config.name}: connected via StreamableHTTP`);
|
|
401
|
+
}
|
|
402
|
+
catch {
|
|
403
|
+
this.log(` ${config.name}: StreamableHTTP failed, trying SSE`);
|
|
404
|
+
client = makeClient();
|
|
405
|
+
transport = new SSEClientTransport(url, { requestInit, authProvider });
|
|
406
|
+
await this.connectWithTimeout(client, transport, config.name);
|
|
407
|
+
this.log(` ${config.name}: connected via SSE`);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
client = makeClient();
|
|
412
|
+
transport = this.createStdioTransport(config);
|
|
413
|
+
await this.connectWithTimeout(client, transport, config.name);
|
|
414
|
+
}
|
|
260
415
|
// Set up close handler for auto-reconnect
|
|
261
416
|
transport.onclose = () => {
|
|
262
417
|
const upstream = this.upstreams.get(config.name);
|
|
263
418
|
if (upstream) {
|
|
264
419
|
upstream.connected = false;
|
|
265
420
|
this.log(`Upstream disconnected: ${config.name}`);
|
|
421
|
+
// Notify AI client that tools changed (disconnected server's tools are no longer available)
|
|
422
|
+
if (upstream.tools.length > 0) {
|
|
423
|
+
this.server.sendToolListChanged().catch((err) => {
|
|
424
|
+
this.log(`Failed to notify client of tool list change: ${err}`);
|
|
425
|
+
});
|
|
426
|
+
}
|
|
266
427
|
this.scheduleReconnect(config.name);
|
|
267
428
|
}
|
|
268
429
|
};
|
|
269
|
-
// Connect with timeout
|
|
270
|
-
const connectPromise = client.connect(transport);
|
|
271
|
-
const timeoutPromise = new Promise((_, reject) => {
|
|
272
|
-
setTimeout(() => reject(new Error(`Connection timeout after ${CONNECT_TIMEOUT_MS}ms: ${config.name}`)), CONNECT_TIMEOUT_MS);
|
|
273
|
-
});
|
|
274
|
-
await Promise.race([connectPromise, timeoutPromise]);
|
|
275
430
|
// Fetch tools from this upstream (also with timeout)
|
|
276
431
|
const listToolsPromise = client.listTools();
|
|
277
432
|
const listToolsTimeout = new Promise((_, reject) => {
|
|
@@ -308,10 +463,21 @@ export class McpGateway {
|
|
|
308
463
|
if (!this.started)
|
|
309
464
|
return;
|
|
310
465
|
try {
|
|
466
|
+
const oldToolNames = new Set(upstream.tools.map((t) => t.name));
|
|
311
467
|
const newUpstream = await this.connectUpstream(upstream.config, upstream);
|
|
312
468
|
newUpstream.reconnectAttempts = 0; // Reset on successful reconnect
|
|
313
469
|
this.upstreams.set(serverName, newUpstream);
|
|
314
470
|
this.log(`Reconnected to ${serverName}`);
|
|
471
|
+
// Notify AI client if tools changed during disconnect
|
|
472
|
+
const newToolNames = new Set(newUpstream.tools.map((t) => t.name));
|
|
473
|
+
const toolsChanged = oldToolNames.size !== newToolNames.size ||
|
|
474
|
+
[...oldToolNames].some((name) => !newToolNames.has(name));
|
|
475
|
+
if (toolsChanged) {
|
|
476
|
+
this.log(`Tools changed on ${serverName} after reconnect`);
|
|
477
|
+
this.server.sendToolListChanged().catch((err) => {
|
|
478
|
+
this.log(`Failed to notify client of tool list change: ${err}`);
|
|
479
|
+
});
|
|
480
|
+
}
|
|
315
481
|
}
|
|
316
482
|
catch (error) {
|
|
317
483
|
this.log(`Reconnect failed for ${serverName}: ${error}`);
|
|
@@ -362,8 +528,11 @@ export class McpGateway {
|
|
|
362
528
|
this.log(`Policy refresh error: ${err}`);
|
|
363
529
|
});
|
|
364
530
|
}, 5 * 60 * 1000);
|
|
365
|
-
// Start periodic telemetry flush
|
|
366
|
-
|
|
531
|
+
// Start periodic telemetry flush
|
|
532
|
+
// Default: 30 seconds, configurable via env for testing
|
|
533
|
+
const parsedFlushMs = parseInt(process.env.SONOMA_TELEMETRY_FLUSH_MS ?? "30000", 10);
|
|
534
|
+
const flushIntervalMs = Number.isNaN(parsedFlushMs) ? 30000 : parsedFlushMs;
|
|
535
|
+
this.sonomaClient.startTelemetryFlush(flushIntervalMs);
|
|
367
536
|
}
|
|
368
537
|
// Connect to all upstream servers
|
|
369
538
|
for (const serverConfig of this.config.servers) {
|
|
@@ -372,11 +541,28 @@ export class McpGateway {
|
|
|
372
541
|
this.upstreams.set(serverConfig.name, upstream);
|
|
373
542
|
}
|
|
374
543
|
catch (error) {
|
|
375
|
-
|
|
544
|
+
// Security: serverConfig.name is from config, not user input
|
|
545
|
+
console.error(`Failed to connect to ${serverConfig.name}:`, error); // nosemgrep: unsafe-formatstring
|
|
376
546
|
// Continue with other servers
|
|
377
547
|
}
|
|
378
548
|
}
|
|
379
549
|
this.log(`Connected to ${this.upstreams.size}/${this.config.servers.length} upstreams`);
|
|
550
|
+
// Report discovered tools to Sonoma
|
|
551
|
+
if (this.sonomaClient) {
|
|
552
|
+
const serversWithTools = Array.from(this.upstreams.entries()).map(([serverName, upstream]) => ({
|
|
553
|
+
serverIdentifier: upstream.config.packageName || serverName,
|
|
554
|
+
serverName,
|
|
555
|
+
tools: upstream.tools.map((tool) => ({
|
|
556
|
+
name: tool.name,
|
|
557
|
+
description: tool.description,
|
|
558
|
+
inputSchema: tool.inputSchema,
|
|
559
|
+
})),
|
|
560
|
+
}));
|
|
561
|
+
// Fire and forget - don't block startup
|
|
562
|
+
this.sonomaClient.reportTools(serversWithTools).catch((err) => {
|
|
563
|
+
this.log(`Failed to report tools: ${err}`);
|
|
564
|
+
});
|
|
565
|
+
}
|
|
380
566
|
// Start the server (stdio transport to AI client)
|
|
381
567
|
const transport = new StdioServerTransport();
|
|
382
568
|
await this.server.connect(transport);
|
|
@@ -408,6 +594,9 @@ export class McpGateway {
|
|
|
408
594
|
this.log(`Disconnected from ${name}`);
|
|
409
595
|
}
|
|
410
596
|
catch (error) {
|
|
597
|
+
// Security: `name` comes from this.upstreams Map keys, which are MCP server names
|
|
598
|
+
// from admin-controlled config (serverConfig.name), not user input.
|
|
599
|
+
// nosemgrep: javascript.lang.security.audit.unsafe-formatstring.unsafe-formatstring
|
|
411
600
|
console.error(`Error disconnecting from ${name}:`, error);
|
|
412
601
|
}
|
|
413
602
|
}
|
package/dist/gateway.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gateway.js","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
* Proxies MCP servers and reports telemetry to Sonoma.
|
|
6
6
|
*/
|
|
7
7
|
export { McpGateway } from "./gateway.js";
|
|
8
|
-
export { loadConfig, findClaudeDesktopConfig, createTestConfig } from "./config.js";
|
|
8
|
+
export { loadConfig, findClaudeDesktopConfig, createTestConfig, autoDetectConfig, getMcpConfigPaths, type McpConfigLocation } from "./config.js";
|
|
9
9
|
export type { GatewayConfig, McpServerConfig, ToolCallEvent, ToolInfo, UpstreamServer, } from "./types.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACjJ,YAAY,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,EACR,cAAc,GACf,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* Proxies MCP servers and reports telemetry to Sonoma.
|
|
6
6
|
*/
|
|
7
7
|
export { McpGateway } from "./gateway.js";
|
|
8
|
-
export { loadConfig, findClaudeDesktopConfig, createTestConfig } from "./config.js";
|
|
8
|
+
export { loadConfig, findClaudeDesktopConfig, createTestConfig, autoDetectConfig, getMcpConfigPaths } from "./config.js";
|
|
9
9
|
//# 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;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAA0B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern matching utilities for tool-level blocking
|
|
3
|
+
*
|
|
4
|
+
* Supports simple glob patterns with * as wildcard:
|
|
5
|
+
* - "read_*" matches "read_file", "read_directory"
|
|
6
|
+
* - "*_delete" matches "user_delete", "file_delete"
|
|
7
|
+
* - "get_*_info" matches "get_user_info", "get_file_info"
|
|
8
|
+
* - "*" matches everything (universal wildcard)
|
|
9
|
+
* - "exact_name" requires exact match
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Check if a tool name matches a glob pattern
|
|
13
|
+
*
|
|
14
|
+
* @param toolName - The actual tool name to check
|
|
15
|
+
* @param pattern - The pattern to match against (supports * as wildcard)
|
|
16
|
+
* @returns true if the tool name matches the pattern
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* matchesToolPattern("read_file", "read_*") // true
|
|
20
|
+
* matchesToolPattern("write_file", "read_*") // false
|
|
21
|
+
* matchesToolPattern("user_delete", "*_delete") // true
|
|
22
|
+
* matchesToolPattern("get_user_info", "get_*_info") // true
|
|
23
|
+
* matchesToolPattern("anything", "*") // true
|
|
24
|
+
*/
|
|
25
|
+
export declare function matchesToolPattern(toolName: string, pattern: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Calculate pattern specificity for priority ordering
|
|
28
|
+
* Higher value = more specific pattern = higher priority in conflict resolution
|
|
29
|
+
*
|
|
30
|
+
* @param pattern - The tool pattern (null for server-level rules)
|
|
31
|
+
* @returns Specificity score (higher = more specific)
|
|
32
|
+
*
|
|
33
|
+
* Specificity levels:
|
|
34
|
+
* - 0: Server-level rule (null pattern) - applies to all tools
|
|
35
|
+
* - 1: Universal wildcard ("*")
|
|
36
|
+
* - 10+: Pattern with wildcards (more non-wildcard chars = more specific)
|
|
37
|
+
* - 100: Exact tool name (no wildcards)
|
|
38
|
+
*/
|
|
39
|
+
export declare function getPatternSpecificity(pattern: string | null): number;
|
|
40
|
+
/**
|
|
41
|
+
* Validate a tool pattern format
|
|
42
|
+
*
|
|
43
|
+
* @param pattern - The pattern to validate
|
|
44
|
+
* @returns true if the pattern is valid
|
|
45
|
+
*/
|
|
46
|
+
export declare function isValidToolPattern(pattern: string): boolean;
|
|
47
|
+
//# sourceMappingURL=pattern-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-matcher.d.ts","sourceRoot":"","sources":["../src/pattern-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CA0B7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAepE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAW3D"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern matching utilities for tool-level blocking
|
|
3
|
+
*
|
|
4
|
+
* Supports simple glob patterns with * as wildcard:
|
|
5
|
+
* - "read_*" matches "read_file", "read_directory"
|
|
6
|
+
* - "*_delete" matches "user_delete", "file_delete"
|
|
7
|
+
* - "get_*_info" matches "get_user_info", "get_file_info"
|
|
8
|
+
* - "*" matches everything (universal wildcard)
|
|
9
|
+
* - "exact_name" requires exact match
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Check if a tool name matches a glob pattern
|
|
13
|
+
*
|
|
14
|
+
* @param toolName - The actual tool name to check
|
|
15
|
+
* @param pattern - The pattern to match against (supports * as wildcard)
|
|
16
|
+
* @returns true if the tool name matches the pattern
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* matchesToolPattern("read_file", "read_*") // true
|
|
20
|
+
* matchesToolPattern("write_file", "read_*") // false
|
|
21
|
+
* matchesToolPattern("user_delete", "*_delete") // true
|
|
22
|
+
* matchesToolPattern("get_user_info", "get_*_info") // true
|
|
23
|
+
* matchesToolPattern("anything", "*") // true
|
|
24
|
+
*/
|
|
25
|
+
export function matchesToolPattern(toolName, pattern) {
|
|
26
|
+
// Exact match - fast path
|
|
27
|
+
if (pattern === toolName)
|
|
28
|
+
return true;
|
|
29
|
+
// Universal wildcard - matches everything
|
|
30
|
+
if (pattern === "*")
|
|
31
|
+
return true;
|
|
32
|
+
// No wildcards in pattern - must be exact match (already checked above)
|
|
33
|
+
if (!pattern.includes("*"))
|
|
34
|
+
return false;
|
|
35
|
+
// Convert glob pattern to regex
|
|
36
|
+
// Escape special regex characters except *
|
|
37
|
+
const escaped = pattern.replace(/[.+?^${}()|[\]\\]/g, "\\$&");
|
|
38
|
+
// Convert * to .* for regex matching
|
|
39
|
+
const regexPattern = `^${escaped.replace(/\*/g, ".*")}$`;
|
|
40
|
+
try {
|
|
41
|
+
// Security: Pattern is validated by isValidToolPattern (restricts to [a-zA-Z0-9_\-*./]+)
|
|
42
|
+
// and special regex chars are escaped above. Input is from admin config, not untrusted users.
|
|
43
|
+
// nosemgrep: javascript.lang.security.audit.detect-non-literal-regexp.detect-non-literal-regexp
|
|
44
|
+
const regex = new RegExp(regexPattern);
|
|
45
|
+
return regex.test(toolName);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Invalid regex pattern - fall back to no match
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Calculate pattern specificity for priority ordering
|
|
54
|
+
* Higher value = more specific pattern = higher priority in conflict resolution
|
|
55
|
+
*
|
|
56
|
+
* @param pattern - The tool pattern (null for server-level rules)
|
|
57
|
+
* @returns Specificity score (higher = more specific)
|
|
58
|
+
*
|
|
59
|
+
* Specificity levels:
|
|
60
|
+
* - 0: Server-level rule (null pattern) - applies to all tools
|
|
61
|
+
* - 1: Universal wildcard ("*")
|
|
62
|
+
* - 10+: Pattern with wildcards (more non-wildcard chars = more specific)
|
|
63
|
+
* - 100: Exact tool name (no wildcards)
|
|
64
|
+
*/
|
|
65
|
+
export function getPatternSpecificity(pattern) {
|
|
66
|
+
// Server-level rule (no tool pattern)
|
|
67
|
+
if (!pattern)
|
|
68
|
+
return 0;
|
|
69
|
+
// Universal wildcard
|
|
70
|
+
if (pattern === "*")
|
|
71
|
+
return 1;
|
|
72
|
+
// Pattern with wildcards - count non-wildcard characters for specificity
|
|
73
|
+
if (pattern.includes("*")) {
|
|
74
|
+
const nonWildcardLength = pattern.replace(/\*/g, "").length;
|
|
75
|
+
return 10 + nonWildcardLength;
|
|
76
|
+
}
|
|
77
|
+
// Exact match (no wildcards) - most specific
|
|
78
|
+
return 100;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validate a tool pattern format
|
|
82
|
+
*
|
|
83
|
+
* @param pattern - The pattern to validate
|
|
84
|
+
* @returns true if the pattern is valid
|
|
85
|
+
*/
|
|
86
|
+
export function isValidToolPattern(pattern) {
|
|
87
|
+
// Empty patterns are invalid
|
|
88
|
+
if (!pattern || pattern.trim() === "")
|
|
89
|
+
return false;
|
|
90
|
+
// Pattern must not be too long
|
|
91
|
+
if (pattern.length > 255)
|
|
92
|
+
return false;
|
|
93
|
+
// Pattern should only contain valid characters
|
|
94
|
+
// Allow alphanumeric, underscore, hyphen, asterisk, and common chars
|
|
95
|
+
const validPattern = /^[a-zA-Z0-9_\-*./]+$/;
|
|
96
|
+
return validPattern.test(pattern);
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=pattern-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../src/pattern-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAClE,0BAA0B;IAC1B,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAEtC,0CAA0C;IAC1C,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAEjC,wEAAwE;IACxE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAEzC,gCAAgC;IAChC,2CAA2C;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IAC9D,qCAAqC;IACrC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC;IAEzD,IAAI,CAAC;QACH,yFAAyF;QACzF,8FAA8F;QAC9F,gGAAgG;QAChG,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAsB;IAC1D,sCAAsC;IACtC,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAC;IAEvB,qBAAqB;IACrB,IAAI,OAAO,KAAK,GAAG;QAAE,OAAO,CAAC,CAAC;IAE9B,yEAAyE;IACzE,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC;QAC5D,OAAO,EAAE,GAAG,iBAAiB,CAAC;IAChC,CAAC;IAED,6CAA6C;IAC7C,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,6BAA6B;IAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAEpD,+BAA+B;IAC/B,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAEvC,+CAA+C;IAC/C,qEAAqE;IACrE,MAAM,YAAY,GAAG,sBAAsB,CAAC;IAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
|