@1mcp/agent 0.12.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 (161) hide show
  1. package/README.md +22 -37
  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/auth/{sessionManager.d.ts → serverSessionManager.d.ts} +24 -36
  15. package/build/auth/serverSessionManager.d.ts.map +1 -0
  16. package/build/auth/{sessionManager.js → serverSessionManager.js} +77 -24
  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 +1 -1
  25. package/build/capabilities/capabilityManager.js.map +1 -1
  26. package/build/config/{configManager.d.ts → mcpConfigManager.d.ts} +11 -6
  27. package/build/config/mcpConfigManager.d.ts.map +1 -0
  28. package/build/config/{configManager.js → mcpConfigManager.js} +26 -8
  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/core/client/clientManager.d.ts +14 -6
  35. package/build/core/client/clientManager.d.ts.map +1 -1
  36. package/build/core/client/clientManager.js +90 -28
  37. package/build/core/client/clientManager.js.map +1 -1
  38. package/build/core/server/{serverConfig.d.ts → agentConfig.d.ts} +50 -15
  39. package/build/core/server/agentConfig.d.ts.map +1 -0
  40. package/build/core/server/agentConfig.js +166 -0
  41. package/build/core/server/agentConfig.js.map +1 -0
  42. package/build/core/server/serverManager.d.ts +12 -5
  43. package/build/core/server/serverManager.d.ts.map +1 -1
  44. package/build/core/server/serverManager.js +12 -2
  45. package/build/core/server/serverManager.js.map +1 -1
  46. package/build/core/types/client.d.ts +22 -9
  47. package/build/core/types/client.d.ts.map +1 -1
  48. package/build/core/types/client.js +2 -0
  49. package/build/core/types/client.js.map +1 -1
  50. package/build/core/types/server.d.ts +3 -3
  51. package/build/core/types/server.d.ts.map +1 -1
  52. package/build/core/types/transport.d.ts +58 -0
  53. package/build/core/types/transport.d.ts.map +1 -1
  54. package/build/core/types/transport.js +10 -0
  55. package/build/core/types/transport.js.map +1 -1
  56. package/build/handlers/notificationHandlers.d.ts +3 -3
  57. package/build/handlers/notificationHandlers.d.ts.map +1 -1
  58. package/build/handlers/notificationHandlers.js +2 -2
  59. package/build/handlers/notificationHandlers.js.map +1 -1
  60. package/build/handlers/requestHandlers.d.ts +2 -2
  61. package/build/handlers/requestHandlers.d.ts.map +1 -1
  62. package/build/handlers/requestHandlers.js +4 -3
  63. package/build/handlers/requestHandlers.js.map +1 -1
  64. package/build/index.js +47 -7
  65. package/build/index.js.map +1 -1
  66. package/build/{transport/http/middleware/loggingMiddleware.d.ts → logger/mcpLoggingEnhancer.d.ts} +1 -1
  67. package/build/logger/mcpLoggingEnhancer.d.ts.map +1 -0
  68. package/build/{transport/http/middleware/loggingMiddleware.js → logger/mcpLoggingEnhancer.js} +2 -2
  69. package/build/logger/mcpLoggingEnhancer.js.map +1 -0
  70. package/build/server.js +4 -4
  71. package/build/server.js.map +1 -1
  72. package/build/services/configReloadService.d.ts +2 -2
  73. package/build/services/configReloadService.d.ts.map +1 -1
  74. package/build/services/configReloadService.js +4 -4
  75. package/build/services/configReloadService.js.map +1 -1
  76. package/build/transport/http/middlewares/errorHandler.d.ts.map +1 -0
  77. package/build/transport/http/{errorHandler.js → middlewares/errorHandler.js} +1 -1
  78. package/build/transport/http/middlewares/errorHandler.js.map +1 -0
  79. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts +42 -0
  80. package/build/transport/http/middlewares/scopeAuthMiddleware.d.ts.map +1 -0
  81. package/build/transport/http/middlewares/scopeAuthMiddleware.js +136 -0
  82. package/build/transport/http/middlewares/scopeAuthMiddleware.js.map +1 -0
  83. package/build/transport/http/middlewares/securityMiddleware.d.ts +30 -0
  84. package/build/transport/http/middlewares/securityMiddleware.d.ts.map +1 -0
  85. package/build/transport/http/middlewares/securityMiddleware.js +201 -0
  86. package/build/transport/http/middlewares/securityMiddleware.js.map +1 -0
  87. package/build/transport/http/middlewares/tagsExtractor.d.ts.map +1 -0
  88. package/build/transport/http/middlewares/tagsExtractor.js.map +1 -0
  89. package/build/transport/http/routes/oauthRoutes.d.ts +3 -13
  90. package/build/transport/http/routes/oauthRoutes.d.ts.map +1 -1
  91. package/build/transport/http/routes/oauthRoutes.js +459 -117
  92. package/build/transport/http/routes/oauthRoutes.js.map +1 -1
  93. package/build/transport/http/routes/sseRoutes.d.ts +2 -2
  94. package/build/transport/http/routes/sseRoutes.d.ts.map +1 -1
  95. package/build/transport/http/routes/sseRoutes.js +9 -7
  96. package/build/transport/http/routes/sseRoutes.js.map +1 -1
  97. package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -2
  98. package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
  99. package/build/transport/http/routes/streamableHttpRoutes.js +16 -10
  100. package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
  101. package/build/transport/http/server.d.ts +3 -2
  102. package/build/transport/http/server.d.ts.map +1 -1
  103. package/build/transport/http/server.js +58 -21
  104. package/build/transport/http/server.js.map +1 -1
  105. package/build/transport/transportFactory.d.ts +9 -0
  106. package/build/transport/transportFactory.d.ts.map +1 -0
  107. package/build/transport/transportFactory.js +148 -0
  108. package/build/transport/transportFactory.js.map +1 -0
  109. package/build/utils/clientFiltering.d.ts +4 -4
  110. package/build/utils/clientFiltering.d.ts.map +1 -1
  111. package/build/utils/clientFiltering.js +14 -14
  112. package/build/utils/clientFiltering.js.map +1 -1
  113. package/build/utils/errorHandling.d.ts +0 -12
  114. package/build/utils/errorHandling.d.ts.map +1 -1
  115. package/build/utils/errorHandling.js +1 -42
  116. package/build/utils/errorHandling.js.map +1 -1
  117. package/build/utils/pagination.d.ts +2 -2
  118. package/build/utils/pagination.d.ts.map +1 -1
  119. package/build/utils/pagination.js +4 -4
  120. package/build/utils/pagination.js.map +1 -1
  121. package/build/utils/parsing.d.ts +13 -0
  122. package/build/utils/parsing.d.ts.map +1 -0
  123. package/build/utils/parsing.js +32 -0
  124. package/build/utils/parsing.js.map +1 -0
  125. package/build/utils/sanitization.d.ts +60 -0
  126. package/build/utils/sanitization.d.ts.map +1 -0
  127. package/build/utils/sanitization.js +149 -0
  128. package/build/utils/sanitization.js.map +1 -0
  129. package/build/utils/scopeValidation.d.ts +102 -0
  130. package/build/utils/scopeValidation.d.ts.map +1 -0
  131. package/build/utils/scopeValidation.js +244 -0
  132. package/build/utils/scopeValidation.js.map +1 -0
  133. package/package.json +20 -11
  134. package/build/auth/authManager.d.ts +0 -109
  135. package/build/auth/authManager.d.ts.map +0 -1
  136. package/build/auth/authManager.js +0 -173
  137. package/build/auth/authManager.js.map +0 -1
  138. package/build/auth/authMiddleware.d.ts +0 -16
  139. package/build/auth/authMiddleware.d.ts.map +0 -1
  140. package/build/auth/authMiddleware.js +0 -45
  141. package/build/auth/authMiddleware.js.map +0 -1
  142. package/build/auth/sessionManager.d.ts.map +0 -1
  143. package/build/auth/sessionManager.js.map +0 -1
  144. package/build/config/configManager.d.ts.map +0 -1
  145. package/build/config/configManager.js.map +0 -1
  146. package/build/core/server/serverConfig.d.ts.map +0 -1
  147. package/build/core/server/serverConfig.js +0 -117
  148. package/build/core/server/serverConfig.js.map +0 -1
  149. package/build/transport/config.d.ts +0 -7
  150. package/build/transport/config.d.ts.map +0 -1
  151. package/build/transport/config.js +0 -90
  152. package/build/transport/config.js.map +0 -1
  153. package/build/transport/http/errorHandler.d.ts.map +0 -1
  154. package/build/transport/http/errorHandler.js.map +0 -1
  155. package/build/transport/http/middleware/loggingMiddleware.d.ts.map +0 -1
  156. package/build/transport/http/middleware/loggingMiddleware.js.map +0 -1
  157. package/build/utils/tagsExtractor.d.ts.map +0 -1
  158. package/build/utils/tagsExtractor.js.map +0 -1
  159. /package/build/transport/http/{errorHandler.d.ts → middlewares/errorHandler.d.ts} +0 -0
  160. /package/build/{utils → transport/http/middlewares}/tagsExtractor.d.ts +0 -0
  161. /package/build/{utils → transport/http/middlewares}/tagsExtractor.js +0 -0
@@ -1,4 +1,4 @@
1
- import { ServerInfo, EnhancedTransport } from '../core/types/index.js';
1
+ import { InboundConnection, EnhancedTransport } from '../core/types/index.js';
2
2
  /**
3
3
  * Service to handle dynamic configuration reloading
4
4
  */
@@ -31,7 +31,7 @@ export declare class ConfigReloadService {
31
31
  * @param sessionId The session ID for this server instance
32
32
  * @param serverInfo The MCP server instance
33
33
  */
34
- updateServerInfo(sessionId: string, serverInfo: ServerInfo): void;
34
+ updateServerInfo(sessionId: string, serverInfo: InboundConnection): void;
35
35
  /**
36
36
  * Remove server info when a client disconnects
37
37
  * @param sessionId The session ID to remove
@@ -1 +1 @@
1
- {"version":3,"file":"configReloadService.d.ts","sourceRoot":"","sources":["../../src/services/configReloadService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAMxF;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAC7C,OAAO,CAAC,eAAe,CAAsC;IAC7D,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,OAAO;IAEP;;;OAGG;WACW,WAAW,IAAI,mBAAmB;IAOhD;;;OAGG;IACI,UAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI;IAoB7E;;;OAGG;YACW,kBAAkB;IAgDhC;;;;OAIG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAKxE;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKhD;;OAEG;IACI,IAAI,IAAI,IAAI;CAMpB;;AAED,wBAAiD"}
1
+ {"version":3,"file":"configReloadService.d.ts","sourceRoot":"","sources":["../../src/services/configReloadService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM/F;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsB;IAC7C,OAAO,CAAC,eAAe,CAA6C;IACpE,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,WAAW,CAAS;IAE5B;;OAEG;IACH,OAAO;IAEP;;;OAGG;WACW,WAAW,IAAI,mBAAmB;IAOhD;;;OAGG;IACI,UAAU,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,IAAI;IAoB7E;;;OAGG;YACW,kBAAkB;IAgDhC;;;;OAIG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAK/E;;;OAGG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKhD;;OAEG;IACI,IAAI,IAAI,IAAI;CAMpB;;AAED,wBAAiD"}
@@ -1,8 +1,8 @@
1
1
  import logger from '../logger/logger.js';
2
- import { ConfigChangeEvent, ConfigManager } from '../config/configManager.js';
2
+ import { ConfigChangeEvent, McpConfigManager } from '../config/mcpConfigManager.js';
3
3
  import { createClients } from '../core/client/clientManager.js';
4
4
  import { setupCapabilities } from '../capabilities/capabilityManager.js';
5
- import { createTransports } from '../transport/config.js';
5
+ import { createTransports } from '../transport/transportFactory.js';
6
6
  import { ServerManager } from '../core/server/serverManager.js';
7
7
  /**
8
8
  * Service to handle dynamic configuration reloading
@@ -32,7 +32,7 @@ export class ConfigReloadService {
32
32
  */
33
33
  initialize(initialTransports) {
34
34
  this.currentTransports = initialTransports;
35
- const configManager = ConfigManager.getInstance();
35
+ const configManager = McpConfigManager.getInstance();
36
36
  // Remove any existing listeners to prevent duplicates
37
37
  configManager.removeAllListeners(ConfigChangeEvent.TRANSPORT_CONFIG_CHANGED);
38
38
  // Increase max listeners limit to prevent warnings
@@ -109,7 +109,7 @@ export class ConfigReloadService {
109
109
  * Stop the service and clean up resources
110
110
  */
111
111
  stop() {
112
- const configManager = ConfigManager.getInstance();
112
+ const configManager = McpConfigManager.getInstance();
113
113
  configManager.stopWatching();
114
114
  configManager.removeAllListeners(ConfigChangeEvent.TRANSPORT_CONFIG_CHANGED);
115
115
  logger.info('Config reload service stopped');
@@ -1 +1 @@
1
- {"version":3,"file":"configReloadService.js","sourceRoot":"","sources":["../../src/services/configReloadService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configReloadService.js","sourceRoot":"","sources":["../../src/services/configReloadService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/errorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,QAQhG"}
@@ -1,5 +1,5 @@
1
1
  import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
2
- import logger from '../../logger/logger.js';
2
+ import logger from '../../../logger/logger.js';
3
3
  export default function errorHandler(err, req, res, _next) {
4
4
  logger.error('Express error:', err);
5
5
  res.status(500).json({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/errorHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAE/C,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,GAAU,EAAE,GAAY,EAAE,GAAa,EAAE,KAAmB;IAC/F,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,KAAK,EAAE;YACL,IAAI,EAAE,SAAS,CAAC,aAAa;YAC7B,OAAO,EAAE,uBAAuB;SACjC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ /**
3
+ * Authentication information structure
4
+ */
5
+ export interface AuthInfo {
6
+ token: string;
7
+ clientId: string;
8
+ grantedScopes: string[];
9
+ grantedTags: string[];
10
+ }
11
+ /**
12
+ * Creates a scope validation middleware that uses the SDK's bearer auth middleware
13
+ *
14
+ * This middleware:
15
+ * 1. Uses SDK's requireBearerAuth to verify tokens (when auth enabled)
16
+ * 2. Validates that requested tags are covered by granted scopes
17
+ * 3. Provides authentication context to downstream handlers
18
+ *
19
+ * When scope validation is disabled, all tags are allowed.
20
+ * When scope validation is enabled:
21
+ * - If auth is also enabled, validates tokens and scopes
22
+ * - If auth is disabled, allows all tags (useful for development/testing)
23
+ */
24
+ export declare function createScopeAuthMiddleware(): (_req: Request, res: Response, next: NextFunction) => void;
25
+ /**
26
+ * Default middleware for backward compatibility
27
+ *
28
+ * @deprecated Use createScopeAuthMiddleware() instead
29
+ */
30
+ export default function scopeAuthMiddleware(req: Request, res: Response, next: NextFunction): void;
31
+ /**
32
+ * Utility function to get validated tags from response locals
33
+ *
34
+ * This should be used by downstream handlers instead of directly accessing res.locals.tags
35
+ * to ensure they get scope-validated tags.
36
+ */
37
+ export declare function getValidatedTags(res: Response): string[];
38
+ /**
39
+ * Utility function to get authentication information from response locals
40
+ */
41
+ export declare function getAuthInfo(res: Response): AuthInfo | undefined;
42
+ //# sourceMappingURL=scopeAuthMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeAuthMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/scopeAuthMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO1D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,WAKvB,OAAO,OAAO,QAAQ,QAAQ,YAAY,KAAG,IAAI,CAuFlE;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAGjG;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,EAAE,CAWxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAM/D"}
@@ -0,0 +1,136 @@
1
+ import { requireBearerAuth } from '@modelcontextprotocol/sdk/server/auth/middleware/bearerAuth.js';
2
+ import logger from '../../../logger/logger.js';
3
+ import { AgentConfigManager } from '../../../core/server/agentConfig.js';
4
+ import { SDKOAuthServerProvider } from '../../../auth/sdkOAuthServerProvider.js';
5
+ import { hasRequiredScopes, scopesToTags, auditScopeOperation } from '../../../utils/scopeValidation.js';
6
+ /**
7
+ * Creates a scope validation middleware that uses the SDK's bearer auth middleware
8
+ *
9
+ * This middleware:
10
+ * 1. Uses SDK's requireBearerAuth to verify tokens (when auth enabled)
11
+ * 2. Validates that requested tags are covered by granted scopes
12
+ * 3. Provides authentication context to downstream handlers
13
+ *
14
+ * When scope validation is disabled, all tags are allowed.
15
+ * When scope validation is enabled:
16
+ * - If auth is also enabled, validates tokens and scopes
17
+ * - If auth is disabled, allows all tags (useful for development/testing)
18
+ */
19
+ export function createScopeAuthMiddleware() {
20
+ const serverConfig = AgentConfigManager.getInstance();
21
+ // If scope validation is disabled, return a pass-through middleware
22
+ if (!serverConfig.isScopeValidationEnabled()) {
23
+ return (_req, res, next) => {
24
+ const requestedTags = res.locals.tags || [];
25
+ res.locals.validatedTags = requestedTags;
26
+ next();
27
+ };
28
+ }
29
+ // If scope validation is enabled but auth is disabled, allow all tags
30
+ if (!serverConfig.isAuthEnabled()) {
31
+ return (_req, res, next) => {
32
+ const requestedTags = res.locals.tags || [];
33
+ res.locals.validatedTags = requestedTags;
34
+ next();
35
+ };
36
+ }
37
+ const oauthProvider = new SDKOAuthServerProvider();
38
+ // Create the SDK's bearer auth middleware
39
+ const bearerAuthMiddleware = requireBearerAuth({
40
+ verifier: oauthProvider,
41
+ });
42
+ // Return a combined middleware that does both auth and scope validation
43
+ return async (req, res, next) => {
44
+ try {
45
+ // First run the SDK's bearer auth middleware
46
+ await new Promise((resolve, reject) => {
47
+ bearerAuthMiddleware(req, res, (err) => {
48
+ if (err)
49
+ reject(err);
50
+ else
51
+ resolve();
52
+ });
53
+ });
54
+ // If we get here, auth succeeded and req.auth is populated
55
+ const authInfo = req.auth;
56
+ const grantedScopes = authInfo.scopes || [];
57
+ const grantedTags = scopesToTags(grantedScopes);
58
+ // Get requested tags from previous middleware (tagsExtractor)
59
+ const requestedTags = res.locals.tags || [];
60
+ // Validate that all requested tags are covered by granted scopes
61
+ if (!hasRequiredScopes(grantedScopes, requestedTags)) {
62
+ auditScopeOperation('insufficient_scopes', {
63
+ clientId: authInfo.clientId,
64
+ requestedScopes: requestedTags.map((tag) => `tag:${tag}`),
65
+ grantedScopes,
66
+ success: false,
67
+ error: 'Insufficient scopes for requested tags',
68
+ });
69
+ res.status(403).json({
70
+ error: 'insufficient_scope',
71
+ error_description: `Insufficient scopes. Required: ${requestedTags.join(', ')}, Granted: ${grantedTags.join(', ')}`,
72
+ });
73
+ return;
74
+ }
75
+ // Provide authentication context to downstream handlers via res.locals
76
+ res.locals.auth = {
77
+ token: req.headers.authorization?.slice(7) || '', // Remove 'Bearer ' prefix
78
+ clientId: authInfo.clientId,
79
+ grantedScopes,
80
+ grantedTags,
81
+ };
82
+ // Provide validated tags to downstream handlers
83
+ // If no specific tags requested, use all granted tags
84
+ res.locals.validatedTags = requestedTags.length > 0 ? requestedTags : grantedTags;
85
+ auditScopeOperation('scope_validation_success', {
86
+ clientId: authInfo.clientId,
87
+ requestedScopes: requestedTags.map((tag) => `tag:${tag}`),
88
+ grantedScopes,
89
+ success: true,
90
+ });
91
+ next();
92
+ }
93
+ catch (error) {
94
+ logger.error('Scope auth middleware error:', error);
95
+ res.status(500).json({
96
+ error: 'server_error',
97
+ error_description: 'Internal server error',
98
+ });
99
+ }
100
+ };
101
+ }
102
+ /**
103
+ * Default middleware for backward compatibility
104
+ *
105
+ * @deprecated Use createScopeAuthMiddleware() instead
106
+ */
107
+ export default function scopeAuthMiddleware(req, res, next) {
108
+ const middleware = createScopeAuthMiddleware();
109
+ middleware(req, res, next);
110
+ }
111
+ /**
112
+ * Utility function to get validated tags from response locals
113
+ *
114
+ * This should be used by downstream handlers instead of directly accessing res.locals.tags
115
+ * to ensure they get scope-validated tags.
116
+ */
117
+ export function getValidatedTags(res) {
118
+ if (!res?.locals?.validatedTags) {
119
+ return [];
120
+ }
121
+ // Ensure it's an array
122
+ if (!Array.isArray(res.locals.validatedTags)) {
123
+ return [];
124
+ }
125
+ return res.locals.validatedTags;
126
+ }
127
+ /**
128
+ * Utility function to get authentication information from response locals
129
+ */
130
+ export function getAuthInfo(res) {
131
+ if (!res?.locals?.auth) {
132
+ return undefined;
133
+ }
134
+ return res.locals.auth;
135
+ }
136
+ //# sourceMappingURL=scopeAuthMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeAuthMiddleware.js","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/scopeAuthMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ /**
3
+ * Security headers middleware to protect against common attacks
4
+ */
5
+ export declare function securityHeaders(req: Request, res: Response, next: NextFunction): void;
6
+ /**
7
+ * Rate limiter for sensitive operations (stricter than general OAuth)
8
+ */
9
+ export declare const sensitiveOperationLimiter: import("express-rate-limit").RateLimitRequestHandler;
10
+ /**
11
+ * Enhanced input validation middleware
12
+ */
13
+ export declare function inputValidation(req: Request, res: Response, next: NextFunction): void;
14
+ /**
15
+ * Session security middleware
16
+ */
17
+ export declare function sessionSecurity(req: Request, res: Response, next: NextFunction): void;
18
+ /**
19
+ * Request logging middleware for security audit trail
20
+ */
21
+ export declare function securityAuditLogger(req: Request, res: Response, next: NextFunction): void;
22
+ /**
23
+ * Prevent common timing attacks
24
+ */
25
+ export declare function timingAttackPrevention(req: Request, res: Response, next: NextFunction): void;
26
+ /**
27
+ * Comprehensive security middleware stack
28
+ */
29
+ export declare function setupSecurityMiddleware(): (typeof securityHeaders)[];
30
+ //# sourceMappingURL=securityMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securityMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/securityMiddleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI1D;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAyBrF;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,sDA2BpC,CAAC;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAiErF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAarF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CA4CzF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAwB5F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,+BAEtC"}
@@ -0,0 +1,201 @@
1
+ import rateLimit from 'express-rate-limit';
2
+ import logger from '../../../logger/logger.js';
3
+ /**
4
+ * Security headers middleware to protect against common attacks
5
+ */
6
+ export function securityHeaders(req, res, next) {
7
+ // Prevent clickjacking
8
+ res.setHeader('X-Frame-Options', 'DENY');
9
+ // Prevent MIME type sniffing
10
+ res.setHeader('X-Content-Type-Options', 'nosniff');
11
+ // Enable XSS protection
12
+ res.setHeader('X-XSS-Protection', '1; mode=block');
13
+ // Prevent referrer leakage
14
+ res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
15
+ // Content Security Policy for HTML responses (disabled for OAuth/auth paths)
16
+ if (req.accepts('html') && !req.path.includes('/oauth/') && !req.path.includes('/auth/')) {
17
+ res.setHeader('Content-Security-Policy', "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; form-action 'self'; frame-ancestors 'none';");
18
+ }
19
+ // Remove server information
20
+ res.removeHeader('X-Powered-By');
21
+ next();
22
+ }
23
+ /**
24
+ * Rate limiter for sensitive operations (stricter than general OAuth)
25
+ */
26
+ export const sensitiveOperationLimiter = rateLimit({
27
+ windowMs: 15 * 60 * 1000, // 15 minutes
28
+ max: 10, // 10 attempts per window
29
+ standardHeaders: true,
30
+ legacyHeaders: false,
31
+ message: {
32
+ error: 'rate_limit_exceeded',
33
+ error_description: 'Too many sensitive operations. Please try again later.',
34
+ },
35
+ skip: (req) => {
36
+ // Skip rate limiting for health checks or non-sensitive endpoints
37
+ return req.path === '/health' || req.path === '/';
38
+ },
39
+ handler: (req, res) => {
40
+ logger.warn(`Rate limit exceeded for sensitive operation`, {
41
+ ip: req.ip,
42
+ userAgent: req.get('User-Agent'),
43
+ path: req.path,
44
+ method: req.method,
45
+ timestamp: new Date().toISOString(),
46
+ });
47
+ res.status(429).json({
48
+ error: 'rate_limit_exceeded',
49
+ error_description: 'Too many sensitive operations. Please try again later.',
50
+ });
51
+ },
52
+ });
53
+ /**
54
+ * Enhanced input validation middleware
55
+ */
56
+ export function inputValidation(req, res, next) {
57
+ // Check for common injection patterns in headers
58
+ const suspiciousPatterns = [
59
+ /\$\(.*\)/, // Command injection
60
+ /<script[\s\S]*?>/i, // XSS - matches across newlines
61
+ /javascript:/i, // JavaScript protocol
62
+ /\.\./, // Path traversal
63
+ /\0/, // Null byte injection
64
+ /union.*select/i, // SQL injection
65
+ /exec\s*\(/i, // Code execution
66
+ ];
67
+ const checkForMaliciousContent = (value, location) => {
68
+ return suspiciousPatterns.some((pattern) => {
69
+ if (pattern.test(value)) {
70
+ logger.warn(`Suspicious content detected in ${location}`, {
71
+ value: value.substring(0, 100), // Log only first 100 chars
72
+ pattern: pattern.toString(),
73
+ ip: req.ip,
74
+ userAgent: req.get('User-Agent'),
75
+ path: req.path,
76
+ timestamp: new Date().toISOString(),
77
+ });
78
+ return true;
79
+ }
80
+ return false;
81
+ });
82
+ };
83
+ // Check headers
84
+ for (const [key, value] of Object.entries(req.headers)) {
85
+ if (typeof value === 'string' && checkForMaliciousContent(value, `header:${key}`)) {
86
+ res.status(400).json({
87
+ error: 'invalid_request',
88
+ error_description: 'Request contains suspicious content',
89
+ });
90
+ return;
91
+ }
92
+ }
93
+ // Check query parameters
94
+ for (const [key, value] of Object.entries(req.query)) {
95
+ if (typeof value === 'string' && checkForMaliciousContent(value, `query:${key}`)) {
96
+ res.status(400).json({
97
+ error: 'invalid_request',
98
+ error_description: 'Request contains suspicious content',
99
+ });
100
+ return;
101
+ }
102
+ }
103
+ // Check body for POST requests
104
+ if (req.body && typeof req.body === 'object') {
105
+ for (const [key, value] of Object.entries(req.body)) {
106
+ if (typeof value === 'string' && checkForMaliciousContent(value, `body:${key}`)) {
107
+ res.status(400).json({
108
+ error: 'invalid_request',
109
+ error_description: 'Request contains suspicious content',
110
+ });
111
+ return;
112
+ }
113
+ }
114
+ }
115
+ next();
116
+ }
117
+ /**
118
+ * Session security middleware
119
+ */
120
+ export function sessionSecurity(req, res, next) {
121
+ // Add security-related headers for session management
122
+ res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate');
123
+ res.setHeader('Pragma', 'no-cache');
124
+ res.setHeader('Expires', '0');
125
+ res.setHeader('Surrogate-Control', 'no-store');
126
+ // For OAuth endpoints, add additional security
127
+ if (req.path.includes('/oauth/')) {
128
+ res.setHeader('X-Robots-Tag', 'noindex, nofollow, nosnippet, noarchive');
129
+ }
130
+ next();
131
+ }
132
+ /**
133
+ * Request logging middleware for security audit trail
134
+ */
135
+ export function securityAuditLogger(req, res, next) {
136
+ const startTime = Date.now();
137
+ // Log high-value security events
138
+ const isSecurityRelevant = req.path.includes('/oauth/') ||
139
+ req.path.includes('/auth/') ||
140
+ req.method === 'POST' ||
141
+ req.method === 'PUT' ||
142
+ req.method === 'DELETE';
143
+ if (isSecurityRelevant) {
144
+ logger.info('Security-relevant request', {
145
+ method: req.method,
146
+ path: req.path,
147
+ ip: req.ip,
148
+ userAgent: req.get('User-Agent'),
149
+ contentType: req.get('Content-Type'),
150
+ timestamp: new Date().toISOString(),
151
+ sessionId: req.headers['mcp-session-id'],
152
+ authorization: req.headers.authorization ? 'Bearer [REDACTED]' : undefined,
153
+ });
154
+ }
155
+ // Capture response details
156
+ const originalSend = res.send;
157
+ res.send = function (body) {
158
+ const duration = Date.now() - startTime;
159
+ if (isSecurityRelevant) {
160
+ logger.info('Security-relevant response', {
161
+ method: req.method,
162
+ path: req.path,
163
+ statusCode: res.statusCode,
164
+ duration,
165
+ ip: req.ip,
166
+ timestamp: new Date().toISOString(),
167
+ });
168
+ }
169
+ return originalSend.call(this, body);
170
+ };
171
+ next();
172
+ }
173
+ /**
174
+ * Prevent common timing attacks
175
+ */
176
+ export function timingAttackPrevention(req, res, next) {
177
+ const startTime = Date.now();
178
+ // Add random delay for authentication-related endpoints to prevent timing attacks
179
+ const isAuthEndpoint = req.path.includes('/oauth/') || req.path.includes('/auth/');
180
+ if (isAuthEndpoint) {
181
+ // Add random delay between 10-50ms to make timing attacks harder
182
+ const randomDelay = Math.floor(Math.random() * 40) + 10;
183
+ const originalSend = res.send;
184
+ res.send = function (body) {
185
+ const elapsed = Date.now() - startTime;
186
+ const remainingDelay = Math.max(0, randomDelay - elapsed);
187
+ setTimeout(() => {
188
+ return originalSend.call(this, body);
189
+ }, remainingDelay);
190
+ return this;
191
+ };
192
+ }
193
+ next();
194
+ }
195
+ /**
196
+ * Comprehensive security middleware stack
197
+ */
198
+ export function setupSecurityMiddleware() {
199
+ return [securityHeaders, sessionSecurity, inputValidation, securityAuditLogger, timingAttackPrevention];
200
+ }
201
+ //# sourceMappingURL=securityMiddleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"securityMiddleware.js","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/securityMiddleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagsExtractor.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/tagsExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,QAkBpF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tagsExtractor.js","sourceRoot":"","sources":["../../../../src/transport/http/middlewares/tagsExtractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB;IACnF,IAAI,IAA0B,CAAC;IAC/B,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAc,CAAC;QACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS,CAAC,aAAa;oBAC7B,OAAO,EAAE,uCAAuC;iBACjD;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,oDAAoD;IACpD,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -1,14 +1,4 @@
1
- import express from 'express';
2
- import { AuthManager } from '../../../auth/authManager.js';
3
- /**
4
- * Sets up OAuth 2.1 and related endpoints on the Express app.
5
- *
6
- * This function registers all OAuth 2.1 endpoints (authorization, token, metadata, registration)
7
- * and MCP resource metadata endpoints on the provided Express application. It uses the provided
8
- * AuthManager for all authentication and token operations.
9
- *
10
- * @param app - The Express application instance
11
- * @param authManager - The AuthManager instance for OAuth/session logic
12
- */
13
- export declare function setupOAuthRoutes(app: express.Application, authManager: AuthManager): void;
1
+ import { Router } from 'express';
2
+ declare const router: Router;
3
+ export default router;
14
4
  //# sourceMappingURL=oauthRoutes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauthRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/oauthRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAK3D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,IAAI,CAsJzF"}
1
+ {"version":3,"file":"oauthRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/oauthRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqC,MAAM,SAAS,CAAC;AAmBpE,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAqgBhC,eAAe,MAAM,CAAC"}