@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 @@
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"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ declare const router: Router;
3
+ export default router;
4
+ //# sourceMappingURL=oauthRoutes.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,474 @@
1
+ import { Router } from 'express';
2
+ import rateLimit from 'express-rate-limit';
3
+ import logger from '../../../logger/logger.js';
4
+ import { ServerManager } from '../../../core/server/serverManager.js';
5
+ import { ClientStatus } from '../../../core/types/index.js';
6
+ import { OAuthRequiredError } from '../../../core/client/clientManager.js';
7
+ import createClient from '../../../core/client/clientFactory.js';
8
+ import { RATE_LIMIT_CONFIG } from '../../../constants.js';
9
+ import { AgentConfigManager } from '../../../core/server/agentConfig.js';
10
+ import { escapeHtml, sanitizeUrlParam, sanitizeErrorMessage, sanitizeServerNameForContext, } from '../../../utils/sanitization.js';
11
+ import { SDKOAuthServerProvider } from '../../../auth/sdkOAuthServerProvider.js';
12
+ import { validateScopes, auditScopeOperation } from '../../../utils/scopeValidation.js';
13
+ import { sensitiveOperationLimiter } from '../middlewares/securityMiddleware.js';
14
+ const router = Router();
15
+ // Rate limiter for OAuth endpoints
16
+ const createOAuthLimiter = () => {
17
+ const serverConfig = AgentConfigManager.getInstance();
18
+ return rateLimit({
19
+ windowMs: serverConfig.getRateLimitWindowMs(),
20
+ max: serverConfig.getRateLimitMax(),
21
+ standardHeaders: true,
22
+ legacyHeaders: false,
23
+ message: RATE_LIMIT_CONFIG.OAUTH.MESSAGE,
24
+ });
25
+ };
26
+ router.use(createOAuthLimiter());
27
+ /**
28
+ * Check if a server requires OAuth based on runtime behavior
29
+ * A server requires OAuth if it has ever thrown UnauthorizedError (indicated by authorizationUrl or oauthStartTime)
30
+ */
31
+ function requiresOAuth(service) {
32
+ // The most reliable indicator: server has ever had an authorization URL
33
+ // This means the server threw UnauthorizedError and we captured the OAuth URL
34
+ if (service.authorizationUrl) {
35
+ return true;
36
+ }
37
+ // Secondary indicator: server has ever been in AwaitingOAuth status
38
+ // This means the server threw UnauthorizedError at some point
39
+ if (service.oauthStartTime) {
40
+ return true;
41
+ }
42
+ // If currently awaiting OAuth, it definitely requires OAuth
43
+ if (service.status === ClientStatus.AwaitingOAuth) {
44
+ return true;
45
+ }
46
+ return false;
47
+ }
48
+ /**
49
+ * OAuth Dashboard - Shows all services and their OAuth status
50
+ */
51
+ router.get('/', async (req, res) => {
52
+ try {
53
+ const serverManager = ServerManager.current;
54
+ const clients = serverManager.getClients();
55
+ const services = Array.from(clients.entries()).map(([name, clientInfo]) => ({
56
+ name,
57
+ status: clientInfo.status,
58
+ authorizationUrl: clientInfo.authorizationUrl,
59
+ oauthStartTime: clientInfo.oauthStartTime,
60
+ lastError: clientInfo.lastError?.message,
61
+ lastConnected: clientInfo.lastConnected,
62
+ }));
63
+ const html = generateOAuthDashboard(services, req);
64
+ res.setHeader('Content-Type', 'text/html');
65
+ res.send(html);
66
+ }
67
+ catch (error) {
68
+ logger.error('Error serving OAuth dashboard:', error);
69
+ res.status(500).json({ error: 'Internal server error' });
70
+ }
71
+ });
72
+ /**
73
+ * Start OAuth authorization for a specific service
74
+ */
75
+ const authorizeHandler = async (req, res) => {
76
+ try {
77
+ const { serverName } = req.params;
78
+ const serverManager = ServerManager.current;
79
+ const clientInfo = serverManager.getClient(serverName);
80
+ if (!clientInfo) {
81
+ res.status(404).json({ error: 'Service not found' });
82
+ return;
83
+ }
84
+ if (clientInfo.authorizationUrl) {
85
+ // Redirect to existing authorization URL
86
+ res.redirect(clientInfo.authorizationUrl);
87
+ return;
88
+ }
89
+ else {
90
+ // Generate new authorization URL by attempting connection
91
+ await initiateOAuth(serverName);
92
+ // Get updated client info
93
+ const updatedClients = serverManager.getClients();
94
+ const updatedClientInfo = updatedClients.get(serverName);
95
+ if (updatedClientInfo?.authorizationUrl) {
96
+ res.redirect(updatedClientInfo.authorizationUrl);
97
+ return;
98
+ }
99
+ else {
100
+ res.status(500).json({ error: 'Failed to generate OAuth URL' });
101
+ return;
102
+ }
103
+ }
104
+ }
105
+ catch (error) {
106
+ logger.error(`Error starting OAuth for ${req.params.serverName}:`, error);
107
+ res.status(500).json({ error: 'Failed to start OAuth flow' });
108
+ }
109
+ };
110
+ router.get('/authorize/:serverName', authorizeHandler);
111
+ function hasFinishAuth(transport) {
112
+ return typeof transport === 'object' && transport !== null && typeof transport.finishAuth === 'function';
113
+ }
114
+ /**
115
+ * Handle OAuth callback and trigger reconnection
116
+ */
117
+ router.get('/callback/:serverName', async (req, res) => {
118
+ const { serverName } = req.params;
119
+ const { code, error } = req.query;
120
+ try {
121
+ if (error) {
122
+ logger.error(`OAuth error for ${serverName}:`, error);
123
+ return res.redirect(`/oauth?error=${encodeURIComponent(String(error))}`);
124
+ }
125
+ if (!code) {
126
+ logger.error(`OAuth callback missing authorization code for ${serverName}`);
127
+ return res.redirect(`/oauth?error=missing_code`);
128
+ }
129
+ const serverManager = ServerManager.current;
130
+ const clientInfo = serverManager.getClient(serverName);
131
+ if (!clientInfo) {
132
+ logger.error(`Client ${serverName} not found in OAuth callback`);
133
+ return res.redirect(`/oauth?error=client_not_found`);
134
+ }
135
+ // Use type guard for transport with finishAuth
136
+ if (!hasFinishAuth(clientInfo.transport)) {
137
+ logger.error(`Transport for ${serverName} does not support finishAuth`);
138
+ return res.redirect(`/oauth?error=invalid_oauth_transport`);
139
+ }
140
+ // Complete the OAuth flow with the authorization code
141
+ await clientInfo.transport.finishAuth(String(code));
142
+ clientInfo.status = ClientStatus.Connected;
143
+ clientInfo.lastConnected = new Date();
144
+ clientInfo.lastError = undefined;
145
+ // Redirect back to dashboard with success
146
+ res.redirect('/oauth?success=1');
147
+ }
148
+ catch (error) {
149
+ logger.error(`Error handling OAuth callback for ${serverName}:`, error);
150
+ res.redirect(`/oauth?error=callback_failed`);
151
+ }
152
+ });
153
+ /**
154
+ * Restart OAuth flow for a service
155
+ */
156
+ const restartHandler = async (req, res) => {
157
+ const { serverName } = req.params;
158
+ try {
159
+ const serverManager = ServerManager.current;
160
+ const clientInfo = serverManager.getClient(serverName);
161
+ if (!clientInfo) {
162
+ res.status(404).json({ error: 'Service not found' });
163
+ return;
164
+ }
165
+ // Clear existing OAuth data and restart flow
166
+ await restartOAuthFlow(serverName);
167
+ res.json({ success: true, message: 'OAuth flow restarted' });
168
+ }
169
+ catch (error) {
170
+ logger.error(`Error restarting OAuth for ${serverName}:`, error);
171
+ res.status(500).json({ error: 'Failed to restart OAuth flow' });
172
+ }
173
+ };
174
+ router.post('/restart/:serverName', restartHandler);
175
+ /**
176
+ * Handle consent form submission for OAuth authorization
177
+ */
178
+ const consentHandler = async (req, res) => {
179
+ try {
180
+ const { client_id, redirect_uri, code_challenge, code_challenge_method: _code_challenge_method, state, resource, action, scopes, } = req.body;
181
+ // Validate required fields
182
+ if (!client_id || !redirect_uri || !action) {
183
+ res.status(400).json({
184
+ error: 'invalid_request',
185
+ error_description: 'Missing required parameters',
186
+ });
187
+ return;
188
+ }
189
+ // Get the OAuth server provider
190
+ const oauthProvider = new SDKOAuthServerProvider();
191
+ const client = oauthProvider.clientsStore.getClient(client_id);
192
+ if (!client) {
193
+ res.status(400).json({
194
+ error: 'invalid_client',
195
+ error_description: 'Client not found',
196
+ });
197
+ return;
198
+ }
199
+ // Ensure client is properly typed
200
+ const typedClient = client;
201
+ if (action === 'deny') {
202
+ // User denied the authorization
203
+ auditScopeOperation('authorization_denied', {
204
+ clientId: client_id,
205
+ success: false,
206
+ error: 'User denied authorization',
207
+ });
208
+ const redirectUrl = new URL(redirect_uri);
209
+ redirectUrl.searchParams.set('error', 'access_denied');
210
+ redirectUrl.searchParams.set('error_description', 'User denied the request');
211
+ if (state) {
212
+ redirectUrl.searchParams.set('state', state);
213
+ }
214
+ logger.info(`OAuth authorization denied by user for client ${client_id}`);
215
+ res.redirect(redirectUrl.toString());
216
+ return;
217
+ }
218
+ if (action === 'approve') {
219
+ // User approved the authorization
220
+ const selectedScopes = Array.isArray(scopes) ? scopes : scopes ? [scopes] : [];
221
+ // Validate selected scopes
222
+ const validation = validateScopes(selectedScopes);
223
+ if (!validation.isValid) {
224
+ res.status(400).json({
225
+ error: 'invalid_scope',
226
+ error_description: `Invalid scopes: ${validation.errors.join(', ')}`,
227
+ });
228
+ return;
229
+ }
230
+ // Reconstruct authorization params for the approve method
231
+ const authParams = {
232
+ scopes: selectedScopes,
233
+ redirectUri: redirect_uri,
234
+ codeChallenge: code_challenge,
235
+ state,
236
+ resource: resource ? new URL(resource) : undefined,
237
+ };
238
+ // Use the OAuth provider to approve the authorization
239
+ await oauthProvider.approveAuthorization(typedClient, authParams, validation.validScopes, res);
240
+ return;
241
+ }
242
+ // Invalid action
243
+ res.status(400).json({
244
+ error: 'invalid_request',
245
+ error_description: 'Invalid action',
246
+ });
247
+ }
248
+ catch (error) {
249
+ logger.error('Error handling consent form:', error);
250
+ res.status(500).json({
251
+ error: 'server_error',
252
+ error_description: 'Internal server error',
253
+ });
254
+ }
255
+ };
256
+ router.post('/consent', sensitiveOperationLimiter, consentHandler);
257
+ /**
258
+ * Initiate OAuth flow for a service
259
+ */
260
+ async function initiateOAuth(serverName) {
261
+ const serverManager = ServerManager.current;
262
+ const clientInfo = serverManager.getClient(serverName);
263
+ if (!clientInfo) {
264
+ throw new Error(`Service ${serverName} not found`);
265
+ }
266
+ try {
267
+ // Create new client and attempt connection to trigger OAuth
268
+ const newClient = await createClient();
269
+ await newClient.connect(clientInfo.transport);
270
+ }
271
+ catch (error) {
272
+ if (error instanceof OAuthRequiredError) {
273
+ // Update client info with OAuth status
274
+ clientInfo.status = ClientStatus.AwaitingOAuth;
275
+ clientInfo.oauthStartTime = new Date();
276
+ // Try to get authorization URL from OAuth provider
277
+ try {
278
+ const oauthProvider = clientInfo.transport.oauthProvider;
279
+ if (oauthProvider && typeof oauthProvider.getAuthorizationUrl === 'function') {
280
+ clientInfo.authorizationUrl = oauthProvider.getAuthorizationUrl();
281
+ }
282
+ }
283
+ catch (urlError) {
284
+ logger.warn(`Could not extract authorization URL for ${serverName}:`, urlError);
285
+ }
286
+ logger.info(`OAuth initiated for ${serverName}`);
287
+ }
288
+ else {
289
+ throw error; // Re-throw non-OAuth errors
290
+ }
291
+ }
292
+ }
293
+ /**
294
+ * Restart OAuth flow for a service
295
+ */
296
+ async function restartOAuthFlow(serverName) {
297
+ const serverManager = ServerManager.current;
298
+ const clientInfo = serverManager.getClient(serverName);
299
+ if (!clientInfo) {
300
+ throw new Error(`Service ${serverName} not found`);
301
+ }
302
+ // Clear OAuth state
303
+ clientInfo.authorizationUrl = undefined;
304
+ clientInfo.oauthStartTime = undefined;
305
+ clientInfo.status = ClientStatus.Disconnected;
306
+ // Initiate new OAuth flow
307
+ await initiateOAuth(serverName);
308
+ }
309
+ /**
310
+ * Generate OAuth dashboard HTML
311
+ */
312
+ function generateOAuthDashboard(services, req) {
313
+ const servicesHtml = services
314
+ .map((service) => {
315
+ const statusIcon = getStatusIcon(service.status);
316
+ const statusText = getStatusText(service.status);
317
+ const actionButton = getActionButton(service);
318
+ return `
319
+ <tr>
320
+ <td>${sanitizeServerNameForContext(service.name, 'html')}</td>
321
+ <td>${statusIcon} ${statusText}</td>
322
+ <td>${service.lastConnected ? escapeHtml(new Date(service.lastConnected).toLocaleString()) : 'Never'}</td>
323
+ <td>${service.lastError ? sanitizeErrorMessage(service.lastError) : '-'}</td>
324
+ <td>${actionButton}</td>
325
+ </tr>
326
+ `;
327
+ })
328
+ .join('');
329
+ return `
330
+ <!DOCTYPE html>
331
+ <html lang="en">
332
+ <head>
333
+ <meta charset="UTF-8">
334
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
335
+ <title>1MCP OAuth Management</title>
336
+ <style>
337
+ body { font-family: Arial, sans-serif; margin: 20px; background-color: #f5f5f5; }
338
+ .container { max-width: 1200px; margin: 0 auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }
339
+ h1 { color: #333; text-align: center; margin-bottom: 30px; }
340
+ table { width: 100%; border-collapse: collapse; margin-top: 20px; }
341
+ th, td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; }
342
+ th { background-color: #f8f9fa; font-weight: bold; }
343
+ .status-connected { color: #28a745; }
344
+ .status-awaiting { color: #ffc107; }
345
+ .status-error { color: #dc3545; }
346
+ .status-disconnected { color: #6c757d; }
347
+ .btn { padding: 8px 16px; border: none; border-radius: 4px; cursor: pointer; text-decoration: none; display: inline-block; font-size: 14px; }
348
+ .btn-primary { background-color: #007bff; color: white; }
349
+ .btn-warning { background-color: #ffc107; color: black; }
350
+ .btn-success { background-color: #28a745; color: white; }
351
+ .btn:hover { opacity: 0.8; }
352
+ .alert { padding: 15px; margin: 20px 0; border-radius: 4px; }
353
+ .alert-success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
354
+ .alert-error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
355
+ .refresh-btn { float: right; margin-bottom: 20px; }
356
+ </style>
357
+ </head>
358
+ <body>
359
+ <div class="container">
360
+ <h1>🔐 1MCP OAuth Management</h1>
361
+
362
+ ${getAlertHtml(req)}
363
+
364
+ <button class="btn btn-primary refresh-btn" onclick="window.location.reload()">🔄 Refresh</button>
365
+
366
+ <table>
367
+ <thead>
368
+ <tr>
369
+ <th>Service</th>
370
+ <th>Status</th>
371
+ <th>Last Connected</th>
372
+ <th>Error</th>
373
+ <th>Actions</th>
374
+ </tr>
375
+ </thead>
376
+ <tbody>
377
+ ${servicesHtml}
378
+ </tbody>
379
+ </table>
380
+
381
+ <div style="margin-top: 30px; padding: 20px; background-color: #f8f9fa; border-radius: 4px;">
382
+ <h3>Instructions:</h3>
383
+ <ul>
384
+ <li><strong>Connected:</strong> Service is working properly (no authentication required)</li>
385
+ <li><strong>Authorized:</strong> Service is working properly (OAuth authentication completed)</li>
386
+ <li><strong>Awaiting OAuth:</strong> Click "Authorize" to complete authentication</li>
387
+ <li><strong>Error:</strong> Check error message and try "Restart OAuth" if needed</li>
388
+ <li><strong>Disconnected:</strong> Service is not connected</li>
389
+ </ul>
390
+ </div>
391
+ </div>
392
+
393
+ <script>
394
+ // Auto-refresh every 30 seconds
395
+ setTimeout(() => window.location.reload(), 30000);
396
+
397
+ function restartOAuth(serverName) {
398
+ fetch(\`/oauth/restart/\${serverName}\`, { method: 'POST' })
399
+ .then(response => response.json())
400
+ .then(data => {
401
+ if (data.success) {
402
+ window.location.reload();
403
+ } else {
404
+ alert('Failed to restart OAuth: ' + (data.error || 'Unknown error'));
405
+ }
406
+ })
407
+ .catch(error => {
408
+ alert('Failed to restart OAuth: ' + error.message);
409
+ });
410
+ }
411
+ </script>
412
+ </body>
413
+ </html>
414
+ `;
415
+ }
416
+ function getStatusIcon(status) {
417
+ switch (status) {
418
+ case ClientStatus.Connected:
419
+ return '✅';
420
+ case ClientStatus.AwaitingOAuth:
421
+ return '⏳';
422
+ case ClientStatus.Error:
423
+ return '❌';
424
+ case ClientStatus.Disconnected:
425
+ return '🔌';
426
+ default:
427
+ return '❓';
428
+ }
429
+ }
430
+ function getStatusText(status) {
431
+ switch (status) {
432
+ case ClientStatus.Connected:
433
+ return '<span class="status-connected">Connected</span>';
434
+ case ClientStatus.AwaitingOAuth:
435
+ return '<span class="status-awaiting">Awaiting OAuth</span>';
436
+ case ClientStatus.Error:
437
+ return '<span class="status-error">Error</span>';
438
+ case ClientStatus.Disconnected:
439
+ return '<span class="status-disconnected">Disconnected</span>';
440
+ default:
441
+ return '<span class="status-disconnected">Unknown</span>';
442
+ }
443
+ }
444
+ function getActionButton(service) {
445
+ switch (service.status) {
446
+ case ClientStatus.Connected:
447
+ // Check if server requires OAuth based on runtime behavior
448
+ if (requiresOAuth(service)) {
449
+ return '<span class="status-connected">✓ Authorized</span>';
450
+ }
451
+ else {
452
+ return '<span class="status-connected">✓ Connected</span>';
453
+ }
454
+ case ClientStatus.AwaitingOAuth:
455
+ return `<a href="/oauth/authorize/${sanitizeUrlParam(service.name)}" class="btn btn-warning">🔐 Authorize</a>`;
456
+ case ClientStatus.Error:
457
+ case ClientStatus.Disconnected:
458
+ return `<button onclick="restartOAuth('${sanitizeServerNameForContext(service.name, 'html')}')" class="btn btn-primary">🔄 Restart OAuth</button>`;
459
+ default:
460
+ return `<button onclick="restartOAuth('${sanitizeServerNameForContext(service.name, 'html')}')" class="btn btn-primary">🔄 Start OAuth</button>`;
461
+ }
462
+ }
463
+ function getAlertHtml(req) {
464
+ if (req.query.success) {
465
+ return '<div class="alert alert-success">✅ OAuth authorization completed successfully!</div>';
466
+ }
467
+ if (req.query.error) {
468
+ const error = req.query.error;
469
+ return `<div class="alert alert-error">❌ OAuth error: ${sanitizeErrorMessage(String(error))}</div>`;
470
+ }
471
+ return '';
472
+ }
473
+ export default router;
474
+ //# sourceMappingURL=oauthRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauthRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/oauthRoutes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import { ServerManager } from '../../../core/server/serverManager.js';
3
+ export declare function setupSseRoutes(router: Router, serverManager: ServerManager): void;
4
+ //# sourceMappingURL=sseRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAKpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAKtE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CA8DjF"}
@@ -1,15 +1,17 @@
1
1
  import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
2
2
  import { ErrorCode } from '@modelcontextprotocol/sdk/types.js';
3
- import logger from '../../logger/logger.js';
4
- import { SSE_ENDPOINT, MESSAGES_ENDPOINT } from '../../constants.js';
5
- import tagsExtractor from '../tagsExtractor.js';
6
- export function setupSseRoutes(app, serverManager, authMiddleware) {
7
- app.get(SSE_ENDPOINT, authMiddleware, tagsExtractor, async (req, res) => {
3
+ import logger from '../../../logger/logger.js';
4
+ import { SSE_ENDPOINT, MESSAGES_ENDPOINT } from '../../../constants.js';
5
+ import tagsExtractor from '../middlewares/tagsExtractor.js';
6
+ import scopeAuthMiddleware, { getValidatedTags } from '../middlewares/scopeAuthMiddleware.js';
7
+ import { sanitizeHeaders } from '../../../utils/sanitization.js';
8
+ export function setupSseRoutes(router, serverManager) {
9
+ router.get(SSE_ENDPOINT, tagsExtractor, scopeAuthMiddleware, async (req, res) => {
8
10
  try {
9
- logger.info('[GET] sse', { query: req.query, headers: req.headers });
11
+ logger.info('[GET] sse', { query: req.query, headers: sanitizeHeaders(req.headers) });
10
12
  const transport = new SSEServerTransport(MESSAGES_ENDPOINT, res);
11
- // Use tags from middleware
12
- const tags = res.locals.tags;
13
+ // Use validated tags from scope auth middleware
14
+ const tags = getValidatedTags(res);
13
15
  // Connect the transport using the server manager
14
16
  await serverManager.connectTransport(transport, transport.sessionId, {
15
17
  tags,
@@ -17,7 +19,7 @@ export function setupSseRoutes(app, serverManager, authMiddleware) {
17
19
  });
18
20
  transport.onclose = () => {
19
21
  serverManager.disconnectTransport(transport.sessionId);
20
- logger.info('transport closed', transport.sessionId);
22
+ // Note: ServerManager already logs the disconnection
21
23
  };
22
24
  }
23
25
  catch (error) {
@@ -25,7 +27,7 @@ export function setupSseRoutes(app, serverManager, authMiddleware) {
25
27
  res.status(500).end();
26
28
  }
27
29
  });
28
- app.post(MESSAGES_ENDPOINT, authMiddleware, async (req, res) => {
30
+ router.post(MESSAGES_ENDPOINT, async (req, res) => {
29
31
  try {
30
32
  const sessionId = req.query.sessionId;
31
33
  if (!sessionId) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sseRoutes.js","sourceRoot":"","sources":["../../../../src/transport/http/routes/sseRoutes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAExE,OAAO,aAAa,MAAM,iCAAiC,CAAC;AAC5D,OAAO,mBAAmB,EAAE,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,aAA4B;IACzE,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACjG,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACtF,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YAEjE,gDAAgD;YAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAEnC,iDAAiD;YACjD,MAAM,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE;gBACnE,IAAI;gBACJ,gBAAgB,EAAE,GAAG,CAAC,KAAK,CAAC,UAAU,KAAK,MAAM;aAClD,CAAC,CAAC;YAEH,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACvB,aAAa,CAAC,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBACvD,qDAAqD;YACvD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,SAAmB,CAAC;YAChD,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,KAAK,EAAE;wBACL,IAAI,EAAE,SAAS,CAAC,aAAa;wBAC7B,OAAO,EAAE,uCAAuC;qBACjD;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAExD,IAAI,SAAS,YAAY,kBAAkB,EAAE,CAAC;gBAC5C,MAAM,SAAS,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS,CAAC,aAAa;oBAC7B,OAAO,EAAE,qBAAqB;iBAC/B;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,KAAK,EAAE;oBACL,IAAI,EAAE,SAAS,CAAC,aAAa;oBAC7B,OAAO,EAAE,uBAAuB;iBACjC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Router } from 'express';
2
+ import { ServerManager } from '../../../core/server/serverManager.js';
3
+ export declare function setupStreamableHttpRoutes(router: Router, serverManager: ServerManager): void;
4
+ //# sourceMappingURL=streamableHttpRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamableHttpRoutes.d.ts","sourceRoot":"","sources":["../../../../src/transport/http/routes/streamableHttpRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAqB,MAAM,SAAS,CAAC;AAMpD,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAKtE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,IAAI,CA4H5F"}