@1mcp/agent 0.32.1 → 0.32.2
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/build/constants/mcp.d.ts +1 -1
- package/build/constants/mcp.js +1 -1
- package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -1
- package/build/core/capabilities/asyncLoadingOrchestrator.js +1 -0
- package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -1
- package/build/core/configChangeHandler.d.ts +7 -2
- package/build/core/configChangeHandler.d.ts.map +1 -1
- package/build/core/configChangeHandler.js +14 -7
- package/build/core/configChangeHandler.js.map +1 -1
- package/build/core/loading/loadingStateTracker.d.ts +19 -0
- package/build/core/loading/loadingStateTracker.d.ts.map +1 -1
- package/build/core/loading/loadingStateTracker.js +37 -0
- package/build/core/loading/loadingStateTracker.js.map +1 -1
- package/build/core/loading/mcpLoadingManager.d.ts +103 -8
- package/build/core/loading/mcpLoadingManager.d.ts.map +1 -1
- package/build/core/loading/mcpLoadingManager.js +301 -31
- package/build/core/loading/mcpLoadingManager.js.map +1 -1
- package/build/core/server/mcpServerLifecycleManager.d.ts +9 -1
- package/build/core/server/mcpServerLifecycleManager.d.ts.map +1 -1
- package/build/core/server/mcpServerLifecycleManager.js +22 -0
- package/build/core/server/mcpServerLifecycleManager.js.map +1 -1
- package/build/core/server/serverManager.d.ts +8 -0
- package/build/core/server/serverManager.d.ts.map +1 -1
- package/build/core/server/serverManager.js +83 -1
- package/build/core/server/serverManager.js.map +1 -1
- package/build/server.d.ts.map +1 -1
- package/build/server.js +1 -0
- package/build/server.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import { DEFAULT_MAX_CONCURRENT_LOADS } from '../../constants/mcp.js';
|
|
3
3
|
import logger, { debugIf } from '../../logger/logger.js';
|
|
4
|
+
import { createTransports } from '../../transport/transportFactory.js';
|
|
4
5
|
import { LoadingState, LoadingStateEvent, LoadingStateTracker, } from './loadingStateTracker.js';
|
|
5
6
|
import { ParallelExecutor } from './parallelExecutor.js';
|
|
6
7
|
/**
|
|
@@ -55,17 +56,44 @@ export var McpLoadingEvent;
|
|
|
55
56
|
* ```
|
|
56
57
|
*/
|
|
57
58
|
export class McpLoadingManager extends EventEmitter {
|
|
59
|
+
/**
|
|
60
|
+
* Most-recently constructed instance, exposed so runtime collaborators (e.g.
|
|
61
|
+
* ConfigChangeHandler) can route hot-reload add/remove through the single
|
|
62
|
+
* canonical loading pipeline. Mirrors ServerManager.current / ClientManager.current.
|
|
63
|
+
*/
|
|
64
|
+
static _current;
|
|
65
|
+
static get current() {
|
|
66
|
+
if (!McpLoadingManager._current) {
|
|
67
|
+
throw new Error('McpLoadingManager not initialized');
|
|
68
|
+
}
|
|
69
|
+
return McpLoadingManager._current;
|
|
70
|
+
}
|
|
58
71
|
clientManager;
|
|
59
72
|
config;
|
|
60
73
|
stateTracker;
|
|
61
74
|
backgroundRetryTimer;
|
|
62
75
|
isShuttingDown = false;
|
|
76
|
+
/** Per-connection-attempt abort controllers (timeout window only) */
|
|
63
77
|
abortControllers = new Map();
|
|
78
|
+
/**
|
|
79
|
+
* Per-server operation abort controllers.
|
|
80
|
+
*
|
|
81
|
+
* Covers the full lifetime of a `loadServer` or background-retry operation
|
|
82
|
+
* for a given server name — including the retry loop and its sleep delays.
|
|
83
|
+
* Cancelling this controller stops the loop immediately and prevents the
|
|
84
|
+
* operation from writing state back after the server has been removed.
|
|
85
|
+
*
|
|
86
|
+
* Invariant: only ONE entry per server name exists at a time. Starting a new
|
|
87
|
+
* operation for a name (`loadServer`, `performBackgroundRetry`) replaces the
|
|
88
|
+
* previous controller after aborting it via `cancelServerOperation`.
|
|
89
|
+
*/
|
|
90
|
+
serverOpAbortControllers = new Map();
|
|
64
91
|
constructor(clientManager, config = {}) {
|
|
65
92
|
super();
|
|
66
93
|
this.clientManager = clientManager;
|
|
67
94
|
this.config = { ...DEFAULT_LOADING_CONFIG, ...config };
|
|
68
95
|
this.stateTracker = new LoadingStateTracker();
|
|
96
|
+
McpLoadingManager._current = this;
|
|
69
97
|
// Forward state tracker events
|
|
70
98
|
this.stateTracker.on(LoadingStateEvent.ServerStateChanged, (name, info) => {
|
|
71
99
|
if (info.state === LoadingState.Ready) {
|
|
@@ -116,22 +144,150 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
116
144
|
// Return current connections (may be empty initially)
|
|
117
145
|
return this.clientManager.getClients();
|
|
118
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Bring a single server online at runtime (config hot-reload add / rename).
|
|
149
|
+
*
|
|
150
|
+
* This is the canonical runtime counterpart to {@link startAsyncLoading}: it
|
|
151
|
+
* routes a hot-reload-added server through the SAME loading pipeline
|
|
152
|
+
* (`loadSingleServer`) that boot uses, so the server is tracked in the
|
|
153
|
+
* LoadingStateTracker and gets identical retry + OAuth handling. Previously
|
|
154
|
+
* the config-change path called `ServerManager.startServer` directly, which
|
|
155
|
+
* connected the client but never registered it with the tracker — so the new
|
|
156
|
+
* server was invisible to `/health/mcp` (stuck "connecting", no OAuth button).
|
|
157
|
+
*
|
|
158
|
+
* Idempotent: if the server already exists it is fully unloaded first (via
|
|
159
|
+
* `unloadServer`, which cancels any in-flight load operation), making renames
|
|
160
|
+
* and modified-restart correct without leaving ghost connections or stale
|
|
161
|
+
* tracker entries.
|
|
162
|
+
*/
|
|
163
|
+
async loadServer(name, config) {
|
|
164
|
+
if (config.disabled) {
|
|
165
|
+
logger.info(`Server ${name} is disabled, skipping load`);
|
|
166
|
+
// Ensure no stale state/connection lingers for a now-disabled server.
|
|
167
|
+
await this.unloadServer(name);
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
// Re-load cleanly if it already exists (rename / functional modify).
|
|
171
|
+
// unloadServer cancels any in-flight operation for this name first.
|
|
172
|
+
if (this.stateTracker.getServerState(name) || this.clientManager.getTransport(name)) {
|
|
173
|
+
await this.unloadServer(name);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Even if not tracked yet, cancel any lingering operation (e.g. a
|
|
177
|
+
// concurrent loadServer call that has not registered with the tracker yet).
|
|
178
|
+
this.cancelServerOperation(name);
|
|
179
|
+
}
|
|
180
|
+
// Claim a new operation slot for this load attempt.
|
|
181
|
+
const opController = new AbortController();
|
|
182
|
+
this.serverOpAbortControllers.set(name, opController);
|
|
183
|
+
let transport;
|
|
184
|
+
try {
|
|
185
|
+
const transports = createTransports({ [name]: config });
|
|
186
|
+
transport = transports[name];
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
logger.error(`Failed to create transport for ${name}: ${error}`);
|
|
190
|
+
this.stateTracker.registerServer(name);
|
|
191
|
+
this.stateTracker.updateServerState(name, LoadingState.Failed, {
|
|
192
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
193
|
+
});
|
|
194
|
+
this.serverOpAbortControllers.delete(name);
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (!transport) {
|
|
198
|
+
logger.warn(`No transport created for ${name} (possibly disabled); skipping`);
|
|
199
|
+
this.serverOpAbortControllers.delete(name);
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Register with the tracker, then run the shared single-server pipeline.
|
|
203
|
+
this.stateTracker.registerServer(name);
|
|
204
|
+
try {
|
|
205
|
+
await this.loadSingleServer(name, transport, opController.signal);
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
// Only clean up our own controller — a concurrent loadServer may have
|
|
209
|
+
// replaced it already.
|
|
210
|
+
if (this.serverOpAbortControllers.get(name) === opController) {
|
|
211
|
+
this.serverOpAbortControllers.delete(name);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Take a single server offline at runtime (config hot-reload remove / rename
|
|
217
|
+
* old name). Disconnects the client, closes the transport, and clears the
|
|
218
|
+
* server's entry from the LoadingStateTracker so it does not linger as a
|
|
219
|
+
* "ghost" in `/health/mcp`.
|
|
220
|
+
*
|
|
221
|
+
* Cancels any in-flight `loadServer` or background-retry operation for `name`
|
|
222
|
+
* before cleaning up, so that the loop cannot write state back after removal.
|
|
223
|
+
*/
|
|
224
|
+
async unloadServer(name) {
|
|
225
|
+
// Cancel any in-flight load or background-retry for this server FIRST, so
|
|
226
|
+
// the retry loop cannot wake up after removal and re-add connections.
|
|
227
|
+
this.cancelServerOperation(name);
|
|
228
|
+
try {
|
|
229
|
+
await this.clientManager.removeClient(name);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
// Guard against: client not present / transport already closed; we still
|
|
233
|
+
// want to clear tracker state below.
|
|
234
|
+
debugIf(() => ({ message: `unloadServer: removeClient(${name}) noop/err: ${error}` }));
|
|
235
|
+
}
|
|
236
|
+
this.stateTracker.removeServer(name);
|
|
237
|
+
logger.info(`Unloaded MCP server: ${name}`);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Abort and remove the operation-level AbortController for `name`, if one
|
|
241
|
+
* exists. This is the single authoritative way to interrupt a `loadSingleServer`
|
|
242
|
+
* retry loop (including its sleep delays and connection attempt) for a specific
|
|
243
|
+
* server.
|
|
244
|
+
*
|
|
245
|
+
* Safe to call when no operation is in flight — it is a no-op in that case.
|
|
246
|
+
*/
|
|
247
|
+
cancelServerOperation(name) {
|
|
248
|
+
const controller = this.serverOpAbortControllers.get(name);
|
|
249
|
+
if (controller) {
|
|
250
|
+
controller.abort();
|
|
251
|
+
this.serverOpAbortControllers.delete(name);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
119
254
|
/**
|
|
120
255
|
* Load servers with concurrency control using ParallelExecutor
|
|
121
256
|
*/
|
|
122
257
|
async loadServersWithConcurrency(transports) {
|
|
123
258
|
const executor = new ParallelExecutor();
|
|
124
259
|
const serverEntries = Object.entries(transports);
|
|
125
|
-
await executor.execute(serverEntries, async ([name, transport]) =>
|
|
260
|
+
await executor.execute(serverEntries, async ([name, transport]) => {
|
|
261
|
+
if (this.isShuttingDown)
|
|
262
|
+
return;
|
|
263
|
+
this.cancelServerOperation(name);
|
|
264
|
+
const opController = new AbortController();
|
|
265
|
+
this.serverOpAbortControllers.set(name, opController);
|
|
266
|
+
try {
|
|
267
|
+
await this.loadSingleServer(name, transport, opController.signal);
|
|
268
|
+
}
|
|
269
|
+
finally {
|
|
270
|
+
if (this.serverOpAbortControllers.get(name) === opController) {
|
|
271
|
+
this.serverOpAbortControllers.delete(name);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}, {
|
|
126
275
|
maxConcurrent: this.config.maxConcurrentLoads,
|
|
127
276
|
});
|
|
128
277
|
logger.info('Initial server loading phase completed');
|
|
129
278
|
}
|
|
130
279
|
/**
|
|
131
|
-
* Load a single server with retry logic
|
|
280
|
+
* Load a single server with retry logic.
|
|
281
|
+
*
|
|
282
|
+
* @param opSignal - Operation-level abort signal provided by the caller
|
|
283
|
+
* (`loadServer` or `performBackgroundRetry`). When this signal fires the
|
|
284
|
+
* retry loop terminates immediately — without writing a Failed state to the
|
|
285
|
+
* tracker — because the cancellation was intentional (e.g. `unloadServer`
|
|
286
|
+
* was called concurrently). The signal is also threaded down into
|
|
287
|
+
* `createClientWithTimeout` so the active connection attempt is aborted too.
|
|
132
288
|
*/
|
|
133
|
-
async loadSingleServer(name, transport) {
|
|
134
|
-
if (this.isShuttingDown)
|
|
289
|
+
async loadSingleServer(name, transport, opSignal) {
|
|
290
|
+
if (this.isShuttingDown || opSignal?.aborted)
|
|
135
291
|
return;
|
|
136
292
|
this.emit(McpLoadingEvent.ServerLoading, name);
|
|
137
293
|
this.stateTracker.updateServerState(name, LoadingState.Loading, {
|
|
@@ -139,7 +295,7 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
139
295
|
});
|
|
140
296
|
let lastError;
|
|
141
297
|
let retryCount = 0;
|
|
142
|
-
while (retryCount <= this.config.maxRetries && !this.isShuttingDown) {
|
|
298
|
+
while (retryCount <= this.config.maxRetries && !this.isShuttingDown && !opSignal?.aborted) {
|
|
143
299
|
try {
|
|
144
300
|
this.stateTracker.updateServerState(name, LoadingState.Loading, {
|
|
145
301
|
progress: {
|
|
@@ -148,33 +304,51 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
148
304
|
},
|
|
149
305
|
});
|
|
150
306
|
// Attempt to create and connect client
|
|
151
|
-
await this.createClientWithTimeout(name, transport);
|
|
307
|
+
await this.createClientWithTimeout(name, transport, opSignal);
|
|
152
308
|
// Success!
|
|
153
309
|
this.stateTracker.updateServerState(name, LoadingState.Ready);
|
|
154
310
|
logger.info(`Successfully loaded MCP server: ${name} (${retryCount} retries)`);
|
|
155
311
|
return;
|
|
156
312
|
}
|
|
157
313
|
catch (error) {
|
|
314
|
+
// If the operation was cancelled, exit cleanly without marking Failed.
|
|
315
|
+
if (opSignal?.aborted) {
|
|
316
|
+
debugIf(() => ({ message: `loadSingleServer: operation cancelled for ${name}` }));
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
158
319
|
lastError = error instanceof Error ? error : new Error(String(error));
|
|
159
320
|
retryCount++;
|
|
160
321
|
this.stateTracker.incrementRetryCount(name);
|
|
161
322
|
// Handle OAuth case specially
|
|
162
323
|
if (lastError.name === 'OAuthRequiredError') {
|
|
163
324
|
logger.info(`OAuth required for ${name}`);
|
|
325
|
+
const authorizationUrl = this.extractAuthorizationUrl(name, transport);
|
|
164
326
|
this.stateTracker.updateServerState(name, LoadingState.AwaitingOAuth, {
|
|
165
327
|
error: lastError,
|
|
328
|
+
authorizationUrl,
|
|
166
329
|
});
|
|
167
330
|
return; // Don't retry OAuth errors
|
|
168
331
|
}
|
|
169
332
|
// Handle other errors
|
|
170
333
|
logger.warn(`Failed to load ${name} (attempt ${retryCount}): ${lastError.message}`);
|
|
171
|
-
if (retryCount <= this.config.maxRetries && !this.isShuttingDown) {
|
|
334
|
+
if (retryCount <= this.config.maxRetries && !this.isShuttingDown && !opSignal?.aborted) {
|
|
172
335
|
const delay = this.config.retryDelayMs * Math.pow(2, retryCount - 1); // Exponential backoff
|
|
173
336
|
logger.info(`Retrying ${name} in ${delay}ms...`);
|
|
174
|
-
|
|
337
|
+
try {
|
|
338
|
+
await this.sleep(delay, opSignal);
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
// sleep was interrupted by opSignal abort; exit cleanly.
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
175
344
|
}
|
|
176
345
|
}
|
|
177
346
|
}
|
|
347
|
+
// If we exited the loop due to intentional cancellation (per-server abort)
|
|
348
|
+
// or global shutdown, don't mark the server as Failed — the exit was
|
|
349
|
+
// deliberate, not a real failure.
|
|
350
|
+
if (opSignal?.aborted || this.isShuttingDown)
|
|
351
|
+
return;
|
|
178
352
|
// All retries exhausted
|
|
179
353
|
this.stateTracker.updateServerState(name, LoadingState.Failed, {
|
|
180
354
|
error: lastError || new Error('Unknown error'),
|
|
@@ -188,12 +362,20 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
188
362
|
}
|
|
189
363
|
}
|
|
190
364
|
/**
|
|
191
|
-
* Create client with timeout and cancellation support
|
|
365
|
+
* Create client with timeout and cancellation support.
|
|
366
|
+
*
|
|
367
|
+
* @param opSignal - Operation-level signal from `loadSingleServer`. When it
|
|
368
|
+
* fires (e.g. because `unloadServer` was called), it is linked to the
|
|
369
|
+
* internal per-connection-attempt AbortController so that the active
|
|
370
|
+
* connection and its timeout are both cancelled.
|
|
192
371
|
*/
|
|
193
|
-
async createClientWithTimeout(name, transport) {
|
|
372
|
+
async createClientWithTimeout(name, transport, opSignal) {
|
|
194
373
|
// Create abort controller for this specific server loading operation
|
|
195
374
|
const abortController = new AbortController();
|
|
196
375
|
this.abortControllers.set(name, abortController);
|
|
376
|
+
// Propagate operation-level cancellation to the connection-attempt abort.
|
|
377
|
+
const onOpAbort = () => abortController.abort();
|
|
378
|
+
opSignal?.addEventListener('abort', onOpAbort, { once: true });
|
|
197
379
|
try {
|
|
198
380
|
const timeoutPromise = new Promise((_, reject) => {
|
|
199
381
|
const timeoutId = setTimeout(() => {
|
|
@@ -212,13 +394,21 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
212
394
|
finally {
|
|
213
395
|
// Clean up abort controller
|
|
214
396
|
this.abortControllers.delete(name);
|
|
397
|
+
opSignal?.removeEventListener('abort', onOpAbort);
|
|
215
398
|
}
|
|
216
399
|
}
|
|
217
400
|
/**
|
|
218
|
-
* Set up background retry for failed servers
|
|
401
|
+
* Set up background retry for failed servers.
|
|
402
|
+
*
|
|
403
|
+
* Idempotent: no-ops if a timer is already running. Without this guard,
|
|
404
|
+
* every hot-reload cycle that drives the tracker to a "complete" summary
|
|
405
|
+
* (e.g. unloadServer leaving all remaining servers ready) would fire
|
|
406
|
+
* LoadingComplete again and install a second interval on top of the first,
|
|
407
|
+
* causing failed servers to be retried N times per tick after N hot-reload
|
|
408
|
+
* cycles.
|
|
219
409
|
*/
|
|
220
410
|
setupBackgroundRetry() {
|
|
221
|
-
if (!this.config.enableBackgroundRetry || this.isShuttingDown) {
|
|
411
|
+
if (!this.config.enableBackgroundRetry || this.isShuttingDown || this.backgroundRetryTimer) {
|
|
222
412
|
return;
|
|
223
413
|
}
|
|
224
414
|
this.backgroundRetryTimer = setInterval(() => {
|
|
@@ -242,13 +432,28 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
242
432
|
for (const serverInfo of serversToRetry) {
|
|
243
433
|
if (this.isShuttingDown)
|
|
244
434
|
break;
|
|
245
|
-
const
|
|
435
|
+
const { name } = serverInfo;
|
|
436
|
+
const transport = this.clientManager.getTransport(name);
|
|
246
437
|
if (transport) {
|
|
247
|
-
this.emit(McpLoadingEvent.BackgroundRetry,
|
|
438
|
+
this.emit(McpLoadingEvent.BackgroundRetry, name, serverInfo.retryCount + 1);
|
|
439
|
+
// Cancel any previous operation for this server and claim a new slot.
|
|
440
|
+
// This prevents a stale background-retry from racing with a concurrent
|
|
441
|
+
// loadServer or unloadServer call.
|
|
442
|
+
this.cancelServerOperation(name);
|
|
443
|
+
const opController = new AbortController();
|
|
444
|
+
this.serverOpAbortControllers.set(name, opController);
|
|
248
445
|
// Don't wait for completion, let it run in background
|
|
249
|
-
this.loadSingleServer(
|
|
446
|
+
this.loadSingleServer(name, transport, opController.signal)
|
|
447
|
+
.catch((error) => {
|
|
250
448
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
251
|
-
debugIf(() => ({ message: `Background retry failed for ${
|
|
449
|
+
debugIf(() => ({ message: `Background retry failed for ${name}: ${errorMessage}` }));
|
|
450
|
+
})
|
|
451
|
+
.finally(() => {
|
|
452
|
+
// Clean up our own controller only — a concurrent operation may have
|
|
453
|
+
// replaced it.
|
|
454
|
+
if (this.serverOpAbortControllers.get(name) === opController) {
|
|
455
|
+
this.serverOpAbortControllers.delete(name);
|
|
456
|
+
}
|
|
252
457
|
});
|
|
253
458
|
}
|
|
254
459
|
}
|
|
@@ -259,6 +464,22 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
259
464
|
getStateTracker() {
|
|
260
465
|
return this.stateTracker;
|
|
261
466
|
}
|
|
467
|
+
extractAuthorizationUrl(name, transport) {
|
|
468
|
+
const clientInfo = this.clientManager.getClients().get(name);
|
|
469
|
+
if (clientInfo?.authorizationUrl) {
|
|
470
|
+
return clientInfo.authorizationUrl;
|
|
471
|
+
}
|
|
472
|
+
try {
|
|
473
|
+
const oauthProvider = transport.oauthProvider;
|
|
474
|
+
if (oauthProvider && typeof oauthProvider.getAuthorizationUrl === 'function') {
|
|
475
|
+
return oauthProvider.getAuthorizationUrl();
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
catch (error) {
|
|
479
|
+
debugIf(() => ({ message: `Could not extract authorization URL for ${name}: ${error}` }));
|
|
480
|
+
}
|
|
481
|
+
return undefined;
|
|
482
|
+
}
|
|
262
483
|
/**
|
|
263
484
|
* Get current loading summary
|
|
264
485
|
*/
|
|
@@ -285,17 +506,37 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
285
506
|
return this.stateTracker.getServersByState(LoadingState.Failed).map((s) => s.name);
|
|
286
507
|
}
|
|
287
508
|
/**
|
|
288
|
-
* Cancel loading of a specific server
|
|
509
|
+
* Cancel loading of a specific server.
|
|
510
|
+
*
|
|
511
|
+
* Cancels both the operation-level retry loop (serverOpAbortControllers) and
|
|
512
|
+
* the active connection-attempt timeout (abortControllers). Before this fix,
|
|
513
|
+
* only the connection-attempt abort was signalled, so a server sleeping
|
|
514
|
+
* between retries would continue uninterrupted and could resurface as Loading,
|
|
515
|
+
* Ready, or Failed after the caller believed it was cancelled.
|
|
289
516
|
*/
|
|
290
517
|
cancelServerLoading(serverName) {
|
|
518
|
+
const hasOpController = this.serverOpAbortControllers.has(serverName);
|
|
519
|
+
const hasConnController = this.abortControllers.has(serverName);
|
|
520
|
+
if (!hasOpController && !hasConnController) {
|
|
521
|
+
logger.warn(`No active loading operation found for server: ${serverName}`);
|
|
522
|
+
return;
|
|
523
|
+
}
|
|
524
|
+
logger.info(`Cancelling loading of server: ${serverName}`);
|
|
525
|
+
// Cancel the full retry loop first (interrupts sleep delays and signals the
|
|
526
|
+
// loop to exit cleanly without writing state back).
|
|
527
|
+
this.cancelServerOperation(serverName);
|
|
528
|
+
// Also abort the active connection-attempt controller if one exists (covers
|
|
529
|
+
// the case where we are mid-connect and cancelServerOperation has not yet
|
|
530
|
+
// propagated through createClientWithTimeout).
|
|
291
531
|
const abortController = this.abortControllers.get(serverName);
|
|
292
532
|
if (abortController) {
|
|
293
|
-
logger.info(`Cancelling loading of server: ${serverName}`);
|
|
294
533
|
abortController.abort();
|
|
295
|
-
this.stateTracker.updateServerState(serverName, LoadingState.Cancelled);
|
|
296
534
|
}
|
|
297
|
-
|
|
298
|
-
|
|
535
|
+
// Mark the tracker entry as Cancelled only if the server is still tracked.
|
|
536
|
+
// (cancelServerOperation may have already removed it via unloadServer; guard
|
|
537
|
+
// to avoid "unknown server" warning from updateServerState.)
|
|
538
|
+
if (this.stateTracker.getServerState(serverName)) {
|
|
539
|
+
this.stateTracker.updateServerState(serverName, LoadingState.Cancelled);
|
|
299
540
|
}
|
|
300
541
|
}
|
|
301
542
|
/**
|
|
@@ -307,20 +548,28 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
307
548
|
}
|
|
308
549
|
}
|
|
309
550
|
/**
|
|
310
|
-
* Cancel all currently loading servers
|
|
551
|
+
* Cancel all currently loading servers.
|
|
552
|
+
*
|
|
553
|
+
* Previously iterated only abortControllers (connection-attempt window), so
|
|
554
|
+
* servers sleeping between retries were invisible and never cancelled. Now
|
|
555
|
+
* collects the union of both maps so every in-flight operation is reached.
|
|
311
556
|
*/
|
|
312
557
|
cancelAllLoading() {
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
558
|
+
// Union of servers that are either mid-connection-attempt or mid-retry-sleep.
|
|
559
|
+
const allActive = new Set([...this.abortControllers.keys(), ...this.serverOpAbortControllers.keys()]);
|
|
560
|
+
if (allActive.size > 0) {
|
|
561
|
+
logger.info(`Cancelling loading of ${allActive.size} servers`);
|
|
562
|
+
this.cancelServersLoading(Array.from(allActive));
|
|
317
563
|
}
|
|
318
564
|
}
|
|
319
565
|
/**
|
|
320
|
-
* Get list of servers that are currently being loaded and can be cancelled
|
|
566
|
+
* Get list of servers that are currently being loaded and can be cancelled.
|
|
567
|
+
*
|
|
568
|
+
* Returns the union of servers with an active connection attempt and servers
|
|
569
|
+
* sleeping between retries — both are cancellable via cancelServerLoading.
|
|
321
570
|
*/
|
|
322
571
|
getCancellableServers() {
|
|
323
|
-
return Array.from(this.abortControllers.keys());
|
|
572
|
+
return Array.from(new Set([...this.abortControllers.keys(), ...this.serverOpAbortControllers.keys()]));
|
|
324
573
|
}
|
|
325
574
|
/**
|
|
326
575
|
* Shutdown the loading manager
|
|
@@ -331,6 +580,12 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
331
580
|
clearInterval(this.backgroundRetryTimer);
|
|
332
581
|
this.backgroundRetryTimer = undefined;
|
|
333
582
|
}
|
|
583
|
+
// Cancel all per-server operation controllers first (interrupts retry loops
|
|
584
|
+
// and sleep delays), then cancel the per-connection-attempt controllers.
|
|
585
|
+
for (const controller of this.serverOpAbortControllers.values()) {
|
|
586
|
+
controller.abort();
|
|
587
|
+
}
|
|
588
|
+
this.serverOpAbortControllers.clear();
|
|
334
589
|
// Cancel any active loading operations
|
|
335
590
|
this.cancelAllLoading();
|
|
336
591
|
// Update state for any remaining pending/loading servers
|
|
@@ -342,10 +597,25 @@ export class McpLoadingManager extends EventEmitter {
|
|
|
342
597
|
logger.info('MCP loading manager shutdown complete');
|
|
343
598
|
}
|
|
344
599
|
/**
|
|
345
|
-
* Utility method for sleeping
|
|
600
|
+
* Utility method for sleeping.
|
|
601
|
+
*
|
|
602
|
+
* When `signal` is provided the sleep is cancellable: aborting the signal
|
|
603
|
+
* rejects the returned promise immediately (clearing the underlying timer),
|
|
604
|
+
* which causes the retry loop in `loadSingleServer` to exit without waiting
|
|
605
|
+
* for the full delay.
|
|
346
606
|
*/
|
|
347
|
-
sleep(ms) {
|
|
348
|
-
return new Promise((resolve) =>
|
|
607
|
+
sleep(ms, signal) {
|
|
608
|
+
return new Promise((resolve, reject) => {
|
|
609
|
+
if (signal?.aborted) {
|
|
610
|
+
reject(new Error('Sleep aborted'));
|
|
611
|
+
return;
|
|
612
|
+
}
|
|
613
|
+
const id = setTimeout(resolve, ms);
|
|
614
|
+
signal?.addEventListener('abort', () => {
|
|
615
|
+
clearTimeout(id);
|
|
616
|
+
reject(new Error('Sleep aborted'));
|
|
617
|
+
}, { once: true });
|
|
618
|
+
});
|
|
349
619
|
}
|
|
350
620
|
}
|
|
351
621
|
//# sourceMappingURL=mcpLoadingManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpLoadingManager.js","sourceRoot":"","sources":["../../../src/core/loading/mcpLoadingManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAsBzD;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAqB;IACtD,eAAe,EAAE,KAAK,EAAE,wBAAwB;IAChD,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,IAAI,EAAE,0BAA0B;IAC9C,kBAAkB,EAAE,4BAA4B;IAChD,iBAAiB,EAAE,IAAI;IACvB,qBAAqB,EAAE,IAAI;IAC3B,yBAAyB,EAAE,KAAK,EAAE,qBAAqB;CACxD,CAAC;AAaF;;GAEG;AACH,MAAM,CAAN,IAAkB,eASjB;AATD,WAAkB,eAAe;IAC/B,qDAAkC,CAAA;IAClC,mDAAgC,CAAA;IAChC,iDAA8B,CAAA;IAC9B,iDAA8B,CAAA;IAC9B,mDAAgC,CAAA;IAChC,uDAAoC,CAAA;IACpC,uDAAoC,CAAA;IACpC,uDAAoC,CAAA;AACtC,CAAC,EATiB,eAAe,KAAf,eAAe,QAShC;AAaD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,iBAAkB,SAAQ,YAAY;IACzC,aAAa,CAAgB;IAC7B,MAAM,CAAmB;IACzB,YAAY,CAAsB;IAClC,oBAAoB,CAAiC;IACrD,cAAc,GAAY,KAAK,CAAC;IAChC,gBAAgB,GAAiC,IAAI,GAAG,EAAE,CAAC;IAEnE,YAAY,aAA4B,EAAE,SAAoC,EAAE;QAC9E,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,sBAAsB,EAAE,GAAG,MAAM,EAAE,CAAC;QACvD,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAE9C,+BAA+B;QAC/B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,IAAY,EAAE,IAAuB,EAAE,EAAE;YACnG,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE;oBAC5C,IAAI;oBACJ,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,EAAE;oBAC5C,IAAI;oBACJ,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAC5B,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,KAAK,YAAY,CAAC,aAAa,EAAE,CAAC;gBACrD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACxE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAuB,EAAE,EAAE;YAClF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC,OAAuB,EAAE,EAAE;YAClF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,uBAAuB;IACpD,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB,CAAC,UAAiD;QAC9E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACtC,OAAO,IAAI,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,6BAA6B,WAAW,CAAC,MAAM,cAAc,CAAC,CAAC;QAC3E,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAEvD,iDAAiD;QACjD,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;QAE5C,sDAAsD;QACtD,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,0BAA0B,CAAC,UAAiD;QACxF,MAAM,QAAQ,GAAG,IAAI,gBAAgB,EAAyC,CAAC;QAC/E,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEjD,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;YACzG,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,kBAAkB;SAC9C,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,gBAAgB,CAAC,IAAY,EAAE,SAAgC;QAC3E,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAEhC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE;YAC9D,QAAQ,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,4BAA4B,EAAE;SAC3E,CAAC,CAAC;QAEH,IAAI,SAA4B,CAAC;QACjC,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,OAAO,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpE,IAAI,CAAC;gBACH,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE;oBAC9D,QAAQ,EAAE;wBACR,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY;wBACjD,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC,CAAC,sBAAsB;qBACjF;iBACF,CAAC,CAAC;gBAEH,uCAAuC;gBACvC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAEpD,WAAW;gBACX,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,KAAK,UAAU,WAAW,CAAC,CAAC;gBAC/E,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBAE5C,8BAA8B;gBAC9B,IAAI,SAAS,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;oBAC1C,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,aAAa,EAAE;wBACpE,KAAK,EAAE,SAAS;qBACjB,CAAC,CAAC;oBACH,OAAO,CAAC,2BAA2B;gBACrC,CAAC;gBAED,sBAAsB;gBACtB,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,aAAa,UAAU,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;gBAEpF,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACjE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB;oBAC5F,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC;oBACjD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE;YAC7D,KAAK,EAAE,SAAS,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,yCAAyC,CAAC,CAAC;QAChH,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,4BAA4B,CAAC,CAAC;YACjE,MAAM,SAAS,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CAAC,IAAY,EAAE,SAAgC;QAClF,qEAAqE;QACrE,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACtD,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAChC,eAAe,CAAC,KAAK,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,IAAI,UAAU,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC;gBACtF,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBAEhC,wCAAwC;gBACxC,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;oBACpD,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,gBAAgB,CAAC,CAAC,CAAC;gBACrD,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;YAEnG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;QACpD,CAAC;gBAAS,CAAC;YACT,4BAA4B;YAC5B,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;YAC3C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAE1C,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB;QAClC,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QAEhC,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE/E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,wBAAwB,aAAa,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAE3E,oEAAoE;QACpE,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;QAE1E,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,cAAc;gBAAE,MAAM;YAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACnE,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;gBAEvF,sDAAsD;gBACtD,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACzE,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,+BAA+B,UAAU,CAAC,IAAI,KAAK,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;gBAClG,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACI,UAAU;QACf,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,IAAY;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,KAAK,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrF,CAAC;IAED;;OAEG;IACI,mBAAmB,CAAC,UAAkB;QAC3C,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;YAC3D,eAAe,CAAC,KAAK,EAAE,CAAC;YACxB,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,iDAAiD,UAAU,EAAE,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED;;OAEG;IACI,oBAAoB,CAAC,WAAqB;QAC/C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;OAEG;IACI,gBAAgB;QACrB,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,yBAAyB,cAAc,CAAC,MAAM,UAAU,CAAC,CAAC;YACtE,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED;;OAEG;IACI,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAE3B,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC9B,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACzC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;QACxC,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,yDAAyD;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEjF,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"mcpLoadingManager.js","sourceRoot":"","sources":["../../../src/core/loading/mcpLoadingManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
2
2
|
import type { OutboundConnections } from '../../core/types/client.js';
|
|
3
|
-
import { MCPServerParams } from '../../core/types/index.js';
|
|
3
|
+
import { AuthProviderTransport, MCPServerParams } from '../../core/types/index.js';
|
|
4
4
|
/**
|
|
5
5
|
* Manages the lifecycle of MCP server instances (start, stop, restart)
|
|
6
6
|
*/
|
|
@@ -31,6 +31,14 @@ export declare class MCPServerLifecycleManager {
|
|
|
31
31
|
* Check if a specific MCP server is running
|
|
32
32
|
*/
|
|
33
33
|
isMcpServerRunning(serverName: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Track a server whose connection is managed by another startup path.
|
|
36
|
+
*/
|
|
37
|
+
trackServer(serverName: string, config: MCPServerParams, transport: AuthProviderTransport): void;
|
|
38
|
+
/**
|
|
39
|
+
* Remove lifecycle tracking without touching the already-cleaned-up transport.
|
|
40
|
+
*/
|
|
41
|
+
untrackServer(serverName: string): void;
|
|
34
42
|
/**
|
|
35
43
|
* Update metadata for a running server without restarting it
|
|
36
44
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcpServerLifecycleManager.d.ts","sourceRoot":"","sources":["../../../src/core/server/mcpServerLifecycleManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAK1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,
|
|
1
|
+
{"version":3,"file":"mcpServerLifecycleManager.d.ts","sourceRoot":"","sources":["../../../src/core/server/mcpServerLifecycleManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAK1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAIlF;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,UAAU,CAAyF;IAC3G,OAAO,CAAC,aAAa,CAAC,CAAgB;;IAMtC;;OAEG;IACU,WAAW,CACtB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAyChB;;OAEG;IACU,UAAU,CACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAkChB;;OAEG;IACU,aAAa,CACxB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,EACvB,aAAa,EAAE,mBAAmB,EAClC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC;IAqBhB;;OAEG;IACI,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC;IAavF;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItD;;OAEG;IACI,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,qBAAqB,GAAG,IAAI;IAavG;;OAEG;IACI,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAM9C;;OAEG;IACU,oBAAoB,CAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,mBAAmB,GACjC,OAAO,CAAC,IAAI,CAAC;IA6ChB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;OAEG;YACW,qBAAqB;IAgCnC;;OAEG;YACW,eAAe;IAgC7B;;OAEG;YACW,oBAAoB;CA0BnC"}
|
|
@@ -121,6 +121,28 @@ export class MCPServerLifecycleManager {
|
|
|
121
121
|
isMcpServerRunning(serverName) {
|
|
122
122
|
return this.mcpServers.has(serverName);
|
|
123
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Track a server whose connection is managed by another startup path.
|
|
126
|
+
*/
|
|
127
|
+
trackServer(serverName, config, transport) {
|
|
128
|
+
if (config.disabled) {
|
|
129
|
+
this.mcpServers.delete(serverName);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.mcpServers.set(serverName, { transport, config });
|
|
133
|
+
debugIf(() => ({
|
|
134
|
+
message: `Tracked MCP server lifecycle state: ${serverName}`,
|
|
135
|
+
meta: { serverName, tags: config.tags },
|
|
136
|
+
}));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Remove lifecycle tracking without touching the already-cleaned-up transport.
|
|
140
|
+
*/
|
|
141
|
+
untrackServer(serverName) {
|
|
142
|
+
if (this.mcpServers.delete(serverName)) {
|
|
143
|
+
debugIf(() => ({ message: `Untracked MCP server lifecycle state: ${serverName}` }));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
124
146
|
/**
|
|
125
147
|
* Update metadata for a running server without restarting it
|
|
126
148
|
*/
|