@ni-c/mcp-hub 0.10.0 → 0.11.0

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 (77) hide show
  1. package/CHANGELOG.md +388 -0
  2. package/README.md +77 -12
  3. package/dist/admin.js +1 -1
  4. package/dist/admin.js.map +1 -1
  5. package/dist/auth/api-tokens.js +27 -0
  6. package/dist/auth/api-tokens.js.map +1 -0
  7. package/dist/auth/headers.js +22 -1
  8. package/dist/auth/headers.js.map +1 -1
  9. package/dist/auth/oidc/adapter.js +135 -0
  10. package/dist/auth/oidc/adapter.js.map +1 -0
  11. package/dist/auth/oidc/interactions.js +187 -0
  12. package/dist/auth/oidc/interactions.js.map +1 -0
  13. package/dist/auth/oidc/mount.js +144 -0
  14. package/dist/auth/oidc/mount.js.map +1 -0
  15. package/dist/auth/oidc/provider.js +440 -0
  16. package/dist/auth/oidc/provider.js.map +1 -0
  17. package/dist/auth/oidc/quirks.js +234 -0
  18. package/dist/auth/oidc/quirks.js.map +1 -0
  19. package/dist/auth/oidc/verifier.js +121 -0
  20. package/dist/auth/oidc/verifier.js.map +1 -0
  21. package/dist/auth/protected-resource.js +41 -0
  22. package/dist/auth/protected-resource.js.map +1 -0
  23. package/dist/auth/rate-limit.js +115 -2
  24. package/dist/auth/rate-limit.js.map +1 -1
  25. package/dist/auth/redirect-uri.js +33 -1
  26. package/dist/auth/redirect-uri.js.map +1 -1
  27. package/dist/auth/registration.js +1 -1
  28. package/dist/auth/registration.js.map +1 -1
  29. package/dist/auth/session.js +43 -0
  30. package/dist/auth/session.js.map +1 -0
  31. package/dist/auth/store.js +160 -1
  32. package/dist/auth/store.js.map +1 -1
  33. package/dist/config.js +55 -2
  34. package/dist/config.js.map +1 -1
  35. package/dist/docker-proxy/policy.js +1 -0
  36. package/dist/docker-proxy/policy.js.map +1 -1
  37. package/dist/docker-proxy/server.js +1 -0
  38. package/dist/docker-proxy/server.js.map +1 -1
  39. package/dist/elicitation.js +0 -0
  40. package/dist/elicitation.js.map +1 -0
  41. package/dist/forward.js +0 -0
  42. package/dist/forward.js.map +1 -0
  43. package/dist/hub.js +309 -29
  44. package/dist/hub.js.map +1 -1
  45. package/dist/index.js +103 -21
  46. package/dist/index.js.map +1 -1
  47. package/dist/limits.js +13 -1
  48. package/dist/limits.js.map +1 -1
  49. package/dist/mcp-limits.js +14 -2
  50. package/dist/mcp-limits.js.map +1 -1
  51. package/dist/proxy.js +246 -40
  52. package/dist/proxy.js.map +1 -1
  53. package/dist/stdio.js +71 -6
  54. package/dist/stdio.js.map +1 -1
  55. package/dist/subscriptions.js +236 -0
  56. package/dist/subscriptions.js.map +1 -0
  57. package/dist/supervisor.js +322 -22
  58. package/dist/supervisor.js.map +1 -1
  59. package/dist/timings.js +61 -0
  60. package/dist/timings.js.map +1 -0
  61. package/dist/tool-filter.js +1 -0
  62. package/dist/tool-filter.js.map +1 -1
  63. package/dist/transports/docker.js.map +1 -1
  64. package/dist/transports/stream.js +33 -20
  65. package/dist/transports/stream.js.map +1 -1
  66. package/dist/upstream/auth.js +1 -1
  67. package/dist/upstream/auth.js.map +1 -1
  68. package/dist/upstream/provider.js.map +1 -1
  69. package/dist/upstream/routes.js +3 -2
  70. package/dist/upstream/routes.js.map +1 -1
  71. package/package.json +19 -6
  72. package/dist/auth/private-key-jwt.js +0 -213
  73. package/dist/auth/private-key-jwt.js.map +0 -1
  74. package/dist/auth/provider.js +0 -437
  75. package/dist/auth/provider.js.map +0 -1
  76. package/dist/auth/routes.js +0 -249
  77. package/dist/auth/routes.js.map +0 -1
@@ -1,18 +1,17 @@
1
- import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
- import { StdioClientTransport, getDefaultEnvironment } from '@modelcontextprotocol/sdk/client/stdio.js';
3
- import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
4
- import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
1
+ import { StdioClientTransport, getDefaultEnvironment } from '@modelcontextprotocol/client/stdio';
2
+ import { Client, StreamableHTTPClientTransport, SSEClientTransport, UnauthorizedError } from '@modelcontextprotocol/client';
3
+ import { ListToolsResultSchema } from '@modelcontextprotocol/core';
5
4
  import { VERSION } from './version.js';
6
5
  import { MAX_TOOL_LIST_PAGES, MAX_TOOLS, MAX_TOOL_METADATA_BYTES, jsonSize } from './mcp-limits.js';
7
- import { ToolListChangedNotificationSchema } from '@modelcontextprotocol/sdk/types.js';
6
+ import { BACKOFF_INITIAL_MS, BACKOFF_MAX_MS, BACKOFF_RESET_AFTER_MS, IDLE_SWEEP_INTERVAL_MS, MAX_UNUSED_RESTARTS, PING_INTERVAL_MS, PING_TIMEOUT_MS, WAKE_TIMEOUT_MS } from './timings.js';
8
7
  import { SocketTransport } from './transports/socket.js';
9
8
  import { DockerTransport } from './transports/docker.js';
10
9
  import { DockerClient, parseSandboxDockerHost } from './sandbox/docker-client.js';
11
- import { UnauthorizedError } from '@modelcontextprotocol/sdk/client/auth.js';
12
10
  import { UpstreamAuth, UpstreamLoginRequiredError } from './upstream/auth.js';
13
11
  import { credentialFingerprint } from './upstream/provider.js';
14
12
  import { ToolCache } from './tool-cache.js';
15
13
  import { filterTools, hasToolFilter, unmatchedPatterns } from './tool-filter.js';
14
+ import { subscriptionsAllowed } from './subscriptions.js';
16
15
  /**
17
16
  * Whether a failure is one a restart could fix.
18
17
  *
@@ -24,6 +23,23 @@ import { filterTools, hasToolFilter, unmatchedPatterns } from './tool-filter.js'
24
23
  function classifyAuthFailure(error) {
25
24
  return error instanceof UpstreamLoginRequiredError || error instanceof UnauthorizedError ? 'unauthorized' : 'restart';
26
25
  }
26
+ /**
27
+ * Whether this connection's protocol revision still has `ping`.
28
+ *
29
+ * `2026-07-28` removed it. Asked on that era the SDK refuses rather than
30
+ * sending anything, so a liveness probe there is not a failed ping — it is a
31
+ * question that no longer exists. Everything older has it.
32
+ *
33
+ * Read from the connection rather than from the config, because the era is not
34
+ * a property of the server we configured: it is the outcome of the opening
35
+ * exchange with the server that actually answered.
36
+ */
37
+ function eraHasPing(client) {
38
+ const era = client.getNegotiatedProtocolVersion?.();
39
+ // Undefined means the SDK has not recorded one, which is every revision that
40
+ // predates the negotiation API. Those all have ping.
41
+ return era === undefined || era < '2026-07-28';
42
+ }
27
43
  /**
28
44
  * Remote upstreams get their configured headers on EVERY request via a fetch
29
45
  * wrapper — requestInit alone does not cover the SSE stream GET.
@@ -67,14 +83,25 @@ export function dockerClient() {
67
83
  export function setDockerClient(client) {
68
84
  sharedDockerClient = client;
69
85
  }
70
- const BACKOFF_INITIAL_MS = 1_000;
71
- const BACKOFF_MAX_MS = 5 * 60_000;
72
- const BACKOFF_RESET_AFTER_MS = 5 * 60_000;
73
- const PING_INTERVAL_MS = 60_000;
74
- const PING_TIMEOUT_MS = 30_000;
75
- const WAKE_TIMEOUT_MS = 120_000;
76
- const MAX_UNUSED_RESTARTS = 5;
77
- const IDLE_SWEEP_INTERVAL_MS = 60_000;
86
+ /** Whether two upstream listen filters ask for the same thing. */
87
+ function sameFilter(a, b) {
88
+ if (!a)
89
+ return false;
90
+ // JSON rather than a joined string: with a plain separator, ['a b'] and
91
+ // ['a', 'b'] compare equal, and the hub would skip a reconcile it owed.
92
+ const uris = (filter) => JSON.stringify([...(filter.resourceSubscriptions ?? [])].sort());
93
+ return ((a.toolsListChanged ?? false) === (b.toolsListChanged ?? false) &&
94
+ (a.promptsListChanged ?? false) === (b.promptsListChanged ?? false) &&
95
+ (a.resourcesListChanged ?? false) === (b.resourcesListChanged ?? false) &&
96
+ uris(a) === uris(b));
97
+ }
98
+ /** Whether a filter asks for nothing at all, in which case nothing is held upstream. */
99
+ function emptyFilter(filter) {
100
+ return (!filter.toolsListChanged &&
101
+ !filter.promptsListChanged &&
102
+ !filter.resourcesListChanged &&
103
+ (filter.resourceSubscriptions?.length ?? 0) === 0);
104
+ }
78
105
  export async function listAllTools(client) {
79
106
  const tools = [];
80
107
  let cursor;
@@ -84,7 +111,15 @@ export async function listAllTools(client) {
84
111
  do {
85
112
  if (++pages > MAX_TOOL_LIST_PAGES)
86
113
  throw new Error(`tools/list exceeded ${MAX_TOOL_LIST_PAGES} pages`);
87
- const page = await client.listTools({ cursor });
114
+ // `request` rather than `listTools`, deliberately. SDK v2's `listTools()`
115
+ // walks the whole pagination itself whenever no cursor is given -- which is
116
+ // every first call -- and hands back one merged result. That would collapse
117
+ // this loop into a single iteration and take all three budgets below with
118
+ // it, leaving only the SDK's own page cap and no limit on tool count or
119
+ // metadata size at all. The budgets exist because a hostile child's tool
120
+ // list is a way to exhaust the hub's memory, and with it every other
121
+ // server's availability. One page per request is what makes them apply.
122
+ const page = await client.request({ method: 'tools/list', params: { cursor } }, ListToolsResultSchema);
88
123
  metadataBytes += jsonSize(page.tools);
89
124
  if (metadataBytes > MAX_TOOL_METADATA_BYTES)
90
125
  throw new Error(`tools/list metadata exceeded ${MAX_TOOL_METADATA_BYTES} bytes`);
@@ -122,6 +157,21 @@ export class ManagedServer {
122
157
  lastError;
123
158
  /** Last time a request was actually forwarded; the idle sweep measures from here. */
124
159
  lastUsedAt = 0;
160
+ /**
161
+ * What the clients on this server's route are listening for. Created by the
162
+ * proxy, which owns the route's handler; the supervisor only publishes into
163
+ * it and reads its merged demand.
164
+ *
165
+ * Deliberately not consulted by the idle sweep: an open subscription is an
166
+ * intent, not a reason to keep a child process running. A sleeping child
167
+ * emits nothing, and the resync on the next wake is what makes that gap
168
+ * recoverable instead of silent.
169
+ */
170
+ channel;
171
+ /** The lease book of this server's route, or nothing if no client ever asked. */
172
+ get subscriptions() {
173
+ return this.channel?.registry;
174
+ }
125
175
  backoffMs;
126
176
  startedAt = 0;
127
177
  restartTimer;
@@ -137,6 +187,13 @@ export class ManagedServer {
137
187
  * kill the new child.
138
188
  */
139
189
  generation = 0;
190
+ /** The one upstream listen stream carrying this route's whole demand (modern era). */
191
+ upstream;
192
+ upstreamFilter;
193
+ /** URIs the child was told about one at a time (2025 era). */
194
+ upstreamUris = new Set();
195
+ reconciling = false;
196
+ reconcileQueued = false;
140
197
  constructor(name, config, options = {}) {
141
198
  this.name = name;
142
199
  this.config = config;
@@ -273,7 +330,25 @@ export class ManagedServer {
273
330
  }
274
331
  }
275
332
  const transport = this.buildTransport();
276
- const client = new Client({ name: 'mcp-hub', version: VERSION }, { capabilities: {} });
333
+ const client = new Client({ name: 'mcp-hub', version: VERSION }, {
334
+ // Still nothing. The hub is not the one who can answer an elicitation —
335
+ // the person at the far end is — so declaring the capability on this
336
+ // shared connection would be a promise the hub cannot keep. What it
337
+ // declares per forwarded request is a different matter.
338
+ capabilities: {},
339
+ // 'auto' probes with server/discover and falls back to the 2025
340
+ // sequence when the child does not answer it, so a legacy child
341
+ // connects exactly as before. What it buys is the modern era where the
342
+ // child supports it: there, input_required comes back as a *result*
343
+ // the hub can forward, instead of a server→client request it would
344
+ // have nowhere to put.
345
+ versionNegotiation: { mode: 'auto' },
346
+ // The client would otherwise answer an input_required itself — from
347
+ // handlers the hub never registered, so every elicitation would be
348
+ // silently declined on the caller's behalf. A gateway has to hand the
349
+ // question on, not answer it.
350
+ inputRequired: { autoFulfill: false }
351
+ });
277
352
  transport.onclose = () => this.onExit(this.exitReason(), generation);
278
353
  try {
279
354
  await client.connect(transport);
@@ -299,15 +374,162 @@ export class ManagedServer {
299
374
  console.log(`[${this.name}] up (${this.serverInfo?.name ?? 'unknown'} ${this.serverInfo?.version ?? ''})`.trim());
300
375
  this.resolveWakeWaiters();
301
376
  if (this.capabilities?.tools) {
302
- client.setNotificationHandler(ToolListChangedNotificationSchema, () => void this.refreshTools());
377
+ client.setNotificationHandler('notifications/tools/list_changed', () => {
378
+ void this.refreshTools();
379
+ this.publishUpstream({ kind: 'tools_list_changed' });
380
+ });
303
381
  await this.refreshTools();
304
382
  }
305
383
  else {
306
384
  this.options.persist?.(this);
307
385
  }
386
+ this.watchUpstream(client);
387
+ // A subscription taken while this child was asleep is an intent, not a
388
+ // connection: nothing was held upstream, so it has to be re-established
389
+ // here rather than at the moment the client asked. The same is true after
390
+ // a crash — shutdown() throws the client away and every subscription with
391
+ // it. Without this a subscription is silently dead from the first nap on.
392
+ this.reconcileSubscriptions();
393
+ // And because nothing was held, the hub cannot know what changed while the
394
+ // child was gone. Telling the listeners to read everything again is the
395
+ // only honest answer.
396
+ this.subscriptions?.resync();
397
+ // The aggregate's tool list spans this child, so its listeners have the
398
+ // same gap: whatever changed while the child was away is invisible to them
399
+ // too. One re-read tells them so.
400
+ if (this.options.aggregateWantsTools?.() === true)
401
+ this.options.onUpstreamEvent?.({ kind: 'tools_list_changed' });
308
402
  this.pingTimer = setInterval(() => void this.checkAlive(), PING_INTERVAL_MS);
309
403
  this.pingTimer.unref();
310
404
  }
405
+ /** One change event to this route's listeners and to the /hub aggregate. */
406
+ publishUpstream(event) {
407
+ this.subscriptions?.publish(event);
408
+ this.options.onUpstreamEvent?.(event);
409
+ }
410
+ /**
411
+ * Route the child's change notifications to the clients waiting for them.
412
+ *
413
+ * The same four handlers serve both eras. On a 2025 connection the child
414
+ * sends these unsolicited; on 2026-07-28 they arrive on the listen stream
415
+ * that `reconcileSubscriptions` opens, and the SDK dispatches them to these
416
+ * very registrations. So the era difference is confined to *asking*, not to
417
+ * receiving — which is the whole reason this is one code path.
418
+ *
419
+ * Gated on the declared capability for the same reason the handlers below
420
+ * are only registered for what the child said it has: a handler for a
421
+ * notification the child cannot send is a claim nobody checked.
422
+ */
423
+ watchUpstream(client) {
424
+ if (this.capabilities?.prompts) {
425
+ client.setNotificationHandler('notifications/prompts/list_changed', () => this.publishUpstream({ kind: 'prompts_list_changed' }));
426
+ }
427
+ if (this.capabilities?.resources) {
428
+ client.setNotificationHandler('notifications/resources/list_changed', () => this.publishUpstream({ kind: 'resources_list_changed' }));
429
+ client.setNotificationHandler('notifications/resources/updated', notification => this.publishUpstream({ kind: 'resource_updated', uri: notification.params.uri }));
430
+ }
431
+ }
432
+ /**
433
+ * Bring what the child is told to watch in line with what the clients want.
434
+ *
435
+ * Fire-and-forget with a single-flight guard: it is called from lease
436
+ * acquire/release, which happen on the request path and must not wait for an
437
+ * upstream round trip. A change arriving mid-reconcile queues exactly one
438
+ * more pass, so the last caller's demand always wins without a backlog.
439
+ */
440
+ reconcileSubscriptions() {
441
+ if (this.reconciling) {
442
+ this.reconcileQueued = true;
443
+ return;
444
+ }
445
+ this.reconciling = true;
446
+ void this.runReconcile()
447
+ .catch(error => console.error(`[${this.name}] could not update subscriptions: ${error.message}`))
448
+ .finally(() => {
449
+ this.reconciling = false;
450
+ if (!this.reconcileQueued)
451
+ return;
452
+ this.reconcileQueued = false;
453
+ this.reconcileSubscriptions();
454
+ });
455
+ }
456
+ async runReconcile() {
457
+ const client = this.client;
458
+ const registry = this.subscriptions;
459
+ // Asleep, down, or nobody listening: there is nothing to hold. State is not
460
+ // dropped — it lives in the leases, and start() replays it.
461
+ if (!client || this.state !== 'up')
462
+ return;
463
+ if (!subscriptionsAllowed(this.config))
464
+ return;
465
+ const demand = registry?.demand() ?? { toolsListChanged: false, promptsListChanged: false, resourcesListChanged: false, uris: [] };
466
+ // The union spans both books: this route's leases and the aggregate's.
467
+ const wantsTools = demand.toolsListChanged || this.options.aggregateWantsTools?.() === true;
468
+ // A child that never advertised `subscribe` cannot be asked for resource
469
+ // updates; asking anyway earns a -32601 per URI and nothing else.
470
+ const canSubscribe = this.capabilities?.resources?.subscribe === true;
471
+ const uris = canSubscribe ? demand.uris : [];
472
+ if (client.getProtocolEra() === 'modern') {
473
+ await this.reconcileModern(client, {
474
+ toolsListChanged: wantsTools && this.capabilities?.tools?.listChanged === true,
475
+ promptsListChanged: demand.promptsListChanged && this.capabilities?.prompts?.listChanged === true,
476
+ resourcesListChanged: demand.resourcesListChanged && this.capabilities?.resources?.listChanged === true,
477
+ resourceSubscriptions: uris
478
+ });
479
+ return;
480
+ }
481
+ await this.reconcileLegacy(client, uris);
482
+ }
483
+ /**
484
+ * One listen stream carries the whole route's demand.
485
+ *
486
+ * A filter cannot be widened in place, so any change to the union means
487
+ * closing the stream and opening a new one. That is a real gap — a
488
+ * notification landing between the two is lost — which is why the reopen is
489
+ * followed by nothing: the client that just subscribed gets its resync from
490
+ * the acquire path, and the ones already listening were not affected by
491
+ * whatever the new lease added.
492
+ */
493
+ async reconcileModern(client, filter) {
494
+ if (sameFilter(this.upstreamFilter, filter))
495
+ return;
496
+ const previous = this.upstream;
497
+ this.upstream = undefined;
498
+ this.upstreamFilter = undefined;
499
+ if (previous)
500
+ await previous.close().catch(() => { });
501
+ if (emptyFilter(filter))
502
+ return;
503
+ const subscription = await client.listen(filter);
504
+ // A close() racing the await above already cleared the field; honour that
505
+ // rather than installing a stream nobody wants.
506
+ if (this.client !== client) {
507
+ await subscription.close().catch(() => { });
508
+ return;
509
+ }
510
+ this.upstream = subscription;
511
+ this.upstreamFilter = filter;
512
+ }
513
+ /**
514
+ * The 2025 era asks per URI and gets list_changed unsolicited, so only the
515
+ * resource set is negotiated — as a diff, because re-subscribing a URI the
516
+ * child already holds is a round trip that buys nothing.
517
+ */
518
+ async reconcileLegacy(client, uris) {
519
+ const wanted = new Set(uris);
520
+ for (const uri of wanted) {
521
+ if (this.upstreamUris.has(uri))
522
+ continue;
523
+ await client.subscribeResource({ uri });
524
+ this.upstreamUris.add(uri);
525
+ }
526
+ // Snapshotted before the loop, which removes from the very set it reads.
527
+ const stale = [...this.upstreamUris].filter(uri => !wanted.has(uri));
528
+ for (const uri of stale) {
529
+ await client.unsubscribeResource({ uri }).catch(() => { });
530
+ this.upstreamUris.delete(uri);
531
+ }
532
+ }
311
533
  /**
312
534
  * Says what the filter did, at the one moment the operator is looking: a
313
535
  * filter edit bounces this server, so this prints seconds later. That is why
@@ -355,6 +577,24 @@ export class ManagedServer {
355
577
  const client = this.client;
356
578
  if (this.state !== 'up' || !client)
357
579
  return;
580
+ // `ping` does not exist on 2026-07-28: the revision removed it, and the SDK
581
+ // refuses to send one rather than inventing an RPC the far end never had.
582
+ // Without this check the refusal reads as a dead child and the supervisor
583
+ // restarts a server that is perfectly healthy — forever, with the backoff
584
+ // climbing. Seen in production the morning after 0.11.0 went out: two
585
+ // remote children that happened to speak the modern era flapped every
586
+ // interval while the rest of the hub was fine.
587
+ //
588
+ // Nothing replaces it. On that era liveness is the transport's business,
589
+ // which is where it always was for a stdio child: the process exits, the
590
+ // transport closes, onExit restarts it. What an HTTP child on the modern
591
+ // era loses is the *active* probe — a server that stops answering without
592
+ // closing is noticed at the next real call rather than within a minute.
593
+ // Sending some other request as a substitute heartbeat would be worse: it
594
+ // would be a call the operator never asked for, against a server that
595
+ // charges for it or logs it, every interval, forever.
596
+ if (!eraHasPing(client))
597
+ return;
358
598
  try {
359
599
  await client.ping({ timeout: PING_TIMEOUT_MS });
360
600
  }
@@ -435,6 +675,14 @@ export class ManagedServer {
435
675
  this.generation++;
436
676
  clearTimeout(this.restartTimer);
437
677
  clearInterval(this.pingTimer);
678
+ // The upstream subscription belongs to the connection that is going away.
679
+ // Forgetting it here is what makes the next start() reconcile from scratch
680
+ // instead of believing a stream it no longer holds is still open. The
681
+ // leases themselves are untouched — they are the clients' intent, and they
682
+ // outlive any one child process.
683
+ this.upstream = undefined;
684
+ this.upstreamFilter = undefined;
685
+ this.upstreamUris.clear();
438
686
  this.rejectWakeWaiters(new Error(`Server "${this.name}" is shutting down`));
439
687
  // Same local-client rule as checkAlive(). This path happens to be safe
440
688
  // today because the member access precedes the await, but Supervisor.stop()
@@ -449,6 +697,11 @@ export class ManagedServer {
449
697
  async stop() {
450
698
  await this.shutdown();
451
699
  this.state = 'stopped';
700
+ // Unlike sleep(), this server is not coming back: the route's handler holds
701
+ // open listen streams and would otherwise outlive everything it serves.
702
+ const channel = this.channel;
703
+ this.channel = undefined;
704
+ await channel?.close().catch(() => { });
452
705
  }
453
706
  /** Same teardown as stop(), but the server stays wakeable. */
454
707
  async sleep() {
@@ -507,16 +760,63 @@ export class Supervisor {
507
760
  get idleTimeoutMinutes() {
508
761
  return this.options.idleTimeoutMinutes ?? 0;
509
762
  }
763
+ /** The global idle timeout as one number, whichever unit the caller gave it in. */
764
+ get idleTimeoutMs() {
765
+ return this.options.idleTimeoutMs || this.idleTimeoutMinutes * 60_000;
766
+ }
767
+ /**
768
+ * What the clients on the /hub route are listening for.
769
+ *
770
+ * /hub exposes tools and nothing else, so the only change worth relaying is
771
+ * "some child's tool list moved, re-read mine". Set by the proxy, which owns
772
+ * that route's handler.
773
+ */
774
+ hubSubscriptions;
775
+ /**
776
+ * Relay a child's change event to the /hub aggregate.
777
+ *
778
+ * Only the tool list crosses: /hub does not aggregate resources or prompts,
779
+ * so a resources/list_changed from one child describes nothing a /hub client
780
+ * can read. Sending it anyway would be the same kind of empty promise the
781
+ * capability table exists to prevent.
782
+ */
783
+ onChildEvent(cfg, event) {
784
+ if (event.kind !== 'tools_list_changed')
785
+ return;
786
+ if (cfg.hub === false || !subscriptionsAllowed(cfg))
787
+ return;
788
+ this.hubSubscriptions?.publish(event);
789
+ }
790
+ /**
791
+ * Bring every child's upstream subscription in line.
792
+ *
793
+ * Called when the /hub aggregate's demand moves, because that one book is
794
+ * shared by all of them — unlike a per-server route, where only its own
795
+ * child is affected.
796
+ */
797
+ reconcileAll() {
798
+ for (const server of this.servers.values())
799
+ server.reconcileSubscriptions();
800
+ }
801
+ aggregateWantsTools(cfg) {
802
+ if (cfg.hub === false || !subscriptionsAllowed(cfg))
803
+ return false;
804
+ return this.hubSubscriptions?.demand().toolsListChanged === true;
805
+ }
510
806
  buildManaged(name, cfg) {
511
- if ((cfg.kind !== 'stdio' && cfg.kind !== 'docker') || cfg.keepAlive || this.idleTimeoutMinutes <= 0) {
807
+ const onUpstreamEvent = (event) => this.onChildEvent(cfg, event);
808
+ const aggregateWantsTools = () => this.aggregateWantsTools(cfg);
809
+ if ((cfg.kind !== 'stdio' && cfg.kind !== 'docker') || cfg.keepAlive || this.idleTimeoutMs <= 0) {
512
810
  const auth = cfg.kind === 'remote' ? this.options.upstreamAuth?.for(name, cfg) : undefined;
513
- return new ManagedServer(name, cfg, auth ? { auth } : {});
811
+ return new ManagedServer(name, cfg, { onUpstreamEvent, aggregateWantsTools, ...(auth ? { auth } : {}) });
514
812
  }
515
813
  return new ManagedServer(name, cfg, {
516
814
  onDemand: true,
517
- idleMs: (cfg.idleMinutes ?? this.idleTimeoutMinutes) * 60_000,
815
+ idleMs: cfg.idleMinutes !== undefined ? cfg.idleMinutes * 60_000 : this.idleTimeoutMs,
518
816
  wakeTimeoutMs: this.options.wakeTimeoutMs,
519
- persist: server => this.persist(server)
817
+ persist: server => this.persist(server),
818
+ onUpstreamEvent,
819
+ aggregateWantsTools
520
820
  });
521
821
  }
522
822
  persist(server) {
@@ -555,7 +855,7 @@ export class Supervisor {
555
855
  this.startIdleSweep();
556
856
  }
557
857
  startIdleSweep() {
558
- if (this.idleTimeoutMinutes <= 0 || this.sweepTimer)
858
+ if (this.idleTimeoutMs <= 0 || this.sweepTimer)
559
859
  return;
560
860
  this.sweepTimer = setInterval(() => this.sweepIdle(), this.options.sweepIntervalMs ?? IDLE_SWEEP_INTERVAL_MS);
561
861
  this.sweepTimer.unref();
@@ -1 +1 @@
1
- {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../src/supervisor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * How long the supervisor waits, in one place and overridable.
3
+ *
4
+ * These numbers are chosen for a hosted hub, where a minute of extra patience
5
+ * costs nothing and a restart storm costs everything. They are wrong for a test
6
+ * that has to observe the behaviour they govern: waiting out a 60-second idle
7
+ * sweep or a 120-second wake timeout is four minutes of sleeping per run, and a
8
+ * test suite that sleeps for four minutes is a test suite somebody deletes.
9
+ *
10
+ * The 5-minute backoff ceiling is worse than slow — it is unreachable. A test
11
+ * would have to let a server crash-loop for a quarter of an hour to see it.
12
+ *
13
+ * So the values move here and read the environment, exactly as `mcp-limits.ts`
14
+ * does for the call deadline and `subscriptions.ts` for the debounce window.
15
+ * Same contract as those two: a bad value warns and falls back rather than
16
+ * exiting, because this module is imported by the request path, and index.ts is
17
+ * the only place allowed to end the process over a bad environment.
18
+ *
19
+ * The Supervisor's own options still win where they exist — the environment
20
+ * sets the default, it does not override a caller who asked for something
21
+ * specific. In-process tests keep passing options; a hub in another process or
22
+ * a container has only the environment, which is the whole reason this file
23
+ * exists.
24
+ */
25
+ import { nonNegativeIntegerEnv, positiveIntegerEnv } from './mcp-limits.js';
26
+ /** First wait after a child exits; doubles from here. */
27
+ export const BACKOFF_INITIAL_MS = positiveIntegerEnv('MCP_BACKOFF_INITIAL_MS', 1_000);
28
+ /** The ceiling the doubling stops at, so a permanently broken server retries hourly-ish rather than never. */
29
+ export const BACKOFF_MAX_MS = positiveIntegerEnv('MCP_BACKOFF_MAX_MS', 5 * 60_000);
30
+ /** How long a child must have stayed up before its next crash counts as the first one again. */
31
+ export const BACKOFF_RESET_AFTER_MS = positiveIntegerEnv('MCP_BACKOFF_RESET_AFTER_MS', 5 * 60_000);
32
+ /** How often a running child is pinged to find out it has gone quietly. */
33
+ export const PING_INTERVAL_MS = positiveIntegerEnv('MCP_PING_INTERVAL_MS', 60_000);
34
+ /** How long that ping may take before the child counts as gone. */
35
+ export const PING_TIMEOUT_MS = positiveIntegerEnv('MCP_PING_TIMEOUT_MS', 30_000);
36
+ /** How long a sleeping child gets to come back before the caller is told it did not. */
37
+ export const WAKE_TIMEOUT_MS = positiveIntegerEnv('MCP_WAKE_TIMEOUT_MS', 120_000);
38
+ /** Restarts of a server nobody asked for, before it is left asleep instead. */
39
+ export const MAX_UNUSED_RESTARTS = nonNegativeIntegerEnv('MCP_MAX_UNUSED_RESTARTS', 5);
40
+ /** How often the idle sweep looks for servers to put to sleep. */
41
+ export const IDLE_SWEEP_INTERVAL_MS = positiveIntegerEnv('MCP_IDLE_SWEEP_INTERVAL_MS', 60_000);
42
+ /**
43
+ * How often the config file is polled, on top of watching its directory.
44
+ *
45
+ * `fs.watch` does not fire for a single-file bind mount, which is the shape
46
+ * every Docker deployment of this hub had before the directory mount was
47
+ * documented — so the poll is the fallback that makes hot reload work at all,
48
+ * not an optimisation.
49
+ */
50
+ export const CONFIG_POLL_INTERVAL_MS = positiveIntegerEnv('MCP_CONFIG_POLL_INTERVAL_MS', 3_000);
51
+ /**
52
+ * Idle timeout in milliseconds, when minutes are too coarse.
53
+ *
54
+ * `IDLE_TIMEOUT_MINUTES` stays the documented knob and the one a deployment
55
+ * should use; this is its finer-grained sibling, so a test can watch a server
56
+ * fall asleep in a second instead of in a minute. `0` means "not set" and
57
+ * leaves the minute value in charge — which is why it cannot also mean "never
58
+ * sleep": that is `IDLE_TIMEOUT_MINUTES=0`, and it already has a meaning.
59
+ */
60
+ export const IDLE_TIMEOUT_MS = nonNegativeIntegerEnv('IDLE_TIMEOUT_MS', 0);
61
+ //# sourceMappingURL=timings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timings.js","sourceRoot":"","sources":["../src/timings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,yDAAyD;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAEtF,8GAA8G;AAC9G,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC,oBAAoB,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AAEnF,gGAAgG;AAChG,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,4BAA4B,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;AAEnG,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAEnF,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAEjF,wFAAwF;AACxF,MAAM,CAAC,MAAM,eAAe,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;AAElF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAEvF,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AAE/F;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,kBAAkB,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;AAEhG;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC"}
@@ -40,6 +40,7 @@ export function unmatchedPatterns(config, tools) {
40
40
  return [...(config.allowTools ?? []), ...(config.denyTools ?? [])].filter(pattern => !names.some(name => matches([pattern], name)));
41
41
  }
42
42
  /** Control characters would let a caller forge lines in a log LOG_FILE mirrors to disk. */
43
+ // eslint-disable-next-line no-control-regex -- matching them is the point
43
44
  const CONTROL_CHARACTERS = /[\u0000-\u001f\u007f]/g;
44
45
  const MAX_LOGGED_NAME = 100;
45
46
  /**