@1mcp/agent 0.16.0 → 0.17.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 (156) hide show
  1. package/README.md +37 -2
  2. package/build/commands/app/backups.d.ts +17 -0
  3. package/build/commands/app/backups.d.ts.map +1 -0
  4. package/build/commands/app/backups.js +162 -0
  5. package/build/commands/app/backups.js.map +1 -0
  6. package/build/commands/app/consolidate.d.ts +21 -0
  7. package/build/commands/app/consolidate.d.ts.map +1 -0
  8. package/build/commands/app/consolidate.js +383 -0
  9. package/build/commands/app/consolidate.js.map +1 -0
  10. package/build/commands/app/discover.d.ts +16 -0
  11. package/build/commands/app/discover.d.ts.map +1 -0
  12. package/build/commands/app/discover.js +79 -0
  13. package/build/commands/app/discover.js.map +1 -0
  14. package/build/commands/app/index.d.ts +12 -0
  15. package/build/commands/app/index.d.ts.map +1 -0
  16. package/build/commands/app/index.js +274 -0
  17. package/build/commands/app/index.js.map +1 -0
  18. package/build/commands/app/list.d.ts +16 -0
  19. package/build/commands/app/list.d.ts.map +1 -0
  20. package/build/commands/app/list.js +95 -0
  21. package/build/commands/app/list.js.map +1 -0
  22. package/build/commands/app/restore.d.ts +21 -0
  23. package/build/commands/app/restore.d.ts.map +1 -0
  24. package/build/commands/app/restore.js +265 -0
  25. package/build/commands/app/restore.js.map +1 -0
  26. package/build/commands/app/status.d.ts +16 -0
  27. package/build/commands/app/status.d.ts.map +1 -0
  28. package/build/commands/app/status.js +224 -0
  29. package/build/commands/app/status.js.map +1 -0
  30. package/build/commands/mcp/add.d.ts +19 -0
  31. package/build/commands/mcp/add.d.ts.map +1 -0
  32. package/build/commands/mcp/add.js +135 -0
  33. package/build/commands/mcp/add.js.map +1 -0
  34. package/build/commands/mcp/enable.d.ts +13 -0
  35. package/build/commands/mcp/enable.d.ts.map +1 -0
  36. package/build/commands/mcp/enable.js +100 -0
  37. package/build/commands/mcp/enable.js.map +1 -0
  38. package/build/commands/mcp/index.d.ts +12 -0
  39. package/build/commands/mcp/index.d.ts.map +1 -0
  40. package/build/commands/mcp/index.js +351 -0
  41. package/build/commands/mcp/index.js.map +1 -0
  42. package/build/commands/mcp/list.d.ts +11 -0
  43. package/build/commands/mcp/list.d.ts.map +1 -0
  44. package/build/commands/mcp/list.js +144 -0
  45. package/build/commands/mcp/list.js.map +1 -0
  46. package/build/commands/mcp/remove.d.ts +10 -0
  47. package/build/commands/mcp/remove.d.ts.map +1 -0
  48. package/build/commands/mcp/remove.js +89 -0
  49. package/build/commands/mcp/remove.js.map +1 -0
  50. package/build/commands/mcp/status.d.ts +10 -0
  51. package/build/commands/mcp/status.d.ts.map +1 -0
  52. package/build/commands/mcp/status.js +243 -0
  53. package/build/commands/mcp/status.js.map +1 -0
  54. package/build/commands/mcp/update.d.ts +18 -0
  55. package/build/commands/mcp/update.d.ts.map +1 -0
  56. package/build/commands/mcp/update.js +157 -0
  57. package/build/commands/mcp/update.js.map +1 -0
  58. package/build/commands/mcp/utils/configUtils.d.ts +64 -0
  59. package/build/commands/mcp/utils/configUtils.d.ts.map +1 -0
  60. package/build/commands/mcp/utils/configUtils.js +266 -0
  61. package/build/commands/mcp/utils/configUtils.js.map +1 -0
  62. package/build/commands/mcp/utils/doubleHyphenParser.d.ts +32 -0
  63. package/build/commands/mcp/utils/doubleHyphenParser.d.ts.map +1 -0
  64. package/build/commands/mcp/utils/doubleHyphenParser.js +61 -0
  65. package/build/commands/mcp/utils/doubleHyphenParser.js.map +1 -0
  66. package/build/commands/mcp/utils/validation.d.ts +33 -0
  67. package/build/commands/mcp/utils/validation.d.ts.map +1 -0
  68. package/build/commands/mcp/utils/validation.js +235 -0
  69. package/build/commands/mcp/utils/validation.js.map +1 -0
  70. package/build/constants.d.ts +11 -2
  71. package/build/constants.d.ts.map +1 -1
  72. package/build/constants.js +15 -2
  73. package/build/constants.js.map +1 -1
  74. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts +96 -0
  75. package/build/core/capabilities/asyncLoadingOrchestrator.d.ts.map +1 -0
  76. package/build/core/capabilities/asyncLoadingOrchestrator.js +256 -0
  77. package/build/core/capabilities/asyncLoadingOrchestrator.js.map +1 -0
  78. package/build/core/capabilities/capabilityAggregator.d.ts +114 -0
  79. package/build/core/capabilities/capabilityAggregator.d.ts.map +1 -0
  80. package/build/core/capabilities/capabilityAggregator.js +234 -0
  81. package/build/core/capabilities/capabilityAggregator.js.map +1 -0
  82. package/build/core/client/clientManager.d.ts +28 -0
  83. package/build/core/client/clientManager.d.ts.map +1 -1
  84. package/build/core/client/clientManager.js +120 -0
  85. package/build/core/client/clientManager.js.map +1 -1
  86. package/build/core/loading/loadingStateTracker.d.ts +128 -0
  87. package/build/core/loading/loadingStateTracker.d.ts.map +1 -0
  88. package/build/core/loading/loadingStateTracker.js +209 -0
  89. package/build/core/loading/loadingStateTracker.js.map +1 -0
  90. package/build/core/loading/mcpLoadingManager.d.ts +139 -0
  91. package/build/core/loading/mcpLoadingManager.d.ts.map +1 -0
  92. package/build/core/loading/mcpLoadingManager.js +296 -0
  93. package/build/core/loading/mcpLoadingManager.js.map +1 -0
  94. package/build/core/notifications/notificationManager.d.ts +111 -0
  95. package/build/core/notifications/notificationManager.d.ts.map +1 -0
  96. package/build/core/notifications/notificationManager.js +232 -0
  97. package/build/core/notifications/notificationManager.js.map +1 -0
  98. package/build/core/server/agentConfig.d.ts +50 -0
  99. package/build/core/server/agentConfig.d.ts.map +1 -1
  100. package/build/core/server/agentConfig.js +68 -1
  101. package/build/core/server/agentConfig.js.map +1 -1
  102. package/build/core/server/serverManager.d.ts +1 -0
  103. package/build/core/server/serverManager.d.ts.map +1 -1
  104. package/build/core/server/serverManager.js +3 -0
  105. package/build/core/server/serverManager.js.map +1 -1
  106. package/build/index.js +115 -32
  107. package/build/index.js.map +1 -1
  108. package/build/server.d.ts +23 -2
  109. package/build/server.d.ts.map +1 -1
  110. package/build/server.js +83 -10
  111. package/build/server.js.map +1 -1
  112. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts +79 -0
  113. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.d.ts.map +1 -0
  114. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js +243 -0
  115. package/build/transport/http/middlewares/mcpAvailabilityMiddleware.js.map +1 -0
  116. package/build/transport/http/routes/healthRoutes.d.ts +2 -1
  117. package/build/transport/http/routes/healthRoutes.d.ts.map +1 -1
  118. package/build/transport/http/routes/healthRoutes.js +170 -1
  119. package/build/transport/http/routes/healthRoutes.js.map +1 -1
  120. package/build/transport/http/routes/sseRoutes.d.ts +2 -1
  121. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  122. package/build/transport/http/routes/sseRoutes.js +13 -1
  123. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  124. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
  125. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  126. package/build/transport/http/routes/streamableHttpRoutes.js +13 -1
  127. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  128. package/build/transport/http/server.d.ts +7 -1
  129. package/build/transport/http/server.d.ts.map +1 -1
  130. package/build/transport/http/server.js +15 -4
  131. package/build/transport/http/server.js.map +1 -1
  132. package/build/transport/transportFactory.d.ts +4 -0
  133. package/build/transport/transportFactory.d.ts.map +1 -1
  134. package/build/transport/transportFactory.js +1 -1
  135. package/build/transport/transportFactory.js.map +1 -1
  136. package/build/utils/appDiscovery.d.ts +75 -0
  137. package/build/utils/appDiscovery.d.ts.map +1 -0
  138. package/build/utils/appDiscovery.js +358 -0
  139. package/build/utils/appDiscovery.js.map +1 -0
  140. package/build/utils/appPresets.d.ts +88 -0
  141. package/build/utils/appPresets.d.ts.map +1 -0
  142. package/build/utils/appPresets.js +430 -0
  143. package/build/utils/appPresets.js.map +1 -0
  144. package/build/utils/backupManager.d.ts +61 -0
  145. package/build/utils/backupManager.d.ts.map +1 -0
  146. package/build/utils/backupManager.js +314 -0
  147. package/build/utils/backupManager.js.map +1 -0
  148. package/build/utils/urlDetection.d.ts +35 -0
  149. package/build/utils/urlDetection.d.ts.map +1 -0
  150. package/build/utils/urlDetection.js +115 -0
  151. package/build/utils/urlDetection.js.map +1 -0
  152. package/build/utils/validationHelpers.d.ts +62 -0
  153. package/build/utils/validationHelpers.d.ts.map +1 -0
  154. package/build/utils/validationHelpers.js +252 -0
  155. package/build/utils/validationHelpers.js.map +1 -0
  156. package/package.json +9 -2
package/build/server.js CHANGED
@@ -4,30 +4,103 @@ import { createTransports } from './transport/transportFactory.js';
4
4
  import { ClientManager } from './core/client/clientManager.js';
5
5
  import { ServerManager } from './core/server/serverManager.js';
6
6
  import { McpConfigManager } from './config/mcpConfigManager.js';
7
+ import { AgentConfigManager } from './core/server/agentConfig.js';
7
8
  import configReloadService from './services/configReloadService.js';
9
+ import { McpLoadingManager } from './core/loading/mcpLoadingManager.js';
10
+ import { AsyncLoadingOrchestrator } from './core/capabilities/asyncLoadingOrchestrator.js';
8
11
  /**
9
12
  * Main function to set up the MCP server
13
+ * Conditionally uses async or legacy loading based on configuration
10
14
  */
11
15
  async function setupServer() {
12
16
  try {
13
17
  const mcpConfig = McpConfigManager.getInstance().getTransportConfig();
18
+ const agentConfig = AgentConfigManager.getInstance();
19
+ const asyncLoadingEnabled = agentConfig.isAsyncLoadingEnabled();
14
20
  // Create transports from configuration
15
21
  const transports = createTransports(mcpConfig);
16
22
  logger.info(`Created ${Object.keys(transports).length} transports`);
17
- // Create clients for each transport
18
- const clientManager = ClientManager.getOrCreateInstance();
19
- const clients = await clientManager.createClients(transports);
20
- logger.info(`Created ${clients.size} clients`);
21
- const serverManager = ServerManager.getOrCreateInstance({ name: MCP_SERVER_NAME, version: MCP_SERVER_VERSION }, { capabilities: MCP_SERVER_CAPABILITIES }, clients, transports);
22
- // Initialize config reload service at server startup
23
- configReloadService.initialize(transports);
24
- logger.info('Server setup completed successfully');
25
- return serverManager;
23
+ if (asyncLoadingEnabled) {
24
+ logger.info('Using async loading mode - HTTP server will start immediately, MCP servers load in background');
25
+ return setupServerAsync(transports);
26
+ }
27
+ else {
28
+ logger.info('Using legacy synchronous loading mode - waiting for all MCP servers before starting HTTP server');
29
+ return setupServerSync(transports);
30
+ }
26
31
  }
27
32
  catch (error) {
28
33
  logger.error(`Failed to set up server: ${error}`);
29
34
  throw error;
30
35
  }
31
36
  }
32
- export { setupServer };
37
+ /**
38
+ * Set up server with async loading (new mode)
39
+ * HTTP server starts immediately, MCP servers load in background
40
+ */
41
+ async function setupServerAsync(transports) {
42
+ // Initialize client manager without connecting (for async loading)
43
+ const clientManager = ClientManager.getOrCreateInstance();
44
+ const clients = clientManager.initializeClientsAsync(transports);
45
+ logger.info(`Initialized storage for ${Object.keys(transports).length} MCP servers`);
46
+ // Create server manager with empty clients initially
47
+ const serverManager = ServerManager.getOrCreateInstance({ name: MCP_SERVER_NAME, version: MCP_SERVER_VERSION }, { capabilities: MCP_SERVER_CAPABILITIES }, clients, transports);
48
+ // Initialize config reload service
49
+ configReloadService.initialize(transports);
50
+ // Create loading manager for async MCP server initialization
51
+ const loadingManager = new McpLoadingManager(clientManager);
52
+ // Create async loading orchestrator for capability tracking and notifications
53
+ const asyncOrchestrator = new AsyncLoadingOrchestrator(clients, serverManager, loadingManager);
54
+ asyncOrchestrator.initialize();
55
+ // Start async loading (non-blocking)
56
+ const loadingPromise = loadingManager
57
+ .startAsyncLoading(transports)
58
+ .then(() => {
59
+ logger.info('All MCP servers finished loading (successfully or failed)');
60
+ })
61
+ .catch((error) => {
62
+ logger.error('MCP loading process encountered an error:', error);
63
+ });
64
+ logger.info('Async server setup completed - HTTP server ready, MCP servers loading in background');
65
+ return {
66
+ serverManager,
67
+ loadingManager,
68
+ loadingPromise,
69
+ asyncOrchestrator,
70
+ };
71
+ }
72
+ /**
73
+ * Set up server with legacy synchronous loading
74
+ * Waits for all MCP servers to load before returning
75
+ */
76
+ async function setupServerSync(transports) {
77
+ // Use the standard synchronous client creation
78
+ const clientManager = ClientManager.getOrCreateInstance();
79
+ const clients = await clientManager.createClients(transports);
80
+ logger.info(`Connected to ${clients.size} MCP servers synchronously`);
81
+ // Create server manager with connected clients
82
+ const serverManager = ServerManager.getOrCreateInstance({ name: MCP_SERVER_NAME, version: MCP_SERVER_VERSION }, { capabilities: MCP_SERVER_CAPABILITIES }, clients, transports);
83
+ // Initialize config reload service
84
+ configReloadService.initialize(transports);
85
+ // Create a dummy loading manager for compatibility
86
+ const loadingManager = new McpLoadingManager(clientManager);
87
+ const loadingPromise = Promise.resolve(); // Already loaded
88
+ logger.info('Synchronous server setup completed - all MCP servers connected');
89
+ return {
90
+ serverManager,
91
+ loadingManager,
92
+ loadingPromise,
93
+ };
94
+ }
95
+ /**
96
+ * Legacy function for backward compatibility
97
+ * @deprecated Use setupServer() which returns ServerSetupResult
98
+ */
99
+ async function setupServerLegacy() {
100
+ const result = await setupServer();
101
+ // Wait for loading to complete for legacy behavior
102
+ await result.loadingPromise;
103
+ return result.serverManager;
104
+ }
105
+ export { setupServer, setupServerLegacy };
33
106
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,mBAAmB,MAAM,mCAAmC,CAAC;AAEpE;;GAEG;AACH,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,kBAAkB,EAAE,CAAC;QACtE,uCAAuC;QACvC,MAAM,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,aAAa,CAAC,CAAC;QAEpE,oCAAoC;QACpC,MAAM,aAAa,GAAG,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,IAAI,UAAU,CAAC,CAAC;QAE/C,MAAM,aAAa,GAAG,aAAa,CAAC,mBAAmB,CACrD,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,EACtD,EAAE,YAAY,EAAE,uBAAuB,EAAE,EACzC,OAAO,EACP,UAAU,CACX,CAAC;QAEF,qDAAqD;QACrD,mBAAmB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAE3C,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QAClD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ import { McpLoadingManager } from '../../../core/loading/mcpLoadingManager.js';
3
+ /**
4
+ * Extended request interface to include MCP loading information
5
+ */
6
+ export interface McpRequest extends Request {
7
+ mcpAvailability?: {
8
+ availableServers: string[];
9
+ unavailableServers: string[];
10
+ loadingServers: string[];
11
+ oauthRequiredServers: string[];
12
+ hasPartialAvailability: boolean;
13
+ allServersReady: boolean;
14
+ requestedTags?: string[];
15
+ totalServersBeforeFiltering?: number;
16
+ };
17
+ }
18
+ /**
19
+ * Middleware options for MCP availability checking
20
+ */
21
+ export interface McpAvailabilityOptions {
22
+ /** Whether to allow requests when some servers are still loading */
23
+ allowPartialAvailability?: boolean;
24
+ /** Whether to include OAuth-required servers as available */
25
+ includeOAuthServers?: boolean;
26
+ /** Custom error message for unavailable servers */
27
+ unavailableMessage?: string;
28
+ /** Custom error message for loading servers */
29
+ loadingMessage?: string;
30
+ }
31
+ /**
32
+ * Creates middleware that checks MCP server availability before processing requests
33
+ *
34
+ * This middleware examines the loading state of MCP servers and provides different
35
+ * behaviors based on server availability and configuration options.
36
+ *
37
+ * @param loadingManager - The MCP loading manager instance
38
+ * @param options - Configuration options for availability checking
39
+ * @returns Express middleware function
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const availabilityMiddleware = createMcpAvailabilityMiddleware(loadingManager, {
44
+ * allowPartialAvailability: true,
45
+ * includeOAuthServers: false,
46
+ * });
47
+ *
48
+ * router.post('/mcp', availabilityMiddleware, (req, res) => {
49
+ * // Handle MCP request with availability info in req.mcpAvailability
50
+ * });
51
+ * ```
52
+ */
53
+ export declare function createMcpAvailabilityMiddleware(loadingManager?: McpLoadingManager, options?: McpAvailabilityOptions): (req: McpRequest, res: Response, next: NextFunction) => void;
54
+ /**
55
+ * Utility function to get MCP availability info from request
56
+ */
57
+ export declare function getMcpAvailability(req: Request): {
58
+ availableServers: string[];
59
+ unavailableServers: string[];
60
+ loadingServers: string[];
61
+ oauthRequiredServers: string[];
62
+ hasPartialAvailability: boolean;
63
+ allServersReady: boolean;
64
+ requestedTags?: string[];
65
+ totalServersBeforeFiltering?: number;
66
+ } | undefined;
67
+ /**
68
+ * Utility function to check if all MCP servers are ready
69
+ */
70
+ export declare function areAllMcpServersReady(req: Request): boolean;
71
+ /**
72
+ * Utility function to get list of available MCP servers
73
+ */
74
+ export declare function getAvailableMcpServers(req: Request): string[];
75
+ /**
76
+ * Utility function to get list of loading MCP servers
77
+ */
78
+ export declare function getLoadingMcpServers(req: Request): string[];
79
+ //# sourceMappingURL=mcpAvailabilityMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpAvailabilityMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/mcpAvailabilityMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAK/E;;GAEG;AACH,MAAM,WAAW,UAAW,SAAQ,OAAO;IACzC,eAAe,CAAC,EAAE;QAChB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,sBAAsB,EAAE,OAAO,CAAC;QAChC,eAAe,EAAE,OAAO,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;QACzB,2BAA2B,CAAC,EAAE,MAAM,CAAC;KACtC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAYD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,+BAA+B,CAC7C,cAAc,CAAC,EAAE,iBAAiB,EAClC,OAAO,GAAE,sBAA2B,IAI5B,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,UA4M3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO;sBAhRzB,MAAM,EAAE;wBACN,MAAM,EAAE;oBACZ,MAAM,EAAE;0BACF,MAAM,EAAE;4BACN,OAAO;qBACd,OAAO;oBACR,MAAM,EAAE;kCACM,MAAM;cA2QvC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAG3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAG7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAG3D"}
@@ -0,0 +1,243 @@
1
+ import logger from '../../../logger/logger.js';
2
+ import { LoadingState } from '../../../core/loading/loadingStateTracker.js';
3
+ import { getValidatedTags } from './scopeAuthMiddleware.js';
4
+ import { McpConfigManager } from '../../../config/mcpConfigManager.js';
5
+ /**
6
+ * Default options for MCP availability middleware
7
+ */
8
+ const DEFAULT_OPTIONS = {
9
+ allowPartialAvailability: true,
10
+ includeOAuthServers: false,
11
+ unavailableMessage: 'Some requested MCP servers are not available',
12
+ loadingMessage: 'Some requested MCP servers are still loading',
13
+ };
14
+ /**
15
+ * Creates middleware that checks MCP server availability before processing requests
16
+ *
17
+ * This middleware examines the loading state of MCP servers and provides different
18
+ * behaviors based on server availability and configuration options.
19
+ *
20
+ * @param loadingManager - The MCP loading manager instance
21
+ * @param options - Configuration options for availability checking
22
+ * @returns Express middleware function
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const availabilityMiddleware = createMcpAvailabilityMiddleware(loadingManager, {
27
+ * allowPartialAvailability: true,
28
+ * includeOAuthServers: false,
29
+ * });
30
+ *
31
+ * router.post('/mcp', availabilityMiddleware, (req, res) => {
32
+ * // Handle MCP request with availability info in req.mcpAvailability
33
+ * });
34
+ * ```
35
+ */
36
+ export function createMcpAvailabilityMiddleware(loadingManager, options = {}) {
37
+ const opts = { ...DEFAULT_OPTIONS, ...options };
38
+ return (req, res, next) => {
39
+ try {
40
+ // If no loading manager, assume all servers are available (legacy mode)
41
+ if (!loadingManager) {
42
+ logger.debug('No loading manager - assuming all servers available');
43
+ next();
44
+ return;
45
+ }
46
+ // Get requested tags from scope auth middleware
47
+ const requestedTags = getValidatedTags(res);
48
+ // If no specific tags requested, get all servers
49
+ const stateTracker = loadingManager.getStateTracker();
50
+ const allStates = stateTracker.getAllServerStates();
51
+ // Filter servers based on requested tags
52
+ // Tags are used to control which MCP servers are available for requests.
53
+ // When tags are specified, only servers that have ALL the requested tags will be included.
54
+ const allServers = Array.from(allStates.keys());
55
+ let relevantServers;
56
+ if (requestedTags && requestedTags.length > 0) {
57
+ // Get server configurations to access tags
58
+ const configManager = McpConfigManager.getInstance();
59
+ const transportConfig = configManager.getTransportConfig();
60
+ // Filter servers that have ALL requested tags
61
+ // This implements the "AND" logic: servers must have every requested tag
62
+ relevantServers = allServers.filter((serverName) => {
63
+ const serverConfig = transportConfig[serverName];
64
+ if (!serverConfig || !serverConfig.tags) {
65
+ // Server has no tags, so it doesn't match any tag request
66
+ return false;
67
+ }
68
+ // Check if server has ALL requested tags (case-insensitive matching)
69
+ const serverTags = serverConfig.tags.map((tag) => tag.toLowerCase());
70
+ const requestedTagsLower = requestedTags.map((tag) => tag.toLowerCase());
71
+ return requestedTagsLower.every((requestedTag) => serverTags.includes(requestedTag));
72
+ });
73
+ logger.debug(`Filtered ${relevantServers.length}/${allServers.length} servers ` + `with tags: ${requestedTags.join(', ')}`);
74
+ }
75
+ else {
76
+ relevantServers = allServers;
77
+ logger.debug(`Checking availability for all ${relevantServers.length} servers`);
78
+ }
79
+ // Categorize servers by state
80
+ const availableServers = [];
81
+ const unavailableServers = [];
82
+ const loadingServers = [];
83
+ const oauthRequiredServers = [];
84
+ for (const serverName of relevantServers) {
85
+ const serverInfo = stateTracker.getServerState(serverName);
86
+ if (!serverInfo) {
87
+ unavailableServers.push(serverName);
88
+ continue;
89
+ }
90
+ switch (serverInfo.state) {
91
+ case LoadingState.Ready:
92
+ availableServers.push(serverName);
93
+ break;
94
+ case LoadingState.Loading:
95
+ case LoadingState.Pending:
96
+ loadingServers.push(serverName);
97
+ break;
98
+ case LoadingState.AwaitingOAuth:
99
+ if (opts.includeOAuthServers) {
100
+ availableServers.push(serverName);
101
+ }
102
+ else {
103
+ oauthRequiredServers.push(serverName);
104
+ }
105
+ break;
106
+ case LoadingState.Failed:
107
+ case LoadingState.Cancelled:
108
+ default:
109
+ unavailableServers.push(serverName);
110
+ break;
111
+ }
112
+ }
113
+ // Calculate availability metrics
114
+ const hasPartialAvailability = availableServers.length > 0;
115
+ const allServersReady = relevantServers.length > 0 && availableServers.length === relevantServers.length;
116
+ // Add availability info to request
117
+ req.mcpAvailability = {
118
+ availableServers,
119
+ unavailableServers,
120
+ loadingServers,
121
+ oauthRequiredServers,
122
+ hasPartialAvailability,
123
+ allServersReady,
124
+ requestedTags: requestedTags && requestedTags.length > 0 ? requestedTags : undefined,
125
+ totalServersBeforeFiltering: requestedTags && requestedTags.length > 0 ? allServers.length : undefined,
126
+ };
127
+ // Log availability status
128
+ const tagInfo = requestedTags && requestedTags.length > 0
129
+ ? ` (filtered by tags: ${requestedTags.join(', ')}, ${allServers.length} total)`
130
+ : '';
131
+ logger.debug(`MCP Availability: ${availableServers.length}/${relevantServers.length} ready, ` +
132
+ `${loadingServers.length} loading, ${unavailableServers.length} failed, ` +
133
+ `${oauthRequiredServers.length} OAuth required${tagInfo}`);
134
+ // Decide whether to proceed based on availability
135
+ if (relevantServers.length === 0) {
136
+ // No servers configured - proceed normally
137
+ next();
138
+ return;
139
+ }
140
+ if (allServersReady) {
141
+ // All servers ready - proceed normally
142
+ next();
143
+ return;
144
+ }
145
+ if (!hasPartialAvailability) {
146
+ // No servers available - return error
147
+ logger.warn('No MCP servers available for request');
148
+ res.status(503).json({
149
+ error: 'service_unavailable',
150
+ message: 'No MCP servers are currently available',
151
+ details: {
152
+ total: relevantServers.length,
153
+ available: availableServers.length,
154
+ loading: loadingServers.length,
155
+ failed: unavailableServers.length,
156
+ oauthRequired: oauthRequiredServers.length,
157
+ },
158
+ loading: {
159
+ isComplete: stateTracker.isLoadingComplete(),
160
+ summary: loadingManager.getSummary(),
161
+ },
162
+ timestamp: new Date().toISOString(),
163
+ });
164
+ return;
165
+ }
166
+ if (opts.allowPartialAvailability) {
167
+ // Some servers available - proceed with warning
168
+ logger.info(`Proceeding with partial MCP availability: ${availableServers.length}/${relevantServers.length} servers ready`);
169
+ // Add warning headers
170
+ res.setHeader('X-MCP-Partial-Availability', 'true');
171
+ res.setHeader('X-MCP-Available-Count', availableServers.length.toString());
172
+ res.setHeader('X-MCP-Total-Count', relevantServers.length.toString());
173
+ if (loadingServers.length > 0) {
174
+ res.setHeader('X-MCP-Loading-Count', loadingServers.length.toString());
175
+ }
176
+ next();
177
+ return;
178
+ }
179
+ else {
180
+ // Partial availability not allowed - return error
181
+ logger.warn('Partial MCP availability not allowed - blocking request');
182
+ const primaryReason = loadingServers.length > 0 ? 'loading' : 'unavailable';
183
+ const message = primaryReason === 'loading' ? opts.loadingMessage : opts.unavailableMessage;
184
+ res.status(primaryReason === 'loading' ? 202 : 503).json({
185
+ error: primaryReason === 'loading' ? 'servers_loading' : 'servers_unavailable',
186
+ message,
187
+ details: {
188
+ total: relevantServers.length,
189
+ available: availableServers.length,
190
+ loading: loadingServers.length,
191
+ failed: unavailableServers.length,
192
+ oauthRequired: oauthRequiredServers.length,
193
+ availableList: availableServers,
194
+ loadingList: loadingServers,
195
+ failedList: unavailableServers,
196
+ oauthRequiredList: oauthRequiredServers,
197
+ },
198
+ loading: {
199
+ isComplete: stateTracker.isLoadingComplete(),
200
+ summary: loadingManager.getSummary(),
201
+ },
202
+ retryAfter: primaryReason === 'loading' ? 30 : undefined, // Suggest retry in 30 seconds for loading
203
+ timestamp: new Date().toISOString(),
204
+ });
205
+ return;
206
+ }
207
+ }
208
+ catch (error) {
209
+ logger.error('MCP availability check failed:', error);
210
+ // On error, proceed normally to avoid blocking requests
211
+ // This ensures the system remains functional even if availability checking fails
212
+ next();
213
+ }
214
+ };
215
+ }
216
+ /**
217
+ * Utility function to get MCP availability info from request
218
+ */
219
+ export function getMcpAvailability(req) {
220
+ return req.mcpAvailability;
221
+ }
222
+ /**
223
+ * Utility function to check if all MCP servers are ready
224
+ */
225
+ export function areAllMcpServersReady(req) {
226
+ const availability = getMcpAvailability(req);
227
+ return availability?.allServersReady ?? true; // Assume ready if no availability info
228
+ }
229
+ /**
230
+ * Utility function to get list of available MCP servers
231
+ */
232
+ export function getAvailableMcpServers(req) {
233
+ const availability = getMcpAvailability(req);
234
+ return availability?.availableServers ?? [];
235
+ }
236
+ /**
237
+ * Utility function to get list of loading MCP servers
238
+ */
239
+ export function getLoadingMcpServers(req) {
240
+ const availability = getMcpAvailability(req);
241
+ return availability?.loadingServers ?? [];
242
+ }
243
+ //# sourceMappingURL=mcpAvailabilityMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpAvailabilityMiddleware.js","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/mcpAvailabilityMiddleware.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Router } from 'express';
2
+ import { McpLoadingManager } from '../../../core/loading/mcpLoadingManager.js';
2
3
  /**
3
4
  * Creates health check routes
4
5
  */
5
- export declare function createHealthRoutes(): Router;
6
+ export declare function createHealthRoutes(loadingManager?: McpLoadingManager): Router;
6
7
  export default createHealthRoutes;
7
8
  //# sourceMappingURL=healthRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"healthRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/healthRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAKpE;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAwH3C;AAGD,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"healthRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/healthRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAIpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAgT7E;AAGD,eAAe,kBAAkB,CAAC"}