@1mcp/agent 0.11.0 → 0.13.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 (200) hide show
  1. package/README.md +45 -50
  2. package/build/auth/clientSessionManager.d.ts +94 -0
  3. package/build/auth/clientSessionManager.d.ts.map +1 -0
  4. package/build/auth/clientSessionManager.js +220 -0
  5. package/build/auth/clientSessionManager.js.map +1 -0
  6. package/build/auth/sdkOAuthClientProvider.d.ts +93 -0
  7. package/build/auth/sdkOAuthClientProvider.d.ts.map +1 -0
  8. package/build/auth/sdkOAuthClientProvider.js +199 -0
  9. package/build/auth/sdkOAuthClientProvider.js.map +1 -0
  10. package/build/auth/sdkOAuthServerProvider.d.ts +63 -0
  11. package/build/auth/sdkOAuthServerProvider.d.ts.map +1 -0
  12. package/build/auth/sdkOAuthServerProvider.js +428 -0
  13. package/build/auth/sdkOAuthServerProvider.js.map +1 -0
  14. package/build/{server/auth/sessionManager.d.ts → auth/serverSessionManager.d.ts} +26 -37
  15. package/build/auth/serverSessionManager.d.ts.map +1 -0
  16. package/build/{server/auth/sessionManager.js → auth/serverSessionManager.js} +104 -19
  17. package/build/auth/serverSessionManager.js.map +1 -0
  18. package/build/auth/sessionTypes.d.ts +24 -0
  19. package/build/auth/sessionTypes.d.ts.map +1 -0
  20. package/build/auth/sessionTypes.js +3 -0
  21. package/build/auth/sessionTypes.js.map +1 -0
  22. package/build/capabilities/capabilityManager.d.ts +2 -2
  23. package/build/capabilities/capabilityManager.d.ts.map +1 -1
  24. package/build/capabilities/capabilityManager.js +40 -7
  25. package/build/capabilities/capabilityManager.js.map +1 -1
  26. package/build/config/{configManager.d.ts → mcpConfigManager.d.ts} +18 -7
  27. package/build/config/mcpConfigManager.d.ts.map +1 -0
  28. package/build/config/{configManager.js → mcpConfigManager.js} +50 -10
  29. package/build/config/mcpConfigManager.js.map +1 -0
  30. package/build/constants.d.ts +36 -14
  31. package/build/constants.d.ts.map +1 -1
  32. package/build/constants.js +40 -17
  33. package/build/constants.js.map +1 -1
  34. package/build/{client.d.ts → core/client/clientFactory.d.ts} +1 -1
  35. package/build/core/client/clientFactory.d.ts.map +1 -0
  36. package/build/{client.js → core/client/clientFactory.js} +2 -2
  37. package/build/core/client/clientFactory.js.map +1 -0
  38. package/build/{clients → core/client}/clientManager.d.ts +14 -6
  39. package/build/core/client/clientManager.d.ts.map +1 -0
  40. package/build/core/client/clientManager.js +209 -0
  41. package/build/core/client/clientManager.js.map +1 -0
  42. package/build/{server/config/serverConfig.d.ts → core/server/agentConfig.d.ts} +50 -15
  43. package/build/core/server/agentConfig.d.ts.map +1 -0
  44. package/build/core/server/agentConfig.js +166 -0
  45. package/build/core/server/agentConfig.js.map +1 -0
  46. package/build/core/server/serverManager.d.ts +39 -0
  47. package/build/core/server/serverManager.d.ts.map +1 -0
  48. package/build/core/server/serverManager.js +169 -0
  49. package/build/core/server/serverManager.js.map +1 -0
  50. package/build/core/types/client.d.ts +51 -0
  51. package/build/core/types/client.d.ts.map +1 -0
  52. package/build/core/types/client.js +15 -0
  53. package/build/core/types/client.js.map +1 -0
  54. package/build/core/types/index.d.ts +4 -0
  55. package/build/core/types/index.d.ts.map +1 -0
  56. package/build/core/types/index.js +5 -0
  57. package/build/core/types/index.js.map +1 -0
  58. package/build/core/types/server.d.ts +14 -0
  59. package/build/core/types/server.d.ts.map +1 -0
  60. package/build/core/types/server.js +2 -0
  61. package/build/core/types/server.js.map +1 -0
  62. package/build/{types.d.ts → core/types/transport.d.ts} +59 -49
  63. package/build/core/types/transport.d.ts.map +1 -0
  64. package/build/{types.js → core/types/transport.js} +11 -13
  65. package/build/core/types/transport.js.map +1 -0
  66. package/build/handlers/notificationHandlers.d.ts +3 -3
  67. package/build/handlers/notificationHandlers.d.ts.map +1 -1
  68. package/build/handlers/notificationHandlers.js +13 -9
  69. package/build/handlers/notificationHandlers.js.map +1 -1
  70. package/build/handlers/requestHandlers.d.ts +2 -2
  71. package/build/handlers/requestHandlers.d.ts.map +1 -1
  72. package/build/handlers/requestHandlers.js +25 -3
  73. package/build/handlers/requestHandlers.js.map +1 -1
  74. package/build/index.js +48 -8
  75. package/build/index.js.map +1 -1
  76. package/build/logger/logger.js +1 -1
  77. package/build/logger/logger.js.map +1 -1
  78. package/build/{middleware/loggingMiddleware.d.ts → logger/mcpLoggingEnhancer.d.ts} +1 -1
  79. package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -0
  80. package/build/{middleware/loggingMiddleware.js → logger/mcpLoggingEnhancer.js} +2 -2
  81. package/build/logger/mcpLoggingEnhancer.js.map +1 -0
  82. package/build/server.d.ts +1 -1
  83. package/build/server.d.ts.map +1 -1
  84. package/build/server.js +9 -6
  85. package/build/server.js.map +1 -1
  86. package/build/services/configReloadService.d.ts +15 -5
  87. package/build/services/configReloadService.d.ts.map +1 -1
  88. package/build/services/configReloadService.js +31 -14
  89. package/build/services/configReloadService.js.map +1 -1
  90. package/build/transport/http/middlewares/errorHandler.d.ts.map +1 -0
  91. package/build/{server → transport/http/middlewares}/errorHandler.js +1 -1
  92. package/build/transport/http/middlewares/errorHandler.js.map +1 -0
  93. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +42 -0
  94. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -0
  95. package/build/transport/http/middlewares/scopeAuthMiddleware.js +136 -0
  96. package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -0
  97. package/build/transport/http/middlewares/securityMiddleware.d.ts +30 -0
  98. package/build/transport/http/middlewares/securityMiddleware.d.ts.map +1 -0
  99. package/build/transport/http/middlewares/securityMiddleware.js +201 -0
  100. package/build/transport/http/middlewares/securityMiddleware.js.map +1 -0
  101. package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -0
  102. package/build/transport/http/middlewares/tagsExtractor.js.map +1 -0
  103. package/build/transport/http/routes/oauthRoutes.d.ts +4 -0
  104. package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -0
  105. package/build/transport/http/routes/oauthRoutes.js +474 -0
  106. package/build/transport/http/routes/oauthRoutes.js.map +1 -0
  107. package/build/transport/http/routes/sseRoutes.d.ts +4 -0
  108. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -0
  109. package/build/{server → transport/http}/routes/sseRoutes.js +12 -10
  110. package/build/transport/http/routes/sseRoutes.js.map +1 -0
  111. package/build/transport/http/routes/streamableHttpRoutes.d.ts +4 -0
  112. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -0
  113. package/build/{server → transport/http}/routes/streamableHttpRoutes.js +46 -13
  114. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -0
  115. package/build/{server/expressServer.d.ts → transport/http/server.d.ts} +5 -4
  116. package/build/transport/http/server.d.ts.map +1 -0
  117. package/build/{server/expressServer.js → transport/http/server.js} +60 -23
  118. package/build/transport/http/server.js.map +1 -0
  119. package/build/transport/transportFactory.d.ts +9 -0
  120. package/build/transport/transportFactory.d.ts.map +1 -0
  121. package/build/transport/transportFactory.js +148 -0
  122. package/build/transport/transportFactory.js.map +1 -0
  123. package/build/utils/clientFiltering.d.ts +4 -4
  124. package/build/utils/clientFiltering.d.ts.map +1 -1
  125. package/build/utils/clientFiltering.js +14 -14
  126. package/build/utils/clientFiltering.js.map +1 -1
  127. package/build/utils/errorHandling.d.ts +0 -11
  128. package/build/utils/errorHandling.d.ts.map +1 -1
  129. package/build/utils/errorHandling.js +1 -18
  130. package/build/utils/errorHandling.js.map +1 -1
  131. package/build/utils/errorTypes.js +4 -4
  132. package/build/utils/errorTypes.js.map +1 -1
  133. package/build/utils/pagination.d.ts +2 -2
  134. package/build/utils/pagination.d.ts.map +1 -1
  135. package/build/utils/pagination.js +87 -8
  136. package/build/utils/pagination.js.map +1 -1
  137. package/build/utils/parsing.d.ts +13 -0
  138. package/build/utils/parsing.d.ts.map +1 -0
  139. package/build/utils/parsing.js +32 -0
  140. package/build/utils/parsing.js.map +1 -0
  141. package/build/utils/sanitization.d.ts +60 -0
  142. package/build/utils/sanitization.d.ts.map +1 -0
  143. package/build/utils/sanitization.js +149 -0
  144. package/build/utils/sanitization.js.map +1 -0
  145. package/build/utils/scopeValidation.d.ts +102 -0
  146. package/build/utils/scopeValidation.d.ts.map +1 -0
  147. package/build/utils/scopeValidation.js +244 -0
  148. package/build/utils/scopeValidation.js.map +1 -0
  149. package/package.json +23 -9
  150. package/build/client.d.ts.map +0 -1
  151. package/build/client.js.map +0 -1
  152. package/build/clients/clientManager.d.ts.map +0 -1
  153. package/build/clients/clientManager.js +0 -147
  154. package/build/clients/clientManager.js.map +0 -1
  155. package/build/config/configManager.d.ts.map +0 -1
  156. package/build/config/configManager.js.map +0 -1
  157. package/build/config/transportConfig.d.ts +0 -7
  158. package/build/config/transportConfig.d.ts.map +0 -1
  159. package/build/config/transportConfig.js +0 -90
  160. package/build/config/transportConfig.js.map +0 -1
  161. package/build/middleware/loggingMiddleware.d.ts.map +0 -1
  162. package/build/middleware/loggingMiddleware.js.map +0 -1
  163. package/build/server/auth/authManager.d.ts +0 -109
  164. package/build/server/auth/authManager.d.ts.map +0 -1
  165. package/build/server/auth/authManager.js +0 -173
  166. package/build/server/auth/authManager.js.map +0 -1
  167. package/build/server/auth/authMiddleware.d.ts +0 -16
  168. package/build/server/auth/authMiddleware.d.ts.map +0 -1
  169. package/build/server/auth/authMiddleware.js +0 -45
  170. package/build/server/auth/authMiddleware.js.map +0 -1
  171. package/build/server/auth/sessionManager.d.ts.map +0 -1
  172. package/build/server/auth/sessionManager.js.map +0 -1
  173. package/build/server/config/serverConfig.d.ts.map +0 -1
  174. package/build/server/config/serverConfig.js +0 -117
  175. package/build/server/config/serverConfig.js.map +0 -1
  176. package/build/server/errorHandler.d.ts.map +0 -1
  177. package/build/server/errorHandler.js.map +0 -1
  178. package/build/server/expressServer.d.ts.map +0 -1
  179. package/build/server/expressServer.js.map +0 -1
  180. package/build/server/routes/oauthRoutes.d.ts +0 -14
  181. package/build/server/routes/oauthRoutes.d.ts.map +0 -1
  182. package/build/server/routes/oauthRoutes.js +0 -132
  183. package/build/server/routes/oauthRoutes.js.map +0 -1
  184. package/build/server/routes/sseRoutes.d.ts +0 -4
  185. package/build/server/routes/sseRoutes.d.ts.map +0 -1
  186. package/build/server/routes/sseRoutes.js.map +0 -1
  187. package/build/server/routes/streamableHttpRoutes.d.ts +0 -4
  188. package/build/server/routes/streamableHttpRoutes.d.ts.map +0 -1
  189. package/build/server/routes/streamableHttpRoutes.js.map +0 -1
  190. package/build/server/tagsExtractor.d.ts.map +0 -1
  191. package/build/server/tagsExtractor.js.map +0 -1
  192. package/build/serverManager.d.ts +0 -27
  193. package/build/serverManager.d.ts.map +0 -1
  194. package/build/serverManager.js +0 -87
  195. package/build/serverManager.js.map +0 -1
  196. package/build/types.d.ts.map +0 -1
  197. package/build/types.js.map +0 -1
  198. /package/build/{server → transport/http/middlewares}/errorHandler.d.ts +0 -0
  199. /package/build/{server → transport/http/middlewares}/tagsExtractor.d.ts +0 -0
  200. /package/build/{server → transport/http/middlewares}/tagsExtractor.js +0 -0
@@ -0,0 +1,166 @@
1
+ import { AUTH_CONFIG, HOST, PORT, RATE_LIMIT_CONFIG } from '../../constants.js';
2
+ /**
3
+ * AgentConfigManager manages agent-specific configuration settings.
4
+ *
5
+ * This singleton class handles authentication and session configuration
6
+ * that differs from the main MCP server configuration. It provides
7
+ * centralized access to agent settings with default values and
8
+ * runtime configuration updates.
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * const configManager = AgentConfigManager.getInstance();
13
+ * configManager.updateConfig({
14
+ * auth: { enabled: true, sessionTtlMinutes: 60 }
15
+ * });
16
+ * ```
17
+ */
18
+ export class AgentConfigManager {
19
+ static instance;
20
+ config;
21
+ /**
22
+ * Private constructor to enforce singleton pattern.
23
+ *
24
+ * Initializes the configuration with default values from constants.
25
+ * Should not be called directly - use getInstance() instead.
26
+ */
27
+ constructor() {
28
+ this.config = {
29
+ host: HOST,
30
+ port: PORT,
31
+ auth: {
32
+ enabled: AUTH_CONFIG.SERVER.DEFAULT_ENABLED,
33
+ sessionTtlMinutes: AUTH_CONFIG.SERVER.SESSION.TTL_MINUTES,
34
+ oauthCodeTtlMs: AUTH_CONFIG.SERVER.OAUTH.CODE_TTL_MS,
35
+ oauthTokenTtlMs: AUTH_CONFIG.SERVER.OAUTH.TOKEN_TTL_MS,
36
+ },
37
+ rateLimit: {
38
+ windowMs: RATE_LIMIT_CONFIG.OAUTH.WINDOW_MS,
39
+ max: RATE_LIMIT_CONFIG.OAUTH.MAX,
40
+ },
41
+ features: {
42
+ auth: AUTH_CONFIG.SERVER.DEFAULT_ENABLED,
43
+ scopeValidation: AUTH_CONFIG.SERVER.DEFAULT_ENABLED,
44
+ enhancedSecurity: false,
45
+ },
46
+ };
47
+ }
48
+ /**
49
+ * Gets the singleton instance of AgentConfigManager.
50
+ *
51
+ * Creates a new instance if one doesn't exist, otherwise returns
52
+ * the existing instance to ensure configuration consistency.
53
+ *
54
+ * @returns The singleton AgentConfigManager instance
55
+ */
56
+ static getInstance() {
57
+ if (!AgentConfigManager.instance) {
58
+ AgentConfigManager.instance = new AgentConfigManager();
59
+ }
60
+ return AgentConfigManager.instance;
61
+ }
62
+ /**
63
+ * Updates the agent configuration with new values.
64
+ *
65
+ * Merges the provided updates with existing configuration, allowing
66
+ * partial updates while preserving other settings.
67
+ *
68
+ * @param updates - Partial configuration object with new values
69
+ */
70
+ updateConfig(updates) {
71
+ this.config = { ...this.config, ...updates };
72
+ if (updates.auth) {
73
+ this.config.auth = { ...this.config.auth, ...updates.auth };
74
+ }
75
+ if (updates.rateLimit) {
76
+ this.config.rateLimit = { ...this.config.rateLimit, ...updates.rateLimit };
77
+ }
78
+ if (updates.features) {
79
+ this.config.features = { ...this.config.features, ...updates.features };
80
+ }
81
+ }
82
+ /**
83
+ * Gets a copy of the current agent configuration.
84
+ *
85
+ * Returns a deep copy to prevent external modification of the
86
+ * internal configuration state.
87
+ *
88
+ * @returns Current agent configuration
89
+ */
90
+ getConfig() {
91
+ return { ...this.config };
92
+ }
93
+ /**
94
+ * Checks if authentication is currently enabled.
95
+ *
96
+ * @returns True if OAuth 2.1 authentication is enabled, false otherwise
97
+ */
98
+ isAuthEnabled() {
99
+ return this.config.features.auth;
100
+ }
101
+ /**
102
+ * Gets the session time-to-live in minutes.
103
+ *
104
+ * @returns Session TTL in minutes
105
+ */
106
+ getSessionTtlMinutes() {
107
+ return this.config.auth.sessionTtlMinutes;
108
+ }
109
+ /**
110
+ * Gets the custom session storage path if configured.
111
+ *
112
+ * @returns Custom session storage path or undefined if using default
113
+ */
114
+ getSessionStoragePath() {
115
+ return this.config.auth.sessionStoragePath;
116
+ }
117
+ /**
118
+ * Gets the OAuth authorization code time-to-live in milliseconds.
119
+ *
120
+ * @returns OAuth code TTL in milliseconds
121
+ */
122
+ getOAuthCodeTtlMs() {
123
+ return this.config.auth.oauthCodeTtlMs;
124
+ }
125
+ /**
126
+ * Gets the OAuth access token time-to-live in milliseconds.
127
+ *
128
+ * @returns OAuth token TTL in milliseconds
129
+ */
130
+ getOAuthTokenTtlMs() {
131
+ return this.config.auth.oauthTokenTtlMs;
132
+ }
133
+ /**
134
+ * Gets the rate limit window in milliseconds.
135
+ *
136
+ * @returns Rate limit window in milliseconds
137
+ */
138
+ getRateLimitWindowMs() {
139
+ return this.config.rateLimit.windowMs;
140
+ }
141
+ /**
142
+ * Gets the maximum number of requests per rate limit window.
143
+ *
144
+ * @returns Maximum requests per window
145
+ */
146
+ getRateLimitMax() {
147
+ return this.config.rateLimit.max;
148
+ }
149
+ /**
150
+ * Checks if scope validation is enabled.
151
+ *
152
+ * @returns True if tag-based scope validation is enabled, false otherwise
153
+ */
154
+ isScopeValidationEnabled() {
155
+ return this.config.features.scopeValidation;
156
+ }
157
+ /**
158
+ * Checks if enhanced security middleware is enabled.
159
+ *
160
+ * @returns True if enhanced security middleware is enabled, false otherwise
161
+ */
162
+ isEnhancedSecurityEnabled() {
163
+ return this.config.features.enhancedSecurity;
164
+ }
165
+ }
166
+ //# sourceMappingURL=agentConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentConfig.js","sourceRoot":"","sources":["../../../src/core/server/agentConfig.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
2
+ import { OutboundConnections, InboundConnection, InboundConnectionConfig } from '../types/index.js';
3
+ import type { OutboundConnection } from '../types/client.js';
4
+ export declare class ServerManager {
5
+ private static instance;
6
+ private servers;
7
+ private serverConfig;
8
+ private serverCapabilities;
9
+ private clients;
10
+ private transports;
11
+ private connectionSemaphore;
12
+ private disconnectingIds;
13
+ private constructor();
14
+ static getOrCreateInstance(config: {
15
+ name: string;
16
+ version: string;
17
+ }, capabilities: {
18
+ capabilities: Record<string, unknown>;
19
+ }, clients: OutboundConnections, transports: Record<string, Transport>): ServerManager;
20
+ static get current(): ServerManager;
21
+ static resetInstance(): void;
22
+ connectTransport(transport: Transport, sessionId: string, opts: InboundConnectionConfig): Promise<void>;
23
+ private performConnection;
24
+ private doConnect;
25
+ disconnectTransport(sessionId: string, forceClose?: boolean): void;
26
+ getTransport(sessionId: string): Transport | undefined;
27
+ getTransports(): Map<string, Transport>;
28
+ getClientTransports(): Record<string, Transport>;
29
+ getClients(): OutboundConnections;
30
+ /**
31
+ * Safely get a client by name. Returns undefined if not found or not an own property.
32
+ * Encapsulates access to prevent prototype pollution and accidental key collisions.
33
+ */
34
+ getClient(serverName: string): OutboundConnection | undefined;
35
+ getActiveTransportsCount(): number;
36
+ getServer(sessionId: string): InboundConnection | undefined;
37
+ updateClientsAndTransports(newClients: OutboundConnections, newTransports: Record<string, Transport>): void;
38
+ }
39
+ //# sourceMappingURL=serverManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverManager.d.ts","sourceRoot":"","sources":["../../../src/core/server/serverManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAK1E,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACpG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,kBAAkB,CAA4C;IAEtE,OAAO,CAAC,OAAO,CAA8D;IAC7E,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,mBAAmB,CAAyC;IACpE,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO;WAYO,mBAAmB,CAC/B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EACzC,YAAY,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EACvD,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,aAAa;IAOhB,WAAkB,OAAO,IAAI,aAAa,CAEzC;WAGa,aAAa,IAAI,IAAI;IAatB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;YA2BtG,iBAAiB;YAwBjB,SAAS;IA4BhB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IA8BzE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAItD,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAUvC,mBAAmB,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC;IAIhD,UAAU,IAAI,mBAAmB;IAIxC;;;OAGG;IACI,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI7D,wBAAwB,IAAI,MAAM;IAIlC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAI3D,0BAA0B,CAAC,UAAU,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI;CAInH"}
@@ -0,0 +1,169 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import logger from '../../logger/logger.js';
3
+ import configReloadService from '../../services/configReloadService.js';
4
+ import { setupCapabilities } from '../../capabilities/capabilityManager.js';
5
+ import { enhanceServerWithLogging } from '../../logger/mcpLoggingEnhancer.js';
6
+ export class ServerManager {
7
+ static instance;
8
+ servers = new Map();
9
+ serverConfig;
10
+ serverCapabilities;
11
+ clients = new Map();
12
+ transports = {};
13
+ connectionSemaphore = new Map();
14
+ disconnectingIds = new Set();
15
+ constructor(config, capabilities, clients, transports) {
16
+ this.serverConfig = config;
17
+ this.serverCapabilities = capabilities;
18
+ this.clients = clients;
19
+ this.transports = transports;
20
+ }
21
+ static getOrCreateInstance(config, capabilities, clients, transports) {
22
+ if (!ServerManager.instance) {
23
+ ServerManager.instance = new ServerManager(config, capabilities, clients, transports);
24
+ }
25
+ return ServerManager.instance;
26
+ }
27
+ static get current() {
28
+ return ServerManager.instance;
29
+ }
30
+ // Test utility method to reset singleton state
31
+ static resetInstance() {
32
+ if (ServerManager.instance) {
33
+ // Clean up existing connections with forced close
34
+ for (const [sessionId] of ServerManager.instance.servers) {
35
+ ServerManager.instance.disconnectTransport(sessionId, true);
36
+ }
37
+ ServerManager.instance.servers.clear();
38
+ ServerManager.instance.connectionSemaphore.clear();
39
+ ServerManager.instance.disconnectingIds.clear();
40
+ }
41
+ ServerManager.instance = undefined;
42
+ }
43
+ async connectTransport(transport, sessionId, opts) {
44
+ // Check if a connection is already in progress for this session
45
+ const existingConnection = this.connectionSemaphore.get(sessionId);
46
+ if (existingConnection) {
47
+ logger.warn(`Connection already in progress for session ${sessionId}, waiting...`);
48
+ await existingConnection;
49
+ return;
50
+ }
51
+ // Check if transport is already connected
52
+ if (this.servers.has(sessionId)) {
53
+ logger.warn(`Transport already connected for session ${sessionId}`);
54
+ return;
55
+ }
56
+ // Create connection promise to prevent race conditions
57
+ const connectionPromise = this.performConnection(transport, sessionId, opts);
58
+ this.connectionSemaphore.set(sessionId, connectionPromise);
59
+ try {
60
+ await connectionPromise;
61
+ }
62
+ finally {
63
+ // Clean up the semaphore entry
64
+ this.connectionSemaphore.delete(sessionId);
65
+ }
66
+ }
67
+ async performConnection(transport, sessionId, opts) {
68
+ // Set connection timeout
69
+ const connectionTimeoutMs = 30000; // 30 seconds
70
+ const timeoutPromise = new Promise((_, reject) => {
71
+ setTimeout(() => reject(new Error(`Connection timeout for session ${sessionId}`)), connectionTimeoutMs);
72
+ });
73
+ try {
74
+ await Promise.race([this.doConnect(transport, sessionId, opts), timeoutPromise]);
75
+ }
76
+ catch (error) {
77
+ // Clean up partial connection on failure
78
+ if (this.servers.has(sessionId)) {
79
+ this.servers.delete(sessionId);
80
+ }
81
+ logger.error(`Failed to connect transport for session ${sessionId}:`, error);
82
+ throw error;
83
+ }
84
+ }
85
+ async doConnect(transport, sessionId, opts) {
86
+ // Create a new server instance for this transport
87
+ const server = new Server(this.serverConfig, this.serverCapabilities);
88
+ // Create server info object first
89
+ const serverInfo = {
90
+ server,
91
+ ...opts,
92
+ };
93
+ // Enhance server with logging middleware
94
+ enhanceServerWithLogging(server);
95
+ // Set up capabilities for this server instance
96
+ await setupCapabilities(this.clients, serverInfo);
97
+ // Update the configuration reload service with server info
98
+ configReloadService.updateServerInfo(sessionId, serverInfo);
99
+ // Store the server instance
100
+ this.servers.set(sessionId, serverInfo);
101
+ // Connect the transport to the new server instance
102
+ await server.connect(transport);
103
+ logger.info(`Connected transport for session ${sessionId}`);
104
+ }
105
+ disconnectTransport(sessionId, forceClose = false) {
106
+ // Prevent recursive disconnection calls
107
+ if (this.disconnectingIds.has(sessionId)) {
108
+ return;
109
+ }
110
+ const server = this.servers.get(sessionId);
111
+ if (server) {
112
+ this.disconnectingIds.add(sessionId);
113
+ try {
114
+ // Only close the transport if explicitly requested (e.g., during shutdown)
115
+ // Don't close if this is called from an onclose handler to avoid recursion
116
+ if (forceClose && server.server.transport) {
117
+ try {
118
+ server.server.transport.close();
119
+ }
120
+ catch (error) {
121
+ logger.error(`Error closing transport for session ${sessionId}:`, error);
122
+ }
123
+ }
124
+ this.servers.delete(sessionId);
125
+ configReloadService.removeServerInfo(sessionId);
126
+ logger.info(`Disconnected transport for session ${sessionId}`);
127
+ }
128
+ finally {
129
+ this.disconnectingIds.delete(sessionId);
130
+ }
131
+ }
132
+ }
133
+ getTransport(sessionId) {
134
+ return this.servers.get(sessionId)?.server.transport;
135
+ }
136
+ getTransports() {
137
+ const transports = new Map();
138
+ for (const [id, server] of this.servers.entries()) {
139
+ if (server.server.transport) {
140
+ transports.set(id, server.server.transport);
141
+ }
142
+ }
143
+ return transports;
144
+ }
145
+ getClientTransports() {
146
+ return this.transports;
147
+ }
148
+ getClients() {
149
+ return this.clients;
150
+ }
151
+ /**
152
+ * Safely get a client by name. Returns undefined if not found or not an own property.
153
+ * Encapsulates access to prevent prototype pollution and accidental key collisions.
154
+ */
155
+ getClient(serverName) {
156
+ return this.clients.get(serverName);
157
+ }
158
+ getActiveTransportsCount() {
159
+ return this.servers.size;
160
+ }
161
+ getServer(sessionId) {
162
+ return this.servers.get(sessionId);
163
+ }
164
+ updateClientsAndTransports(newClients, newTransports) {
165
+ this.clients = newClients;
166
+ this.transports = newTransports;
167
+ }
168
+ }
169
+ //# sourceMappingURL=serverManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverManager.js","sourceRoot":"","sources":["../../../src/core/server/serverManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
3
+ import { EnhancedTransport } from './transport.js';
4
+ import { SDKOAuthClientProvider } from '../../auth/sdkOAuthClientProvider.js';
5
+ /**
6
+ * Enum representing possible client connection states
7
+ */
8
+ export declare enum ClientStatus {
9
+ /** Client is successfully connected */
10
+ Connected = "connected",
11
+ /** Client is disconnected */
12
+ Disconnected = "disconnected",
13
+ /** Client encountered an error */
14
+ Error = "error",
15
+ /** Client is waiting for OAuth authorization */
16
+ AwaitingOAuth = "awaiting_oauth"
17
+ }
18
+ /**
19
+ * Transport that includes an OAuth provider
20
+ */
21
+ export interface AuthProviderTransport extends EnhancedTransport {
22
+ oauthProvider?: SDKOAuthClientProvider;
23
+ }
24
+ /**
25
+ * Complete outbound connection information including transport, status and history
26
+ */
27
+ export interface OutboundConnection {
28
+ readonly name: string;
29
+ readonly transport: AuthProviderTransport;
30
+ client: Client;
31
+ lastError?: Error;
32
+ lastConnected?: Date;
33
+ status: ClientStatus;
34
+ capabilities?: ServerCapabilities;
35
+ /** OAuth authorization URL for user to complete authentication */
36
+ authorizationUrl?: string;
37
+ /** When OAuth authorization was initiated */
38
+ oauthStartTime?: Date;
39
+ }
40
+ /**
41
+ * Map of outbound connections indexed by connection name
42
+ */
43
+ export type OutboundConnections = Map<string, OutboundConnection>;
44
+ /**
45
+ * Options for client operations
46
+ */
47
+ export interface OperationOptions {
48
+ readonly retryCount?: number;
49
+ readonly retryDelay?: number;
50
+ }
51
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/core/types/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E;;GAEG;AACH,oBAAY,YAAY;IACtB,uCAAuC;IACvC,SAAS,cAAc;IACvB,6BAA6B;IAC7B,YAAY,iBAAiB;IAC7B,kCAAkC;IAClC,KAAK,UAAU;IACf,gDAAgD;IAChD,aAAa,mBAAmB;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,qBAAqB,CAAC;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Enum representing possible client connection states
3
+ */
4
+ export var ClientStatus;
5
+ (function (ClientStatus) {
6
+ /** Client is successfully connected */
7
+ ClientStatus["Connected"] = "connected";
8
+ /** Client is disconnected */
9
+ ClientStatus["Disconnected"] = "disconnected";
10
+ /** Client encountered an error */
11
+ ClientStatus["Error"] = "error";
12
+ /** Client is waiting for OAuth authorization */
13
+ ClientStatus["AwaitingOAuth"] = "awaiting_oauth";
14
+ })(ClientStatus || (ClientStatus = {}));
15
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/types/client.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,MAAM,CAAN,IAAY,YASX;AATD,WAAY,YAAY;IACtB,uCAAuC;IACvC,uCAAuB,CAAA;IACvB,6BAA6B;IAC7B,6CAA6B,CAAA;IAC7B,kCAAkC;IAClC,+BAAe,CAAA;IACf,gDAAgD;IAChD,gDAAgC,CAAA;AAClC,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB"}
@@ -0,0 +1,4 @@
1
+ export * from './transport.js';
2
+ export * from './server.js';
3
+ export * from './client.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/types/index.ts"],"names":[],"mappings":"AACA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Re-export all types from focused modules
2
+ export * from './transport.js';
3
+ export * from './server.js';
4
+ export * from './client.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/types/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
3
+ export interface InboundConnectionConfig {
4
+ readonly tags?: string[];
5
+ readonly enablePagination?: boolean;
6
+ }
7
+ /**
8
+ * Inbound connection information including server instance and configuration
9
+ */
10
+ export interface InboundConnection extends InboundConnectionConfig {
11
+ readonly server: Server;
12
+ }
13
+ export type ServerCapability = keyof ServerCapabilities;
14
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/core/types/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/core/types/server.ts"],"names":[],"mappings":""}