@sonoma-security/mcp-gateway 0.1.12 → 0.1.14

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.
Files changed (53) hide show
  1. package/dist/__tests__/config.test.js +140 -2
  2. package/dist/__tests__/config.test.js.map +1 -1
  3. package/dist/__tests__/plugin-discovery.test.d.ts +12 -0
  4. package/dist/__tests__/plugin-discovery.test.d.ts.map +1 -0
  5. package/dist/__tests__/plugin-discovery.test.js +367 -0
  6. package/dist/__tests__/plugin-discovery.test.js.map +1 -0
  7. package/dist/__tests__/tool-blocking.test.d.ts +2 -0
  8. package/dist/__tests__/tool-blocking.test.d.ts.map +1 -0
  9. package/dist/__tests__/tool-blocking.test.js +256 -0
  10. package/dist/__tests__/tool-blocking.test.js.map +1 -0
  11. package/dist/auth/keychain.d.ts +34 -0
  12. package/dist/auth/keychain.d.ts.map +1 -0
  13. package/dist/auth/keychain.js +305 -0
  14. package/dist/auth/keychain.js.map +1 -0
  15. package/dist/auth/storage.d.ts +5 -6
  16. package/dist/auth/storage.d.ts.map +1 -1
  17. package/dist/auth/storage.js +72 -21
  18. package/dist/auth/storage.js.map +1 -1
  19. package/dist/auth/upstream-oauth.d.ts.map +1 -1
  20. package/dist/auth/upstream-oauth.js +8 -5
  21. package/dist/auth/upstream-oauth.js.map +1 -1
  22. package/dist/auth/upstream-token-store.d.ts +18 -6
  23. package/dist/auth/upstream-token-store.d.ts.map +1 -1
  24. package/dist/auth/upstream-token-store.js +127 -35
  25. package/dist/auth/upstream-token-store.js.map +1 -1
  26. package/dist/cli.js +48 -2
  27. package/dist/cli.js.map +1 -1
  28. package/dist/config.d.ts.map +1 -1
  29. package/dist/config.js +122 -27
  30. package/dist/config.js.map +1 -1
  31. package/dist/gateway.d.ts +15 -0
  32. package/dist/gateway.d.ts.map +1 -1
  33. package/dist/gateway.js +302 -68
  34. package/dist/gateway.js.map +1 -1
  35. package/dist/http-proxy.d.ts +126 -0
  36. package/dist/http-proxy.d.ts.map +1 -0
  37. package/dist/http-proxy.js +875 -0
  38. package/dist/http-proxy.js.map +1 -0
  39. package/dist/index.d.ts +3 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/pattern-matcher.d.ts +25 -0
  44. package/dist/pattern-matcher.d.ts.map +1 -1
  45. package/dist/pattern-matcher.js +65 -0
  46. package/dist/pattern-matcher.js.map +1 -1
  47. package/dist/sonoma-client.d.ts +17 -1
  48. package/dist/sonoma-client.d.ts.map +1 -1
  49. package/dist/sonoma-client.js +67 -43
  50. package/dist/sonoma-client.js.map +1 -1
  51. package/dist/types.d.ts +14 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +1 -1
package/dist/gateway.js CHANGED
@@ -19,8 +19,9 @@ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
19
19
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
20
20
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
21
21
  import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
22
+ import { HttpProxyServer } from "./http-proxy.js";
22
23
  import { SonomaClient } from "./sonoma-client.js";
23
- import { matchesToolPattern, getPatternSpecificity } from "./pattern-matcher.js";
24
+ import { isToolBlockedByPolicy } from "./pattern-matcher.js";
24
25
  import { evaluatePromptGuards } from "./prompt-guard.js";
25
26
  import { UpstreamTokenStore, authenticateUpstream } from "./auth/index.js";
26
27
  // Timeout configuration
@@ -43,6 +44,11 @@ export class McpGateway {
43
44
  upstreamTokenStore;
44
45
  started = false;
45
46
  clientName = null;
47
+ httpProxy = null;
48
+ // Servers that need OAuth but haven't completed it yet.
49
+ // Keyed by server name, stores config + callback port for retry.
50
+ pendingAuth = new Map();
51
+ pendingAuthRetryInterval = null;
46
52
  // Resolves when initial upstream connections are done (success or fail).
47
53
  // The tools/list handler waits on this so the first call returns actual tools
48
54
  // instead of an empty list (Claude Code doesn't honor tools/list_changed).
@@ -91,58 +97,29 @@ export class McpGateway {
91
97
  */
92
98
  isToolBlocked(serverName, toolName) {
93
99
  if (!this.policy) {
100
+ this.log(`isToolBlocked: no policy loaded, allowing ${serverName}.${toolName}`);
94
101
  return false;
95
102
  }
96
- // Get server identifiers to check
97
103
  const upstream = this.upstreams.get(serverName);
98
104
  const packageName = upstream?.config.packageName;
99
- // Build set of identifiers: packageName (preferred) or server name
100
- const serverIdentifiers = new Set();
101
- if (packageName)
102
- serverIdentifiers.add(packageName);
103
- serverIdentifiers.add(serverName);
104
- // Find all matching rules (server-level and tool-level)
105
- const matchingRules = this.policy.list.filter((rule) => {
106
- // Check if server identifier matches (or rule is global with "*")
107
- const serverMatches = serverIdentifiers.has(rule.identifier) || rule.identifier === "*";
108
- if (!serverMatches)
109
- return false;
110
- // Check tool pattern match
111
- if (!rule.toolPattern) {
112
- // Server-level rule - applies to all tools on this server
113
- return true;
105
+ const url = upstream?.config.url;
106
+ // Resolve additional identifiers from the policy's alias map.
107
+ // e.g. if the server URL is "https://mcp.slack.com/mcp", aliases
108
+ // might include "slack-mcp-server" (the canonical package name).
109
+ const extraIdentifiers = [];
110
+ if (this.policy.identifierAliases) {
111
+ const sources = [serverName, packageName, url].filter(Boolean);
112
+ for (const src of sources) {
113
+ const aliases = this.policy.identifierAliases[src];
114
+ if (aliases)
115
+ extraIdentifiers.push(...aliases);
114
116
  }
115
- // Tool-level rule - check if pattern matches the tool name
116
- return matchesToolPattern(toolName, rule.toolPattern);
117
- });
118
- // No matching rules = not blocked (unlisted servers are allowed)
119
- if (matchingRules.length === 0) {
120
- return false;
121
117
  }
122
- // Sort rules by priority (higher first), then by pattern specificity (more specific first)
123
- const sortedRules = [...matchingRules].sort((a, b) => {
124
- // First sort by explicit priority (higher wins)
125
- if (a.priority !== b.priority)
126
- return b.priority - a.priority;
127
- // Then by pattern specificity (more specific wins)
128
- const specA = getPatternSpecificity(a.toolPattern);
129
- const specB = getPatternSpecificity(b.toolPattern);
130
- return specB - specA;
131
- });
132
- // Get the highest priority rule
133
- const topRule = sortedRules[0];
134
- // Find if there's a deny rule at the same priority level
135
- const topPriority = topRule.priority;
136
- const topSpecificity = getPatternSpecificity(topRule.toolPattern);
137
- const denyAtTopLevel = sortedRules.find((r) => r.status === "blocked" &&
138
- r.priority === topPriority &&
139
- getPatternSpecificity(r.toolPattern) === topSpecificity);
140
- // Block if any matching rule says "blocked" (deny wins at same priority)
141
- if (denyAtTopLevel) {
142
- this.log(`Tool blocked by policy: ${serverName}.${toolName} (pattern: ${denyAtTopLevel.toolPattern ?? "server-level"})`);
143
- return true;
118
+ const blocked = isToolBlockedByPolicy(this.policy.list, serverName, toolName, packageName, url, extraIdentifiers);
119
+ if (blocked) {
120
+ this.log(`Tool blocked by policy: ${serverName}.${toolName}`);
144
121
  }
145
- return false;
122
+ return blocked;
146
123
  }
147
124
  /**
148
125
  * Check if an upstream server's OAuth session has exceeded the org-configured lifetime.
@@ -165,6 +142,13 @@ export class McpGateway {
165
142
  setupHandlers() {
166
143
  // Handle tools/list - aggregate tools from all upstreams
167
144
  this.server.setRequestHandler(ListToolsRequestSchema, async () => {
145
+ // When the HTTP proxy is active, tools are accessed via proxy URLs
146
+ // (e.g., localhost:19880/proxy/slack/mcp) through plugin .mcp.json
147
+ // entries. Don't expose them again via stdio to avoid duplicates.
148
+ if (this.config.httpProxyPort) {
149
+ this.log("tools/list: HTTP proxy active, returning empty list (tools served via proxy)");
150
+ return { tools: [] };
151
+ }
168
152
  // Wait for upstream connections to complete before returning tools.
169
153
  // Claude Code calls tools/list immediately during the handshake (before
170
154
  // upstreams connect) and does NOT call it again when tools/list_changed
@@ -225,6 +209,19 @@ export class McpGateway {
225
209
  const toolName = name.slice(separatorIndex + 2);
226
210
  const upstream = this.upstreams.get(serverName);
227
211
  if (!upstream) {
212
+ // Check if server is pending OAuth authentication
213
+ const pending = this.pendingAuth.get(serverName);
214
+ if (pending) {
215
+ return {
216
+ isError: true,
217
+ content: [
218
+ {
219
+ type: "text",
220
+ text: `Server ${serverName} requires OAuth authentication. The user needs to complete the authorization flow in their browser. The gateway will automatically connect once authentication is complete.`,
221
+ },
222
+ ],
223
+ };
224
+ }
228
225
  return {
229
226
  isError: true,
230
227
  content: [
@@ -338,6 +335,17 @@ export class McpGateway {
338
335
  }
339
336
  catch (error) {
340
337
  const errorMessage = error instanceof Error ? error.message : String(error);
338
+ // Detect stale transport (connection dropped but flag not yet updated)
339
+ const isTransportDead = errorMessage.includes("No active transport") ||
340
+ errorMessage.includes("not connected");
341
+ if (isTransportDead) {
342
+ const up = this.upstreams.get(serverName);
343
+ if (up && up.connected) {
344
+ up.connected = false;
345
+ this.log(`Transport dead for ${serverName}, triggering reconnect`);
346
+ this.scheduleReconnect(serverName);
347
+ }
348
+ }
341
349
  this.recordEvent({
342
350
  serverName,
343
351
  toolName,
@@ -347,12 +355,15 @@ export class McpGateway {
347
355
  errorMessage,
348
356
  argumentKeys: args ? Object.keys(args) : [],
349
357
  });
358
+ const userMessage = isTransportDead
359
+ ? `Server ${serverName} lost connection (reconnecting...)`
360
+ : `Error calling ${serverName}.${toolName}: ${errorMessage}`;
350
361
  return {
351
362
  isError: true,
352
363
  content: [
353
364
  {
354
365
  type: "text",
355
- text: `Error calling ${serverName}.${toolName}: ${errorMessage}`,
366
+ text: userMessage,
356
367
  },
357
368
  ],
358
369
  };
@@ -377,11 +388,15 @@ export class McpGateway {
377
388
  }
378
389
  Object.assign(env, config.env);
379
390
  }
391
+ // Use the configured cwd, or fall back to the user's home directory.
392
+ // Spawning from the workspace directory can cause npm override conflicts
393
+ // when npx installs packages (workspace overrides may be incompatible).
394
+ const cwd = config.cwd ?? process.env.HOME ?? "/tmp";
380
395
  return new StdioClientTransport({
381
396
  command: config.command,
382
397
  args: config.args,
383
398
  env,
384
- cwd: config.cwd,
399
+ cwd,
385
400
  });
386
401
  }
387
402
  /**
@@ -411,31 +426,37 @@ export class McpGateway {
411
426
  const label = config.url ?? config.command ?? config.name;
412
427
  this.log(`Connecting to upstream: ${config.name} (${label})`);
413
428
  const serverName = config.name;
429
+ // Stdio servers: disable autoRefresh to prevent a cascade where
430
+ // sendToolListChanged() errors on the downstream transport cause
431
+ // the upstream stdio process to disconnect repeatedly.
432
+ const isStdio = !config.url && !!config.command;
414
433
  const makeClient = () => new Client({
415
434
  name: `gateway-client-${serverName}`,
416
435
  version: "0.1.0",
417
436
  }, {
418
437
  capabilities: {},
419
- listChanged: {
420
- tools: {
421
- autoRefresh: true,
422
- debounceMs: 200,
423
- onChanged: (error, tools) => {
424
- if (error) {
425
- this.log(`Failed to refresh tools from ${serverName}: ${error.message}`);
426
- return;
427
- }
428
- const upstream = this.upstreams.get(serverName);
429
- if (upstream) {
430
- upstream.tools = tools || [];
431
- this.log(`Tools updated from ${serverName}: ${upstream.tools.length} tools`);
432
- }
433
- this.server.sendToolListChanged().catch((err) => {
434
- this.log(`Failed to notify client of tool list change: ${err}`);
435
- });
438
+ ...(!isStdio ? {
439
+ listChanged: {
440
+ tools: {
441
+ autoRefresh: true,
442
+ debounceMs: 200,
443
+ onChanged: (error, tools) => {
444
+ if (error) {
445
+ this.log(`Failed to refresh tools from ${serverName}: ${error.message}`);
446
+ return;
447
+ }
448
+ const upstream = this.upstreams.get(serverName);
449
+ if (upstream) {
450
+ upstream.tools = tools || [];
451
+ this.log(`Tools updated from ${serverName}: ${upstream.tools.length} tools`);
452
+ }
453
+ this.server.sendToolListChanged().catch((err) => {
454
+ this.log(`Failed to notify client of tool list change: ${err}`);
455
+ });
456
+ },
436
457
  },
437
458
  },
438
- },
459
+ } : {}),
439
460
  });
440
461
  let client;
441
462
  let transport;
@@ -466,8 +487,10 @@ export class McpGateway {
466
487
  if (!hasAuthHeader) {
467
488
  // Try OAuth pre-auth for HTTP servers (discovers if server needs OAuth)
468
489
  // On reconnects, skip browser auth to avoid opening multiple consent tabs
490
+ // Use a timeout so OAuth doesn't block startup indefinitely (unless explicitly triggered)
491
+ const OAUTH_TIMEOUT_MS = 60_000; // 60 seconds for browser auth
469
492
  try {
470
- authProvider = await authenticateUpstream({
493
+ const authPromise = authenticateUpstream({
471
494
  serverUrl: config.url,
472
495
  serverName: config.name,
473
496
  store: this.upstreamTokenStore,
@@ -476,6 +499,10 @@ export class McpGateway {
476
499
  oauth: config.oauth,
477
500
  ...(callbackPort ? { callbackPort } : {}),
478
501
  });
502
+ const timeoutPromise = new Promise((_, reject) => {
503
+ setTimeout(() => reject(new Error(`OAuth timeout after ${OAUTH_TIMEOUT_MS}ms for ${config.name}`)), OAUTH_TIMEOUT_MS);
504
+ });
505
+ authProvider = await Promise.race([authPromise, timeoutPromise]);
479
506
  this.log(` ${config.name}: OAuth pre-auth succeeded`);
480
507
  }
481
508
  catch (err) {
@@ -617,6 +644,15 @@ export class McpGateway {
617
644
  }
618
645
  this.started = true;
619
646
  this.log("Starting MCP Gateway...");
647
+ // Start HTTP proxy server FIRST so the port is listening before the AI
648
+ // client even finishes the STDIO handshake. Claude Code starts plugins
649
+ // (e.g., Slack via localhost:19880) concurrently with the gateway process.
650
+ // If the proxy port isn't ready, plugins get "connection refused" and are
651
+ // marked as "failed". The proxy's waitForUpstream() handles the case where
652
+ // requests arrive before upstream connections are established.
653
+ if (this.config.httpProxyPort) {
654
+ await this.startHttpProxy(this.config.httpProxyPort);
655
+ }
620
656
  // Fetch initial policy from Sonoma
621
657
  if (this.sonomaClient) {
622
658
  await this.refreshPolicy();
@@ -665,6 +701,8 @@ export class McpGateway {
665
701
  return this.connectUpstream(serverConfig, undefined, callbackPort)
666
702
  .then(async (upstream) => {
667
703
  this.upstreams.set(serverConfig.name, upstream);
704
+ // Clear from pending if it was there from a previous attempt
705
+ this.pendingAuth.delete(serverConfig.name);
668
706
  this.log(` ${serverConfig.name}: connected (${upstream.tools.length} tools)`);
669
707
  try {
670
708
  await this.server.sendToolListChanged();
@@ -675,6 +713,12 @@ export class McpGateway {
675
713
  }
676
714
  })
677
715
  .catch((error) => {
716
+ // Connection failed (likely OAuth timeout or auth error).
717
+ // Track as pending so we can retry and inform users on tool calls.
718
+ if (serverConfig.url && serverConfig.oauth) {
719
+ this.pendingAuth.set(serverConfig.name, { config: serverConfig, callbackPort });
720
+ this.log(` ${serverConfig.name}: pending OAuth authentication`);
721
+ }
678
722
  // Security: serverConfig.name is from config, not user input
679
723
  console.error(`Failed to connect to ${serverConfig.name}:`, error); // nosemgrep: unsafe-formatstring
680
724
  });
@@ -714,13 +758,203 @@ export class McpGateway {
714
758
  this.log(`Failed to report tools: ${err}`);
715
759
  });
716
760
  }
717
- this.log("Gateway ready - all upstreams connected");
761
+ this.log(`Gateway ready - ${this.upstreams.size} connected, ${this.pendingAuth.size} pending auth`);
762
+ // Start background retry for servers pending OAuth authentication.
763
+ // Retries every 30s with skipBrowserAuth=true (only succeeds if user
764
+ // completed OAuth via another path, e.g. standalone --login or manual URL).
765
+ if (this.pendingAuth.size > 0) {
766
+ this.startPendingAuthRetry();
767
+ }
768
+ }
769
+ /**
770
+ * Periodically retry connecting servers that are pending OAuth.
771
+ * Uses skipBrowserAuth=true so it won't open new browser tabs;
772
+ * it only succeeds if the user already completed auth elsewhere.
773
+ */
774
+ startPendingAuthRetry() {
775
+ const RETRY_INTERVAL_MS = 30_000; // 30 seconds
776
+ this.pendingAuthRetryInterval = setInterval(async () => {
777
+ if (this.pendingAuth.size === 0) {
778
+ if (this.pendingAuthRetryInterval) {
779
+ clearInterval(this.pendingAuthRetryInterval);
780
+ this.pendingAuthRetryInterval = null;
781
+ }
782
+ return;
783
+ }
784
+ for (const [name, { config, callbackPort }] of this.pendingAuth) {
785
+ try {
786
+ const upstream = await this.connectUpstream(config, undefined, callbackPort);
787
+ this.upstreams.set(name, upstream);
788
+ this.pendingAuth.delete(name);
789
+ this.log(`Pending auth resolved: ${name} (${upstream.tools.length} tools)`);
790
+ this.server.sendToolListChanged().catch(() => { });
791
+ }
792
+ catch {
793
+ // Still can't connect, will retry next interval
794
+ }
795
+ }
796
+ }, RETRY_INTERVAL_MS);
797
+ }
798
+ /**
799
+ * Start the HTTP proxy server for transparent per-server proxying.
800
+ * Plugins can connect to http://localhost:{port}/proxy/{serverName}/mcp
801
+ * to use tools through the gateway while keeping skills active.
802
+ */
803
+ async startHttpProxy(port) {
804
+ // Resolve a proxy server name to the actual upstream name.
805
+ // Handles mismatches like "aikido" -> "aikido-mcp" (plugin names may differ
806
+ // from the names the enforcement script writes into .claude.json).
807
+ const resolveServerName = (serverName) => {
808
+ // Exact match first
809
+ if (this.upstreams.has(serverName))
810
+ return serverName;
811
+ if (this.config.servers.some((s) => s.name === serverName))
812
+ return serverName;
813
+ // Try common variations: "foo" -> "foo-mcp", "foo-mcp" -> "foo"
814
+ const withSuffix = `${serverName}-mcp`;
815
+ if (this.upstreams.has(withSuffix))
816
+ return withSuffix;
817
+ if (serverName.endsWith("-mcp")) {
818
+ const withoutSuffix = serverName.slice(0, -4);
819
+ if (this.upstreams.has(withoutSuffix))
820
+ return withoutSuffix;
821
+ }
822
+ // Check config for the same variations
823
+ const configMatch = this.config.servers.find((s) => s.name === withSuffix || (serverName.endsWith("-mcp") && s.name === serverName.slice(0, -4)));
824
+ if (configMatch)
825
+ return configMatch.name;
826
+ return serverName;
827
+ };
828
+ const callbacks = {
829
+ getUpstreamUrl: (serverName) => {
830
+ const resolved = resolveServerName(serverName);
831
+ // Check upstream connections first (may have resolved URL)
832
+ const upstream = this.upstreams.get(resolved);
833
+ if (upstream?.config.url)
834
+ return upstream.config.url;
835
+ // Check pending auth servers
836
+ const pending = this.pendingAuth.get(resolved);
837
+ if (pending?.config.url)
838
+ return pending.config.url;
839
+ // Fall back to the config (available from startup, before connections)
840
+ const serverConfig = this.config.servers.find((s) => s.name === resolved);
841
+ return serverConfig?.url ?? undefined;
842
+ },
843
+ hasStdioUpstream: (serverName) => {
844
+ // Only true for command-based (stdio) servers with no HTTP endpoint.
845
+ // HTTP upstreams are forwarded transparently so Claude Code can run
846
+ // its own OAuth directly against the upstream and users see the
847
+ // upstream's real login page (Sentry, BetterStack, etc.) instead of
848
+ // a synthesized gateway page.
849
+ const resolved = resolveServerName(serverName);
850
+ const upstream = this.upstreams.get(resolved);
851
+ if (upstream) {
852
+ return !!upstream.config.command && !upstream.config.url;
853
+ }
854
+ const config = this.config.servers.find((s) => s.name === resolved);
855
+ return !!config?.command && !config.url;
856
+ },
857
+ forwardJsonRpc: async (serverName, method, params) => {
858
+ const resolved = resolveServerName(serverName);
859
+ let upstream = this.upstreams.get(resolved);
860
+ // If the upstream is temporarily disconnected (reconnect cycle), wait briefly
861
+ if (upstream && !upstream.connected) {
862
+ for (let i = 0; i < 10; i++) {
863
+ await new Promise((r) => setTimeout(r, 500));
864
+ upstream = this.upstreams.get(resolved);
865
+ if (upstream?.connected)
866
+ break;
867
+ }
868
+ }
869
+ if (!upstream?.connected) {
870
+ return { error: { code: -32603, message: `Server ${resolved} is not connected` } };
871
+ }
872
+ const client = upstream.client;
873
+ const p = params;
874
+ try {
875
+ switch (method) {
876
+ case "initialize":
877
+ // Return the server's capabilities directly (already initialized)
878
+ return {
879
+ result: {
880
+ protocolVersion: "2025-03-26",
881
+ capabilities: { tools: { listChanged: true } },
882
+ serverInfo: { name: serverName, version: "1.0.0" },
883
+ },
884
+ };
885
+ case "notifications/initialized":
886
+ // No-op: the upstream is already initialized
887
+ return { result: {} };
888
+ case "ping":
889
+ await client.ping();
890
+ return { result: {} };
891
+ case "tools/list":
892
+ return { result: await client.listTools(p) };
893
+ case "tools/call": {
894
+ const toolParams = p;
895
+ const result = await client.callTool(toolParams);
896
+ return { result };
897
+ }
898
+ case "resources/list":
899
+ return { result: await client.listResources(p) };
900
+ case "resources/read": {
901
+ const readParams = p;
902
+ return { result: await client.readResource(readParams) };
903
+ }
904
+ case "prompts/list":
905
+ return { result: await client.listPrompts(p) };
906
+ case "prompts/get": {
907
+ const promptParams = p;
908
+ return { result: await client.getPrompt(promptParams) };
909
+ }
910
+ case "completion/complete": {
911
+ const completeParams = p;
912
+ return { result: await client.complete(completeParams) };
913
+ }
914
+ default:
915
+ return { error: { code: -32601, message: `Method not supported: ${method}` } };
916
+ }
917
+ }
918
+ catch (error) {
919
+ const message = error instanceof Error ? error.message : String(error);
920
+ return { error: { code: -32603, message } };
921
+ }
922
+ },
923
+ isToolBlocked: (serverName, toolName) => {
924
+ return this.isToolBlocked(resolveServerName(serverName), toolName);
925
+ },
926
+ recordToolCall: (event) => {
927
+ this.recordEvent({
928
+ ...event,
929
+ timestamp: new Date().toISOString(),
930
+ });
931
+ },
932
+ log: (message) => {
933
+ this.log(message);
934
+ },
935
+ };
936
+ this.httpProxy = new HttpProxyServer(port, callbacks, this.config.httpProxyServer);
937
+ await this.httpProxy.start();
938
+ // Log available proxy URLs
939
+ for (const [name] of this.upstreams) {
940
+ this.log(`HTTP proxy: ${this.httpProxy.getProxyUrl(name)}`);
941
+ }
718
942
  }
719
943
  /**
720
944
  * Stop the gateway and disconnect from all upstreams
721
945
  */
722
946
  async stop() {
723
947
  this.log("Stopping gateway...");
948
+ // Stop HTTP proxy server
949
+ if (this.httpProxy) {
950
+ await this.httpProxy.stop();
951
+ this.httpProxy = null;
952
+ }
953
+ // Stop pending auth retry
954
+ if (this.pendingAuthRetryInterval) {
955
+ clearInterval(this.pendingAuthRetryInterval);
956
+ this.pendingAuthRetryInterval = null;
957
+ }
724
958
  // Stop policy refresh
725
959
  if (this.policyRefreshInterval) {
726
960
  clearInterval(this.policyRefreshInterval);
@@ -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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"}