@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
@@ -1,13 +1,19 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
3
  import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
4
- import logger from '../../logger/logger.js';
5
- import { STREAMABLE_HTTP_ENDPOINT } from '../../constants.js';
6
- import tagsExtractor from '../tagsExtractor.js';
7
- export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
8
- app.post(STREAMABLE_HTTP_ENDPOINT, authMiddleware, tagsExtractor, async (req, res) => {
4
+ import logger from '../../../logger/logger.js';
5
+ import { STREAMABLE_HTTP_ENDPOINT } from '../../../constants.js';
6
+ import tagsExtractor from '../middlewares/tagsExtractor.js';
7
+ import scopeAuthMiddleware, { getValidatedTags } from '../middlewares/scopeAuthMiddleware.js';
8
+ import { sanitizeHeaders } from '../../../utils/sanitization.js';
9
+ export function setupStreamableHttpRoutes(router, serverManager) {
10
+ router.post(STREAMABLE_HTTP_ENDPOINT, tagsExtractor, scopeAuthMiddleware, async (req, res) => {
9
11
  try {
10
- logger.info('[POST] streamable-http', { query: req.query, body: req.body, headers: req.headers });
12
+ logger.info('[POST] streamable-http', {
13
+ query: req.query,
14
+ body: req.body,
15
+ headers: sanitizeHeaders(req.headers),
16
+ });
11
17
  let transport;
12
18
  const sessionId = req.headers['mcp-session-id'];
13
19
  if (!sessionId) {
@@ -15,19 +21,28 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
15
21
  transport = new StreamableHTTPServerTransport({
16
22
  sessionIdGenerator: () => id,
17
23
  });
18
- // Use tags from middleware
19
- const tags = res.locals.tags;
24
+ // Use validated tags from scope auth middleware
25
+ const tags = getValidatedTags(res);
20
26
  await serverManager.connectTransport(transport, id, {
21
27
  tags,
22
28
  enablePagination: req.query.pagination === 'true',
23
29
  });
24
30
  transport.onclose = () => {
25
31
  serverManager.disconnectTransport(id);
26
- logger.info('transport closed', transport.sessionId);
32
+ // Note: ServerManager already logs the disconnection
27
33
  };
28
34
  }
29
35
  else {
30
36
  const existingTransport = serverManager.getTransport(sessionId);
37
+ if (!existingTransport) {
38
+ res.status(404).json({
39
+ error: {
40
+ code: ErrorCode.InvalidParams,
41
+ message: 'No active streamable HTTP session found for the provided sessionId',
42
+ },
43
+ });
44
+ return;
45
+ }
31
46
  if (existingTransport instanceof StreamableHTTPServerTransport) {
32
47
  transport = existingTransport;
33
48
  }
@@ -48,9 +63,9 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
48
63
  res.status(500).end();
49
64
  }
50
65
  });
51
- app.get(STREAMABLE_HTTP_ENDPOINT, authMiddleware, async (req, res) => {
66
+ router.get(STREAMABLE_HTTP_ENDPOINT, async (req, res) => {
52
67
  try {
53
- logger.info('[GET] streamable-http', { query: req.query, headers: req.headers });
68
+ logger.info('[GET] streamable-http', { query: req.query, headers: sanitizeHeaders(req.headers) });
54
69
  const sessionId = req.headers['mcp-session-id'];
55
70
  if (!sessionId) {
56
71
  res.status(400).json({
@@ -62,6 +77,15 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
62
77
  return;
63
78
  }
64
79
  const transport = serverManager.getTransport(sessionId);
80
+ if (!transport) {
81
+ res.status(404).json({
82
+ error: {
83
+ code: ErrorCode.InvalidParams,
84
+ message: 'No active streamable HTTP session found for the provided sessionId',
85
+ },
86
+ });
87
+ return;
88
+ }
65
89
  await transport.handleRequest(req, res, req.body);
66
90
  }
67
91
  catch (error) {
@@ -69,9 +93,9 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
69
93
  res.status(500).end();
70
94
  }
71
95
  });
72
- app.delete(STREAMABLE_HTTP_ENDPOINT, authMiddleware, async (req, res) => {
96
+ router.delete(STREAMABLE_HTTP_ENDPOINT, async (req, res) => {
73
97
  try {
74
- logger.info('[DELETE] streamable-http', { query: req.query, headers: req.headers });
98
+ logger.info('[DELETE] streamable-http', { query: req.query, headers: sanitizeHeaders(req.headers) });
75
99
  const sessionId = req.headers['mcp-session-id'];
76
100
  if (!sessionId) {
77
101
  res.status(400).json({
@@ -83,6 +107,15 @@ export function setupStreamableHttpRoutes(app, serverManager, authMiddleware) {
83
107
  return;
84
108
  }
85
109
  const transport = serverManager.getTransport(sessionId);
110
+ if (!transport) {
111
+ res.status(404).json({
112
+ error: {
113
+ code: ErrorCode.InvalidParams,
114
+ message: 'No active streamable HTTP session found for the provided sessionId',
115
+ },
116
+ });
117
+ return;
118
+ }
86
119
  await transport.handleRequest(req, res);
87
120
  }
88
121
  catch (error) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamableHttpRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ServerManager } from '../serverManager.js';
1
+ import { ServerManager } from '../../core/server/serverManager.js';
2
2
  /**
3
3
  * ExpressServer orchestrates the HTTP/SSE transport layer for the MCP server.
4
4
  *
@@ -15,7 +15,7 @@ import { ServerManager } from '../serverManager.js';
15
15
  export declare class ExpressServer {
16
16
  private app;
17
17
  private serverManager;
18
- private authManager;
18
+ private oauthProvider;
19
19
  private configManager;
20
20
  /**
21
21
  * Creates a new ExpressServer instance.
@@ -30,6 +30,7 @@ export declare class ExpressServer {
30
30
  * Sets up Express middleware including CORS, body parsing, and error handling.
31
31
  *
32
32
  * Configures the basic middleware stack required for the MCP server:
33
+ * - Enhanced security middleware (conditional based on feature flag)
33
34
  * - CORS for cross-origin requests
34
35
  * - JSON body parsing
35
36
  * - Global error handling
@@ -55,7 +56,7 @@ export declare class ExpressServer {
55
56
  * @param port - The port number to listen on
56
57
  * @param host - The host address to bind to
57
58
  */
58
- start(port: number, host: string): void;
59
+ start(): void;
59
60
  /**
60
61
  * Performs graceful shutdown of the Express server.
61
62
  *
@@ -66,4 +67,4 @@ export declare class ExpressServer {
66
67
  */
67
68
  shutdown(): void;
68
69
  }
69
- //# sourceMappingURL=expressServer.d.ts.map
70
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAQnE;;;;;;;;;;;;GAYG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,aAAa,CAAqB;IAE1C;;;;;;;OAOG;gBACS,aAAa,EAAE,aAAa;IAaxC;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;IAcvB;;;;;;;;;OASG;IACH,OAAO,CAAC,WAAW;IAgDnB;;;;;;;;OAQG;IACI,KAAK,IAAI,IAAI;IASpB;;;;;;;OAOG;IACI,QAAQ,IAAI,IAAI;CAGxB"}
@@ -1,14 +1,16 @@
1
1
  import express from 'express';
2
2
  import bodyParser from 'body-parser';
3
3
  import cors from 'cors';
4
- import logger from '../logger/logger.js';
5
- import errorHandler from './errorHandler.js';
6
- import { AuthManager } from './auth/authManager.js';
7
- import { createAuthMiddleware } from './auth/authMiddleware.js';
8
- import { setupOAuthRoutes } from './routes/oauthRoutes.js';
4
+ import { mcpAuthRouter } from '@modelcontextprotocol/sdk/server/auth/router.js';
5
+ import logger from '../../logger/logger.js';
6
+ import errorHandler from './middlewares/errorHandler.js';
7
+ import { setupSecurityMiddleware } from './middlewares/securityMiddleware.js';
8
+ import { SDKOAuthServerProvider } from '../../auth/sdkOAuthServerProvider.js';
9
9
  import { setupStreamableHttpRoutes } from './routes/streamableHttpRoutes.js';
10
10
  import { setupSseRoutes } from './routes/sseRoutes.js';
11
- import { ServerConfigManager } from './config/serverConfig.js';
11
+ import oauthRoutes from './routes/oauthRoutes.js';
12
+ import { AgentConfigManager } from '../../core/server/agentConfig.js';
13
+ import { RATE_LIMIT_CONFIG } from '../../constants.js';
12
14
  /**
13
15
  * ExpressServer orchestrates the HTTP/SSE transport layer for the MCP server.
14
16
  *
@@ -25,7 +27,7 @@ import { ServerConfigManager } from './config/serverConfig.js';
25
27
  export class ExpressServer {
26
28
  app;
27
29
  serverManager;
28
- authManager;
30
+ oauthProvider;
29
31
  configManager;
30
32
  /**
31
33
  * Creates a new ExpressServer instance.
@@ -38,10 +40,10 @@ export class ExpressServer {
38
40
  constructor(serverManager) {
39
41
  this.app = express();
40
42
  this.serverManager = serverManager;
41
- this.configManager = ServerConfigManager.getInstance();
42
- // Initialize auth manager with custom session storage path if configured
43
+ this.configManager = AgentConfigManager.getInstance();
44
+ // Initialize OAuth provider with custom session storage path if configured
43
45
  const sessionStoragePath = this.configManager.getSessionStoragePath();
44
- this.authManager = new AuthManager(sessionStoragePath);
46
+ this.oauthProvider = new SDKOAuthServerProvider(sessionStoragePath);
45
47
  this.setupMiddleware();
46
48
  this.setupRoutes();
47
49
  }
@@ -49,13 +51,19 @@ export class ExpressServer {
49
51
  * Sets up Express middleware including CORS, body parsing, and error handling.
50
52
  *
51
53
  * Configures the basic middleware stack required for the MCP server:
54
+ * - Enhanced security middleware (conditional based on feature flag)
52
55
  * - CORS for cross-origin requests
53
56
  * - JSON body parsing
54
57
  * - Global error handling
55
58
  */
56
59
  setupMiddleware() {
60
+ // Conditionally apply enhanced security middleware (must be first if enabled)
61
+ if (this.configManager.isEnhancedSecurityEnabled()) {
62
+ this.app.use(...setupSecurityMiddleware());
63
+ }
57
64
  this.app.use(cors()); // Allow all origins for local dev
58
65
  this.app.use(bodyParser.json());
66
+ this.app.use(bodyParser.urlencoded({ extended: true }));
59
67
  // Add error handling middleware
60
68
  this.app.use(errorHandler);
61
69
  }
@@ -70,16 +78,43 @@ export class ExpressServer {
70
78
  * Logs the authentication status for debugging purposes.
71
79
  */
72
80
  setupRoutes() {
73
- // Create auth middleware
74
- const authMiddleware = createAuthMiddleware(this.authManager);
75
- // Setup OAuth routes (always available, but auth can be disabled)
76
- setupOAuthRoutes(this.app, this.authManager);
77
- // Setup MCP transport routes with auth middleware
78
- setupStreamableHttpRoutes(this.app, this.serverManager, authMiddleware);
79
- setupSseRoutes(this.app, this.serverManager, authMiddleware);
81
+ // Setup OAuth routes using SDK's mcpAuthRouter
82
+ const { host, port } = this.configManager.getConfig();
83
+ const issuerUrl = new URL(`http://${host}:${port}`);
84
+ const rateLimitConfig = {
85
+ windowMs: this.configManager.getRateLimitWindowMs(),
86
+ max: this.configManager.getRateLimitMax(),
87
+ message: RATE_LIMIT_CONFIG.OAUTH.MESSAGE,
88
+ standardHeaders: true,
89
+ legacyHeaders: false,
90
+ };
91
+ const authRouter = mcpAuthRouter({
92
+ provider: this.oauthProvider,
93
+ issuerUrl,
94
+ authorizationOptions: {
95
+ rateLimit: rateLimitConfig,
96
+ },
97
+ tokenOptions: {
98
+ rateLimit: rateLimitConfig,
99
+ },
100
+ revocationOptions: {
101
+ rateLimit: rateLimitConfig,
102
+ },
103
+ clientRegistrationOptions: {
104
+ rateLimit: rateLimitConfig,
105
+ },
106
+ });
107
+ this.app.use(authRouter);
108
+ // Setup OAuth management routes (no auth required)
109
+ this.app.use('/oauth', oauthRoutes);
110
+ // Setup MCP transport routes (auth is handled per-route via scopeAuthMiddleware)
111
+ const router = express.Router();
112
+ setupStreamableHttpRoutes(router, this.serverManager);
113
+ setupSseRoutes(router, this.serverManager);
114
+ this.app.use(router);
80
115
  // Log authentication status
81
- if (this.authManager.isAuthEnabled()) {
82
- logger.info('Authentication enabled - OAuth 2.1 endpoints available');
116
+ if (this.configManager.isAuthEnabled()) {
117
+ logger.info('Authentication enabled - OAuth 2.1 endpoints available via SDK');
83
118
  }
84
119
  else {
85
120
  logger.info('Authentication disabled - all endpoints accessible without auth');
@@ -94,10 +129,12 @@ export class ExpressServer {
94
129
  * @param port - The port number to listen on
95
130
  * @param host - The host address to bind to
96
131
  */
97
- start(port, host) {
132
+ start() {
133
+ const { port, host } = this.configManager.getConfig();
98
134
  this.app.listen(port, host, () => {
99
- const authStatus = this.authManager.isAuthEnabled() ? 'with authentication' : 'without authentication';
135
+ const authStatus = this.configManager.isAuthEnabled() ? 'with authentication' : 'without authentication';
100
136
  logger.info(`Server is running on port ${port} with HTTP/SSE and Streamable HTTP transport ${authStatus}`);
137
+ logger.info(`📋 OAuth Management Dashboard: http://${host}:${port}/oauth`);
101
138
  });
102
139
  }
103
140
  /**
@@ -109,7 +146,7 @@ export class ExpressServer {
109
146
  * - Timer cleanup
110
147
  */
111
148
  shutdown() {
112
- this.authManager.shutdown();
149
+ this.oauthProvider.shutdown();
113
150
  }
114
151
  }
115
- //# sourceMappingURL=expressServer.js.map
152
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/transport/http/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { AuthProviderTransport } from '../core/types/index.js';
2
+ import { MCPServerParams } from '../core/types/index.js';
3
+ /**
4
+ * Creates transport instances from configuration
5
+ * @param config - Configuration object with server parameters
6
+ * @returns Record of transport instances
7
+ */
8
+ export declare function createTransports(config: Record<string, MCPServerParams>): Record<string, AuthProviderTransport>;
9
+ //# sourceMappingURL=transportFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transportFactory.d.ts","sourceRoot":"","sources":["../../src/transport/transportFactory.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA2JzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CA2B/G"}
@@ -0,0 +1,148 @@
1
+ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
2
+ import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
3
+ import { StreamableHTTPClientTransport, } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
4
+ import { ZodError } from 'zod';
5
+ import logger from '../logger/logger.js';
6
+ import { transportConfigSchema } from '../core/types/index.js';
7
+ import { SDKOAuthClientProvider } from '../auth/sdkOAuthClientProvider.js';
8
+ import { AUTH_CONFIG } from '../constants.js';
9
+ import { AgentConfigManager } from '../core/server/agentConfig.js';
10
+ /**
11
+ * Infers transport type from configuration parameters
12
+ */
13
+ function inferTransportType(params, name) {
14
+ const inferredParams = { ...params };
15
+ if (inferredParams.type) {
16
+ return inferredParams;
17
+ }
18
+ logger.warn(`Transport type is missing for ${name}, inferring type...`);
19
+ if (inferredParams.command) {
20
+ inferredParams.type = 'stdio';
21
+ logger.info(`Inferred transport type for ${name} as stdio`);
22
+ }
23
+ else if (inferredParams.url) {
24
+ if (inferredParams.url.endsWith('mcp')) {
25
+ inferredParams.type = 'http';
26
+ logger.info(`Inferred transport type for ${name} as http/streamableHttp`);
27
+ }
28
+ else {
29
+ inferredParams.type = 'sse';
30
+ logger.info(`Inferred transport type for ${name} as sse`);
31
+ }
32
+ }
33
+ return inferredParams;
34
+ }
35
+ /**
36
+ * Creates OAuth provider for HTTP-based transports
37
+ */
38
+ function createOAuthProvider(name, validatedTransport) {
39
+ const { host, port } = AgentConfigManager.getInstance().getConfig();
40
+ const oauthConfig = {
41
+ autoRegister: true,
42
+ redirectUrl: `http://${host}:${port}${AUTH_CONFIG.CLIENT.OAUTH.DEFAULT_CALLBACK_PATH}/${name}`,
43
+ ...validatedTransport.oauth,
44
+ };
45
+ logger.info(`Creating OAuth client provider for transport: ${name}`);
46
+ return new SDKOAuthClientProvider(name, oauthConfig);
47
+ }
48
+ /**
49
+ * Creates SSE transport with OAuth provider
50
+ */
51
+ function createSSETransport(name, validatedTransport) {
52
+ if (!validatedTransport.url) {
53
+ throw new Error(`URL is required for SSE transport: ${name}`);
54
+ }
55
+ const sseOptions = {
56
+ requestInit: {
57
+ headers: validatedTransport.headers,
58
+ },
59
+ };
60
+ const oauthProvider = createOAuthProvider(name, validatedTransport);
61
+ sseOptions.authProvider = oauthProvider;
62
+ const transport = new SSEClientTransport(new URL(validatedTransport.url), sseOptions);
63
+ transport.oauthProvider = oauthProvider;
64
+ return transport;
65
+ }
66
+ /**
67
+ * Creates HTTP transport with OAuth provider
68
+ */
69
+ function createHTTPTransport(name, validatedTransport) {
70
+ if (!validatedTransport.url) {
71
+ throw new Error(`URL is required for HTTP transport: ${name}`);
72
+ }
73
+ const httpOptions = {
74
+ requestInit: {
75
+ headers: validatedTransport.headers,
76
+ },
77
+ };
78
+ const oauthProvider = createOAuthProvider(name, validatedTransport);
79
+ httpOptions.authProvider = oauthProvider;
80
+ const transport = new StreamableHTTPClientTransport(new URL(validatedTransport.url), httpOptions);
81
+ transport.oauthProvider = oauthProvider;
82
+ return transport;
83
+ }
84
+ /**
85
+ * Creates stdio transport
86
+ */
87
+ function createStdioTransport(name, validatedTransport) {
88
+ if (!validatedTransport.command) {
89
+ throw new Error(`Command is required for stdio transport: ${name}`);
90
+ }
91
+ return new StdioClientTransport(validatedTransport);
92
+ }
93
+ /**
94
+ * Creates a single transport instance
95
+ */
96
+ function createSingleTransport(name, validatedTransport) {
97
+ switch (validatedTransport.type) {
98
+ case 'sse':
99
+ return createSSETransport(name, validatedTransport);
100
+ case 'http':
101
+ case 'streamableHttp':
102
+ return createHTTPTransport(name, validatedTransport);
103
+ case 'stdio':
104
+ return createStdioTransport(name, validatedTransport);
105
+ default:
106
+ throw new Error(`Invalid transport type: ${validatedTransport.type}`);
107
+ }
108
+ }
109
+ /**
110
+ * Assigns transport properties and adds to collection
111
+ */
112
+ function assignTransport(transports, name, transport, validatedTransport) {
113
+ transport.timeout = validatedTransport.timeout;
114
+ transport.tags = validatedTransport.tags;
115
+ transports[name] = transport;
116
+ }
117
+ /**
118
+ * Creates transport instances from configuration
119
+ * @param config - Configuration object with server parameters
120
+ * @returns Record of transport instances
121
+ */
122
+ export function createTransports(config) {
123
+ const transports = {};
124
+ for (const [name, params] of Object.entries(config)) {
125
+ if (params.disabled) {
126
+ logger.debug(`Skipping disabled transport: ${name}`);
127
+ continue;
128
+ }
129
+ try {
130
+ const inferredParams = inferTransportType(params, name);
131
+ const validatedTransport = transportConfigSchema.parse(inferredParams);
132
+ const transport = createSingleTransport(name, validatedTransport);
133
+ assignTransport(transports, name, transport, validatedTransport);
134
+ logger.debug(`Created transport: ${name}`);
135
+ }
136
+ catch (error) {
137
+ if (error instanceof ZodError) {
138
+ logger.error(`Invalid transport configuration for ${name}:`, error.errors);
139
+ }
140
+ else {
141
+ logger.error(`Error creating transport ${name}:`, error);
142
+ }
143
+ throw error;
144
+ }
145
+ }
146
+ return transports;
147
+ }
148
+ //# sourceMappingURL=transportFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transportFactory.js","sourceRoot":"","sources":["../../src/transport/transportFactory.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,20 @@
1
1
  import { ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
2
- import { Clients } from '../types.js';
2
+ import { OutboundConnections } from '../core/types/index.js';
3
3
  /**
4
4
  * Filters clients by tags
5
5
  * @param clients Record of client instances
6
6
  * @param tags Array of tags to filter by
7
7
  * @returns Filtered record of client instances
8
8
  */
9
- export declare function filterClientsByTags(clients: Clients, tags?: string[]): Clients;
9
+ export declare function filterClientsByTags(clients: OutboundConnections, tags?: string[]): OutboundConnections;
10
10
  /**
11
11
  * Filters clients by capabilities
12
12
  * @param clients Record of client instances
13
13
  * @param capabilities Object containing capabilities to filter by
14
14
  * @returns Filtered record of client instances
15
15
  */
16
- export declare function filterClientsByCapabilities(clients: Clients, capabilities: ServerCapabilities): Clients;
17
- type ClientFilter = (clients: Clients) => Clients;
16
+ export declare function filterClientsByCapabilities(clients: OutboundConnections, capabilities: ServerCapabilities): OutboundConnections;
17
+ type ClientFilter = (clients: OutboundConnections) => OutboundConnections;
18
18
  /**
19
19
  * Filters clients by multiple criteria
20
20
  * @param filters Array of client filters
@@ -1 +1 @@
1
- {"version":3,"file":"clientFiltering.d.ts","sourceRoot":"","sources":["../../src/utils/clientFiltering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAyB9E;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAwBvG;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,CAItE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,GAAG,YAAY,CAYrF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAYpD"}
1
+ {"version":3,"file":"clientFiltering.d.ts","sourceRoot":"","sources":["../../src/utils/clientFiltering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AAGjF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAyBtG;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,mBAAmB,EAC5B,YAAY,EAAE,kBAAkB,GAC/B,mBAAmB,CAwBrB;AAED,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,mBAAmB,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,CAItE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,oBAAoB,EAAE,kBAAkB,GAAG,YAAY,CAYrF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAYpD"}
@@ -9,13 +9,13 @@ export function filterClientsByTags(clients, tags) {
9
9
  if (!tags || tags.length === 0) {
10
10
  return clients;
11
11
  }
12
- const filteredClients = {};
12
+ const filteredClients = new Map();
13
13
  let matchedClients = 0;
14
- for (const [name, clientInfo] of Object.entries(clients)) {
14
+ for (const [name, clientInfo] of clients.entries()) {
15
15
  const clientTags = clientInfo.transport.tags || [];
16
16
  const hasMatchingTags = tags.every((tag) => clientTags.includes(tag));
17
17
  if (hasMatchingTags) {
18
- filteredClients[name] = clientInfo;
18
+ filteredClients.set(name, clientInfo);
19
19
  matchedClients++;
20
20
  }
21
21
  }
@@ -25,7 +25,7 @@ export function filterClientsByTags(clients, tags) {
25
25
  else {
26
26
  logger.debug(`Found ${matchedClients} clients matching tags: ${tags.join(', ')}`);
27
27
  }
28
- return Object.freeze(filteredClients);
28
+ return filteredClients;
29
29
  }
30
30
  /**
31
31
  * Filters clients by capabilities
@@ -34,16 +34,16 @@ export function filterClientsByTags(clients, tags) {
34
34
  * @returns Filtered record of client instances
35
35
  */
36
36
  export function filterClientsByCapabilities(clients, capabilities) {
37
- const filteredClients = {};
37
+ const filteredClients = new Map();
38
38
  let matchedClients = 0;
39
- for (const [name, clientInfo] of Object.entries(clients)) {
39
+ for (const [name, clientInfo] of clients.entries()) {
40
40
  const clientCapabilities = clientInfo.capabilities || {};
41
41
  const hasMatchingCapabilities = Object.keys(capabilities).every((capability) => {
42
42
  const clientCapability = clientCapabilities[capability];
43
43
  return clientCapability !== undefined;
44
44
  });
45
45
  if (hasMatchingCapabilities) {
46
- filteredClients[name] = clientInfo;
46
+ filteredClients.set(name, clientInfo);
47
47
  matchedClients++;
48
48
  }
49
49
  }
@@ -53,7 +53,7 @@ export function filterClientsByCapabilities(clients, capabilities) {
53
53
  else {
54
54
  logger.debug(`Found ${matchedClients} clients matching capabilities: ${JSON.stringify(capabilities)}`);
55
55
  }
56
- return Object.freeze(filteredClients);
56
+ return filteredClients;
57
57
  }
58
58
  /**
59
59
  * Filters clients by multiple criteria
@@ -72,13 +72,13 @@ export function filterClients(...filters) {
72
72
  */
73
73
  export function byCapabilities(requiredCapabilities) {
74
74
  return (clients) => {
75
- return Object.entries(clients).reduce((filtered, [name, clientInfo]) => {
75
+ return Array.from(clients.entries()).reduce((filtered, [name, clientInfo]) => {
76
76
  const hasCapabilities = Object.keys(requiredCapabilities).every((cap) => clientInfo.capabilities && cap in clientInfo.capabilities);
77
77
  if (hasCapabilities) {
78
- filtered[name] = clientInfo;
78
+ filtered.set(name, clientInfo);
79
79
  }
80
80
  return filtered;
81
- }, {});
81
+ }, new Map());
82
82
  };
83
83
  }
84
84
  /**
@@ -90,13 +90,13 @@ export function byTags(tags) {
90
90
  return (clients) => {
91
91
  if (!tags || tags.length === 0)
92
92
  return clients;
93
- return Object.entries(clients).reduce((filtered, [name, clientInfo]) => {
93
+ return Array.from(clients.entries()).reduce((filtered, [name, clientInfo]) => {
94
94
  const hasMatchingTags = tags.every((tag) => clientInfo.transport.tags?.includes(tag));
95
95
  if (hasMatchingTags) {
96
- filtered[name] = clientInfo;
96
+ filtered.set(name, clientInfo);
97
97
  }
98
98
  return filtered;
99
- }, {});
99
+ }, new Map());
100
100
  };
101
101
  }
102
102
  //# sourceMappingURL=clientFiltering.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clientFiltering.js","sourceRoot":"","sources":["../../src/utils/clientFiltering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientFiltering.js","sourceRoot":"","sources":["../../src/utils/clientFiltering.ts"],"names":[],"mappings":"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"}
@@ -48,15 +48,4 @@ export declare function formatErrorResponse(error: any): {
48
48
  message: string;
49
49
  data?: any;
50
50
  };
51
- /**
52
- * Extracts client name and resource name from a URI
53
- * @param uri The URI to parse
54
- * @param separator The separator used in the URI
55
- * @returns An object with clientName and resourceName
56
- * @throws InvalidRequestError if the URI is invalid
57
- */
58
- export declare function parseUri(uri: string, separator: string): {
59
- clientName: string;
60
- resourceName: string;
61
- };
62
51
  //# sourceMappingURL=errorHandling.d.ts.map