@samanhappy/mcphub 1.1.14 → 1.2.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 (215) hide show
  1. package/README.fr.md +2 -1
  2. package/README.md +2 -1
  3. package/README.zh.md +2 -1
  4. package/dist/betterAuth.js +3 -3
  5. package/dist/betterAuth.js.map +1 -1
  6. package/dist/cli/commands/keys.js +22 -3
  7. package/dist/cli/commands/keys.js.map +1 -1
  8. package/dist/clients/mcpSdkClient.js +2667 -1448
  9. package/dist/clients/mcpSdkClient.js.map +4 -4
  10. package/dist/clients/openapi.js +3 -2
  11. package/dist/clients/openapi.js.map +1 -1
  12. package/dist/controllers/bearerKeyController.js +49 -3
  13. package/dist/controllers/bearerKeyController.js.map +1 -1
  14. package/dist/controllers/credentialBindingController.js +1 -1
  15. package/dist/controllers/credentialBindingController.js.map +1 -1
  16. package/dist/controllers/groupController.js +12 -5
  17. package/dist/controllers/groupController.js.map +1 -1
  18. package/dist/controllers/healthController.js +23 -1
  19. package/dist/controllers/healthController.js.map +1 -1
  20. package/dist/controllers/metricsController.js +9 -1
  21. package/dist/controllers/metricsController.js.map +1 -1
  22. package/dist/controllers/oauthDynamicRegistrationController.js +5 -5
  23. package/dist/controllers/oauthDynamicRegistrationController.js.map +1 -1
  24. package/dist/controllers/oauthRelayController.js +65 -0
  25. package/dist/controllers/oauthRelayController.js.map +1 -0
  26. package/dist/controllers/personalOAuthController.js +10 -1
  27. package/dist/controllers/personalOAuthController.js.map +1 -1
  28. package/dist/controllers/serverController.js +23 -14
  29. package/dist/controllers/serverController.js.map +1 -1
  30. package/dist/controllers/userController.js +11 -1
  31. package/dist/controllers/userController.js.map +1 -1
  32. package/dist/dao/BearerKeyDao.js +10 -5
  33. package/dist/dao/BearerKeyDao.js.map +1 -1
  34. package/dist/dao/BearerKeyDaoDbImpl.js +16 -5
  35. package/dist/dao/BearerKeyDaoDbImpl.js.map +1 -1
  36. package/dist/dao/GroupDaoDbImpl.js +11 -0
  37. package/dist/dao/GroupDaoDbImpl.js.map +1 -1
  38. package/dist/dao/ServerDao.js +5 -1
  39. package/dist/dao/ServerDao.js.map +1 -1
  40. package/dist/dao/ServerDaoDbImpl.js +3 -0
  41. package/dist/dao/ServerDaoDbImpl.js.map +1 -1
  42. package/dist/dao/UserDaoDbImpl.js +4 -0
  43. package/dist/dao/UserDaoDbImpl.js.map +1 -1
  44. package/dist/db/connection.js +6 -2
  45. package/dist/db/connection.js.map +1 -1
  46. package/dist/db/entities/BearerKey.js +8 -0
  47. package/dist/db/entities/BearerKey.js.map +1 -1
  48. package/dist/db/entities/Group.js +4 -0
  49. package/dist/db/entities/Group.js.map +1 -1
  50. package/dist/db/entities/OAuthState.js +43 -0
  51. package/dist/db/entities/OAuthState.js.map +1 -0
  52. package/dist/db/entities/Server.js +4 -0
  53. package/dist/db/entities/Server.js.map +1 -1
  54. package/dist/db/entities/User.js +4 -0
  55. package/dist/db/entities/User.js.map +1 -1
  56. package/dist/db/entities/index.js +3 -1
  57. package/dist/db/entities/index.js.map +1 -1
  58. package/dist/db/replicaSchema.js +40 -0
  59. package/dist/db/replicaSchema.js.map +1 -0
  60. package/dist/db/repositories/ServerRepository.js +1 -0
  61. package/dist/db/repositories/ServerRepository.js.map +1 -1
  62. package/dist/db/setup.js +25 -0
  63. package/dist/db/setup.js.map +1 -0
  64. package/dist/db/transactionContext.js +21 -0
  65. package/dist/db/transactionContext.js.map +1 -0
  66. package/dist/index.js +2 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/middlewares/auth.js +7 -1
  69. package/dist/middlewares/auth.js.map +1 -1
  70. package/dist/middlewares/replicaConfig.js +134 -0
  71. package/dist/middlewares/replicaConfig.js.map +1 -0
  72. package/dist/middlewares/userContext.js +1 -1
  73. package/dist/middlewares/userContext.js.map +1 -1
  74. package/dist/models/OAuth.js +57 -7
  75. package/dist/models/OAuth.js.map +1 -1
  76. package/dist/routes/index.js +16 -1
  77. package/dist/routes/index.js.map +1 -1
  78. package/dist/server.js +13 -4
  79. package/dist/server.js.map +1 -1
  80. package/dist/services/authorizationService.js.map +1 -1
  81. package/dist/services/capabilitySnapshotService.js +2 -1
  82. package/dist/services/capabilitySnapshotService.js.map +1 -1
  83. package/dist/services/credentialBindingService.js +13 -1
  84. package/dist/services/credentialBindingService.js.map +1 -1
  85. package/dist/services/dataService.js +4 -2
  86. package/dist/services/dataService.js.map +1 -1
  87. package/dist/services/groupService.js +15 -7
  88. package/dist/services/groupService.js.map +1 -1
  89. package/dist/services/mcpEventBus.js +6 -0
  90. package/dist/services/mcpEventBus.js.map +1 -0
  91. package/dist/services/mcpOAuthProvider.js +91 -5
  92. package/dist/services/mcpOAuthProvider.js.map +1 -1
  93. package/dist/services/mcpService.js +136 -9
  94. package/dist/services/mcpService.js.map +1 -1
  95. package/dist/services/metricsService.js +4 -0
  96. package/dist/services/metricsService.js.map +1 -1
  97. package/dist/services/oauthClientRegistration.js +21 -1
  98. package/dist/services/oauthClientRegistration.js.map +1 -1
  99. package/dist/services/oauthServerService.js +5 -6
  100. package/dist/services/oauthServerService.js.map +1 -1
  101. package/dist/services/oauthSettingsStore.js +21 -0
  102. package/dist/services/oauthSettingsStore.js.map +1 -1
  103. package/dist/services/personalOAuthService.js +42 -2
  104. package/dist/services/personalOAuthService.js.map +1 -1
  105. package/dist/services/replicaLock.js +30 -0
  106. package/dist/services/replicaLock.js.map +1 -0
  107. package/dist/services/replicaService.js +111 -0
  108. package/dist/services/replicaService.js.map +1 -0
  109. package/dist/services/requestContextService.js +15 -0
  110. package/dist/services/requestContextService.js.map +1 -1
  111. package/dist/services/serverConfigEnvironment.js +2 -1
  112. package/dist/services/serverConfigEnvironment.js.map +1 -1
  113. package/dist/services/sseService.js +61 -8
  114. package/dist/services/sseService.js.map +1 -1
  115. package/dist/services/templateService.js +11 -5
  116. package/dist/services/templateService.js.map +1 -1
  117. package/dist/services/userService.js +5 -1
  118. package/dist/services/userService.js.map +1 -1
  119. package/dist/utils/groupAccess.js +6 -4
  120. package/dist/utils/groupAccess.js.map +1 -1
  121. package/dist/utils/groupKeyScope.js +11 -5
  122. package/dist/utils/groupKeyScope.js.map +1 -1
  123. package/dist/utils/logger.js +7 -0
  124. package/dist/utils/logger.js.map +1 -1
  125. package/dist/utils/migration.js +8 -0
  126. package/dist/utils/migration.js.map +1 -1
  127. package/dist/utils/oauthBearer.js +1 -0
  128. package/dist/utils/oauthBearer.js.map +1 -1
  129. package/dist/utils/oauthServerMetadata.js +21 -0
  130. package/dist/utils/oauthServerMetadata.js.map +1 -1
  131. package/dist/utils/replicaLogContext.js +3 -0
  132. package/dist/utils/replicaLogContext.js.map +1 -0
  133. package/dist/utils/replicaMode.js +17 -0
  134. package/dist/utils/replicaMode.js.map +1 -0
  135. package/dist/utils/serverConfigPersistence.js +20 -1
  136. package/dist/utils/serverConfigPersistence.js.map +1 -1
  137. package/dist/utils/serverConfigValidation.js +1 -0
  138. package/dist/utils/serverConfigValidation.js.map +1 -1
  139. package/dist/utils/settingsSync.js +4 -0
  140. package/dist/utils/settingsSync.js.map +1 -1
  141. package/frontend/dist/assets/{ActivityPage-C8Zj4FeE.js → ActivityPage-CSXEpl6y.js} +2 -2
  142. package/frontend/dist/assets/{ActivityPage-C8Zj4FeE.js.map → ActivityPage-CSXEpl6y.js.map} +1 -1
  143. package/frontend/dist/assets/{ConfirmDialog-BYdfb115.js → ConfirmDialog-BJpzQmMw.js} +2 -2
  144. package/frontend/dist/assets/{ConfirmDialog-BYdfb115.js.map → ConfirmDialog-BJpzQmMw.js.map} +1 -1
  145. package/frontend/dist/assets/CredentialsPage-CPxOHQUZ.js +2 -0
  146. package/frontend/dist/assets/CredentialsPage-CPxOHQUZ.js.map +1 -0
  147. package/frontend/dist/assets/{Dashboard-CCiZcGi4.js → Dashboard-Da-YT_l_.js} +2 -2
  148. package/frontend/dist/assets/{Dashboard-CCiZcGi4.js.map → Dashboard-Da-YT_l_.js.map} +1 -1
  149. package/frontend/dist/assets/{DeleteDialog-BaCsEkJA.js → DeleteDialog-BoMYLx3J.js} +2 -2
  150. package/frontend/dist/assets/{DeleteDialog-BaCsEkJA.js.map → DeleteDialog-BoMYLx3J.js.map} +1 -1
  151. package/frontend/dist/assets/{EndpointCopy-CmKx4RVL.js → EndpointCopy-CZOjiFAH.js} +2 -2
  152. package/frontend/dist/assets/{EndpointCopy-CmKx4RVL.js.map → EndpointCopy-CZOjiFAH.js.map} +1 -1
  153. package/frontend/dist/assets/GroupsPage-CSA5G9_H.js +33 -0
  154. package/frontend/dist/assets/GroupsPage-CSA5G9_H.js.map +1 -0
  155. package/frontend/dist/assets/{LoginPage-Hn1uu0vB.js → LoginPage-7RswUPtG.js} +2 -2
  156. package/frontend/dist/assets/{LoginPage-Hn1uu0vB.js.map → LoginPage-7RswUPtG.js.map} +1 -1
  157. package/frontend/dist/assets/{LogsPage-JMCtTjCv.js → LogsPage-Dbef_68F.js} +2 -2
  158. package/frontend/dist/assets/{LogsPage-JMCtTjCv.js.map → LogsPage-Dbef_68F.js.map} +1 -1
  159. package/frontend/dist/assets/MarketPage-rSBdHZxo.js +2 -0
  160. package/frontend/dist/assets/{MarketPage-Bvi1KESo.js.map → MarketPage-rSBdHZxo.js.map} +1 -1
  161. package/frontend/dist/assets/{OAuthConsentPage-DofQEZAU.js → OAuthConsentPage-BH9O7bk3.js} +2 -2
  162. package/frontend/dist/assets/{OAuthConsentPage-DofQEZAU.js.map → OAuthConsentPage-BH9O7bk3.js.map} +1 -1
  163. package/frontend/dist/assets/{Pagination-D99WHhBx.js → Pagination-S-7lzy59.js} +2 -2
  164. package/frontend/dist/assets/{Pagination-D99WHhBx.js.map → Pagination-S-7lzy59.js.map} +1 -1
  165. package/frontend/dist/assets/{PromptsPage-B-8vczAR.js → PromptsPage-B558MhVU.js} +2 -2
  166. package/frontend/dist/assets/{PromptsPage-B-8vczAR.js.map → PromptsPage-B558MhVU.js.map} +1 -1
  167. package/frontend/dist/assets/{ResourcesPage-DLAIatoG.js → ResourcesPage-DQpy8B9L.js} +2 -2
  168. package/frontend/dist/assets/{ResourcesPage-DLAIatoG.js.map → ResourcesPage-DQpy8B9L.js.map} +1 -1
  169. package/frontend/dist/assets/{ServersPage-wVLsTL_f.js → ServersPage-DBcC8pG2.js} +5 -5
  170. package/frontend/dist/assets/ServersPage-DBcC8pG2.js.map +1 -0
  171. package/frontend/dist/assets/SettingsPage-BcpeHFR3.js +14 -0
  172. package/frontend/dist/assets/SettingsPage-BcpeHFR3.js.map +1 -0
  173. package/frontend/dist/assets/{StatusDot-00-sTQKv.js → StatusDot-CLxRrJ5l.js} +2 -2
  174. package/frontend/dist/assets/{StatusDot-00-sTQKv.js.map → StatusDot-CLxRrJ5l.js.map} +1 -1
  175. package/frontend/dist/assets/{ToggleGroup-CtWBng3r.js → ToggleGroup-DuWJZU41.js} +2 -2
  176. package/frontend/dist/assets/{ToggleGroup-CtWBng3r.js.map → ToggleGroup-DuWJZU41.js.map} +1 -1
  177. package/frontend/dist/assets/UserGroupSelection-CN0weGXJ.js +2 -0
  178. package/frontend/dist/assets/UserGroupSelection-CN0weGXJ.js.map +1 -0
  179. package/frontend/dist/assets/UsersPage-B158Bofs.js +2 -0
  180. package/frontend/dist/assets/UsersPage-B158Bofs.js.map +1 -0
  181. package/frontend/dist/assets/{clipboard-2RRFM-q8.js → clipboard-BLr_gbf8.js} +2 -2
  182. package/frontend/dist/assets/{clipboard-2RRFM-q8.js.map → clipboard-BLr_gbf8.js.map} +1 -1
  183. package/frontend/dist/assets/{costRevision-Ntl7VtWo.js → costRevision-Dzec2k_b.js} +2 -2
  184. package/frontend/dist/assets/{costRevision-Ntl7VtWo.js.map → costRevision-Dzec2k_b.js.map} +1 -1
  185. package/frontend/dist/assets/framework-vendor-D0S_ys6r.js +61 -0
  186. package/frontend/dist/assets/framework-vendor-D0S_ys6r.js.map +1 -0
  187. package/frontend/dist/assets/{i18n-vendor-DVmjrzgW.js → i18n-vendor-COTriSc6.js} +2 -2
  188. package/frontend/dist/assets/{i18n-vendor-DVmjrzgW.js.map → i18n-vendor-COTriSc6.js.map} +1 -1
  189. package/frontend/dist/assets/{icons-vendor-CyAS6fj0.js → icons-vendor-DZjjGrOu.js} +2 -2
  190. package/frontend/dist/assets/{icons-vendor-CyAS6fj0.js.map → icons-vendor-DZjjGrOu.js.map} +1 -1
  191. package/frontend/dist/assets/index-CGRjM_NC.js +3 -0
  192. package/frontend/dist/assets/{index-CkSmxNPW.js.map → index-CGRjM_NC.js.map} +1 -1
  193. package/frontend/dist/assets/{resourceService-BB4UM6IQ.js → resourceService-BNH7uNar.js} +2 -2
  194. package/frontend/dist/assets/{resourceService-BB4UM6IQ.js.map → resourceService-BNH7uNar.js.map} +1 -1
  195. package/frontend/dist/assets/{useCostData-C3XnQyUj.js → useCostData-B2d2eLCD.js} +2 -2
  196. package/frontend/dist/assets/{useCostData-C3XnQyUj.js.map → useCostData-B2d2eLCD.js.map} +1 -1
  197. package/frontend/dist/assets/variableDetection-DRdE941j.js +80 -0
  198. package/frontend/dist/assets/variableDetection-DRdE941j.js.map +1 -0
  199. package/frontend/dist/index.html +4 -4
  200. package/package.json +4 -2
  201. package/frontend/dist/assets/CredentialsPage-BnzqPYjg.js +0 -2
  202. package/frontend/dist/assets/CredentialsPage-BnzqPYjg.js.map +0 -1
  203. package/frontend/dist/assets/GroupsPage-DHgQeVHy.js +0 -33
  204. package/frontend/dist/assets/GroupsPage-DHgQeVHy.js.map +0 -1
  205. package/frontend/dist/assets/MarketPage-Bvi1KESo.js +0 -2
  206. package/frontend/dist/assets/ServersPage-wVLsTL_f.js.map +0 -1
  207. package/frontend/dist/assets/SettingsPage-DkfXDE5_.js +0 -14
  208. package/frontend/dist/assets/SettingsPage-DkfXDE5_.js.map +0 -1
  209. package/frontend/dist/assets/UsersPage-BtdFWcVD.js +0 -2
  210. package/frontend/dist/assets/UsersPage-BtdFWcVD.js.map +0 -1
  211. package/frontend/dist/assets/framework-vendor-CQFm9vKd.js +0 -61
  212. package/frontend/dist/assets/framework-vendor-CQFm9vKd.js.map +0 -1
  213. package/frontend/dist/assets/index-CkSmxNPW.js +0 -3
  214. package/frontend/dist/assets/variableDetection-BUXwrSop.js +0 -18
  215. package/frontend/dist/assets/variableDetection-BUXwrSop.js.map +0 -1
@@ -1,4 +1,7 @@
1
1
  import { oauthServerMetadataSchema } from '../utils/oauthServerMetadata.js';
2
+ import { isReplicaMode } from '../utils/replicaMode.js';
3
+ import { withReplicaLock } from './replicaLock.js';
4
+ import { expandServerConfig } from './serverConfigEnvironment.js';
2
5
  import * as sharedOAuthSettings from './oauthSettingsStore.js';
3
6
  import { personalOAuthContexts, hasPersonalOAuth, personalAuthorizationRequired, } from './personalOAuthService.js';
4
7
  /**
@@ -14,6 +17,7 @@ import { personalOAuthContexts, hasPersonalOAuth, personalAuthorizationRequired,
14
17
  * - Authorization flow handling
15
18
  */
16
19
  import { randomBytes } from 'node:crypto';
20
+ import { auth } from '../clients/mcpSdkClient.js';
17
21
  import { getSystemConfigDao } from '../dao/index.js';
18
22
  import { DEFAULT_OAUTH_REDIRECT_URI, resolvePreferredRedirectUris, } from '../utils/oauthRedirectUri.js';
19
23
  import { resolveInstallBaseUrl } from '../utils/installBaseUrl.js';
@@ -220,7 +224,7 @@ export class MCPHubOAuthProvider {
220
224
  /**
221
225
  * Get stored OAuth tokens
222
226
  */
223
- tokens() {
227
+ storedTokens() {
224
228
  // Use cached config only (tokens are updated via saveTokens which updates cache)
225
229
  const serverConfig = this.serverConfig;
226
230
  if (!serverConfig?.oauth?.accessToken) {
@@ -230,21 +234,101 @@ export class MCPHubOAuthProvider {
230
234
  access_token: serverConfig.oauth.accessToken,
231
235
  token_type: 'Bearer',
232
236
  refresh_token: serverConfig.oauth.refreshToken,
233
- // Note: expires_in is not typically stored, only the token itself
234
- // The SDK will handle token refresh when needed
237
+ ...(serverConfig.oauth.accessTokenExpiresAt !== undefined
238
+ ? {
239
+ expires_in: Math.max(0, Math.floor((serverConfig.oauth.accessTokenExpiresAt - Date.now()) / 1000)),
240
+ }
241
+ : {}),
235
242
  };
236
243
  }
244
+ async tokens() {
245
+ if (isReplicaMode()) {
246
+ const latest = await this.settings.loadServerConfig(this.serverName);
247
+ if (!latest)
248
+ return undefined;
249
+ this.serverConfig = await expandServerConfig(latest);
250
+ }
251
+ const oauth = this.serverConfig.oauth;
252
+ if (!oauth?.accessToken ||
253
+ oauth.accessTokenExpiresAt === undefined ||
254
+ oauth.accessTokenExpiresAt > Date.now())
255
+ return this.storedTokens();
256
+ if (!oauth.refreshToken) {
257
+ throw new Error('OAuth access token expired; reconnect');
258
+ }
259
+ if (!this.renewal) {
260
+ const renew = async () => {
261
+ if (!this.serverConfig.url)
262
+ throw new Error('Missing OAuth resource URL');
263
+ // SDK issuer annotation re-saves tokens; do not turn remaining lifetime into a new expiry.
264
+ const provider = new Proxy(this, {
265
+ get: (target, property) => {
266
+ if (property === 'tokens')
267
+ return () => {
268
+ const stored = this.storedTokens();
269
+ if (!stored)
270
+ return undefined;
271
+ const { expires_in: _expiry, ...tokens } = stored;
272
+ return tokens;
273
+ };
274
+ const value = Reflect.get(target, property);
275
+ return typeof value === 'function' ? value.bind(target) : value;
276
+ },
277
+ });
278
+ const fetchFn = await createOAuthFetch(this.serverConfig);
279
+ const result = await auth(provider, {
280
+ serverUrl: this.serverConfig.url,
281
+ fetchFn: this.personal?.wrapFetch(fetchFn) ?? fetchFn,
282
+ });
283
+ if (result !== 'AUTHORIZED')
284
+ throw new Error('OAuth authorization required; reconnect');
285
+ };
286
+ this.renewal = withReplicaLock(JSON.stringify(['oauth', this.serverName, this.personal?.username || 'shared']), async () => {
287
+ if (isReplicaMode() && !this.personal) {
288
+ const latest = await this.settings.loadServerConfig(this.serverName);
289
+ if (!latest)
290
+ throw new Error('Server no longer exists');
291
+ this.serverConfig = await expandServerConfig(latest);
292
+ const expiry = this.serverConfig.oauth?.accessTokenExpiresAt;
293
+ if (expiry === undefined || expiry > Date.now())
294
+ return;
295
+ }
296
+ await (this.personal ? this.personal.renewTokens(renew) : renew());
297
+ });
298
+ }
299
+ const renewal = this.renewal;
300
+ try {
301
+ await renewal;
302
+ if (this.personal)
303
+ this.serverConfig = this.personal.config;
304
+ return this.storedTokens();
305
+ }
306
+ finally {
307
+ if (this.renewal === renewal)
308
+ this.renewal = undefined;
309
+ }
310
+ }
237
311
  /**
238
312
  * Save OAuth tokens
239
313
  * Called by SDK after successful token exchange or refresh
240
314
  */
241
315
  async saveTokens(tokens) {
316
+ if (tokens.expires_in !== undefined &&
317
+ (!Number.isFinite(tokens.expires_in) || tokens.expires_in < 0))
318
+ throw new Error('Invalid OAuth token expiry');
242
319
  const currentOAuth = this.serverConfig.oauth;
243
320
  const accessTokenChanged = currentOAuth?.accessToken !== tokens.access_token;
321
+ const accessTokenExpiresAt = tokens.expires_in !== undefined
322
+ ? Date.now() + tokens.expires_in * 1000
323
+ : accessTokenChanged
324
+ ? null
325
+ : undefined;
326
+ const expiryChanged = accessTokenExpiresAt !== undefined &&
327
+ currentOAuth?.accessTokenExpiresAt !== (accessTokenExpiresAt ?? undefined);
244
328
  const refreshTokenProvided = tokens.refresh_token !== undefined;
245
329
  const refreshTokenChanged = refreshTokenProvided && currentOAuth?.refreshToken !== tokens.refresh_token;
246
330
  const hadPending = Boolean(currentOAuth?.pendingAuthorization);
247
- if (!accessTokenChanged && !refreshTokenChanged && !hadPending) {
331
+ if (!accessTokenChanged && !refreshTokenChanged && !expiryChanged && !hadPending) {
248
332
  return;
249
333
  }
250
334
  logger.log('Saving OAuth tokens', {
@@ -254,6 +338,7 @@ export class MCPHubOAuthProvider {
254
338
  });
255
339
  const updatedConfig = await this.settings.persistTokens(this.serverName, {
256
340
  accessToken: tokens.access_token,
341
+ accessTokenExpiresAt,
257
342
  refreshToken: refreshTokenProvided ? (tokens.refresh_token ?? null) : undefined,
258
343
  clearPendingAuthorization: hadPending,
259
344
  });
@@ -552,7 +637,7 @@ const hasAuthorizationHeader = (headers) => {
552
637
  * @param serverConfig - Server configuration
553
638
  * @returns OAuthClientProvider instance or undefined if OAuth not configured
554
639
  */
555
- export const createOAuthProvider = async (serverName, serverConfig) => {
640
+ const createOAuthProviderUnlocked = async (serverName, serverConfig) => {
556
641
  const oauth = serverConfig.oauth;
557
642
  if (hasPersonalOAuth(serverConfig) && !personalOAuthContexts.has(serverConfig))
558
643
  throw personalAuthorizationRequired(serverName);
@@ -593,4 +678,5 @@ export const createOAuthProvider = async (serverName, serverConfig) => {
593
678
  logger.log('Created OAuth provider', JSON.stringify({ serverName }));
594
679
  return provider;
595
680
  };
681
+ export const createOAuthProvider = (name, definition) => withReplicaLock(JSON.stringify(['oauth', name, personalOAuthContexts.get(definition)?.username || 'shared']), () => createOAuthProviderUnlocked(name, definition));
596
682
  //# sourceMappingURL=mcpOAuthProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcpOAuthProvider.js","sourceRoot":"","sources":["../../src/services/mcpOAuthProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcpOAuthProvider.js","sourceRoot":"","sources":["../../src/services/mcpOAuthProvider.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
1
  import { getToolPolicy } from './toolPolicyService.js';
2
+ import { isDeepStrictEqual } from 'node:util';
3
+ import { isReplicaMode } from '../utils/replicaMode.js';
4
+ import { withReplicaLock } from './replicaLock.js';
2
5
  import { projectGroupToolName, assertValidGroupToolNames } from '../utils/groupToolNames.js';
3
6
  import { isSafePassthroughHeader } from '../utils/passthroughHeaders.js';
4
7
  import { observeToolCall, setMetricsServer } from './metricsService.js';
@@ -39,12 +42,13 @@ import config from '../config/index.js';
39
42
  import { validateMaxBufferSize } from '../utils/stdioOptions.js';
40
43
  import { validateServerName } from '../utils/serverNameValidation.js';
41
44
  import { getGroup } from './sseService.js';
45
+ import { mcpEventBus } from './mcpEventBus.js';
42
46
  import { getServerConfigInGroup, normalizeGroupServers } from './groupService.js';
43
47
  import { removeServerToolEmbeddings, removeToolEmbeddings, saveToolsAsVectorEmbeddings, } from './vectorSearchService.js';
44
48
  import { OpenAPIClient } from '../clients/openapi.js';
45
49
  import { RequestContextService } from './requestContextService.js';
46
50
  import { getDataService } from './services.js';
47
- import { getBearerKeyDao, getServerDao, getGroupDao, getSystemConfigDao, getBuiltinPromptDao, getBuiltinResourceDao, } from '../dao/index.js';
51
+ import { getBearerKeyDao, getServerDao, getGroupDao, getSystemConfigDao, getBuiltinPromptDao, getBuiltinResourceDao, getCredentialBindingDao, } from '../dao/index.js';
48
52
  import { initializeAllOAuthClients } from './oauthService.js';
49
53
  import { createOAuthProvider } from './mcpOAuthProvider.js';
50
54
  import { initSmartRoutingService, getSmartRoutingTools, handleSearchToolsRequest, handleDescribeToolRequest, isSmartRoutingGroup, } from './smartRoutingService.js';
@@ -430,6 +434,7 @@ export const notifyToolChanged = async (name, options) => {
430
434
  broadcastToolListChanged();
431
435
  };
432
436
  const broadcastListChanged = (listType, sendNotification) => {
437
+ mcpEventBus.publish({ kind: `${listType}s_list_changed` });
433
438
  Object.values(servers).forEach((server) => {
434
439
  sendNotification(server)
435
440
  .then(() => {
@@ -449,18 +454,20 @@ export const broadcastResourceListChanged = () => {
449
454
  export const broadcastPromptListChanged = () => {
450
455
  broadcastListChanged('prompt', (server) => server.sendPromptListChanged());
451
456
  };
452
- export const updateServerInfoVisibility = (serverName, visibility, sharedWithUsers) => {
457
+ export const updateServerInfoVisibility = (serverName, visibility, sharedWithUsers, sharedWithUserGroups) => {
453
458
  const serverInfo = getServerByName(serverName);
454
459
  if (!serverInfo) {
455
460
  return;
456
461
  }
457
462
  serverInfo.visibility = visibility;
458
463
  serverInfo.sharedWithUsers = sharedWithUsers;
464
+ serverInfo.sharedWithUserGroups = sharedWithUserGroups;
459
465
  if (serverInfo.config) {
460
466
  serverInfo.config = {
461
467
  ...serverInfo.config,
462
468
  visibility,
463
469
  sharedWithUsers,
470
+ sharedWithUserGroups,
464
471
  };
465
472
  }
466
473
  };
@@ -730,7 +737,16 @@ const principalServerScope = new AsyncLocalStorage();
730
737
  // Header-dependent discovery must never publish descriptors or embeddings globally.
731
738
  const requestDiscoveryInfos = new WeakSet();
732
739
  const getVisibleServerInfos = () => {
733
- return getDataService().filterData(principalServerScope.getStore() ?? serverInfos);
740
+ const visible = getDataService().filterData(principalServerScope.getStore() ?? serverInfos);
741
+ // A system key with accessType 'exclude' hides its excluded servers (and the
742
+ // members of excluded groups, already expanded by the auth layer) from every
743
+ // listing, call resolution and smart-routing surface that reads this list.
744
+ const excludedServers = RequestContextService.getInstance().getBearerKeyExclusions();
745
+ if (!excludedServers || excludedServers.length === 0) {
746
+ return visible;
747
+ }
748
+ const excluded = new Set(excludedServers);
749
+ return visible.filter((serverInfo) => !excluded.has(serverInfo.name));
734
750
  };
735
751
  const getVisibleServerByName = (name) => {
736
752
  return getVisibleServerInfos().find((serverInfo) => serverInfo.name === name);
@@ -973,7 +989,7 @@ const createUpstreamMcpClient = (name, getServerInfo, serverConfig, downstream)
973
989
  });
974
990
  if (elicitation && downstream)
975
991
  installElicitationRelay(client, downstream);
976
- return client;
992
+ return protectReplicaOAuthClient(client, name, serverConfig);
977
993
  };
978
994
  // Normalize and infer server type for safe client display
979
995
  const normalizeServerType = (type) => {
@@ -1471,6 +1487,9 @@ const refreshCapabilitiesAfterFailedCall = async (info) => {
1471
1487
  };
1472
1488
  // Helper function to handle client.callTool with reconnection logic
1473
1489
  const callToolWithReconnect = async (serverInfo, toolParams, options, maxRetries = 1, isolated, extra) => {
1490
+ // A lost response does not prove a side effect failed; replica failover never replays it.
1491
+ if (isReplicaMode())
1492
+ maxRetries = 0;
1474
1493
  // Local, reassignable refs so a reconnect can swap in the new connection for
1475
1494
  // the next retry attempt. For isolated calls these track the per-session
1476
1495
  // client/transport; otherwise they mirror the shared serverInfo connection.
@@ -1665,7 +1684,7 @@ const setupServerKeepAlive = (serverInfo, serverConfig) => {
1665
1684
  };
1666
1685
  // Initialize MCP server clients
1667
1686
  export const initializeClientsFromSettings = async (isInit, serverName, options) => {
1668
- const allServers = await getServerDao().findAll();
1687
+ const allServers = options?.declarations ?? await getServerDao().findAll();
1669
1688
  const existingServerInfos = serverInfos;
1670
1689
  const nextServerInfos = [];
1671
1690
  const generation = ++initGeneration;
@@ -1692,6 +1711,13 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1692
1711
  }
1693
1712
  // Expand environment variables in all configuration values
1694
1713
  const expandedConf = await expandServerConfig(conf);
1714
+ if (options?.preserveExisting) {
1715
+ const existing = existingServerInfos.find((info) => info.name === name);
1716
+ if (existing) {
1717
+ nextServerInfos.push(existing);
1718
+ continue;
1719
+ }
1720
+ }
1695
1721
  // Skip disabled servers
1696
1722
  if (expandedConf.enabled === false) {
1697
1723
  logger.log(`Skipping disabled server: ${name}`);
@@ -1699,6 +1725,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1699
1725
  name,
1700
1726
  owner: expandedConf.owner,
1701
1727
  visibility: expandedConf.visibility,
1728
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1702
1729
  sharedWithUsers: expandedConf.sharedWithUsers,
1703
1730
  status: 'disconnected',
1704
1731
  error: null,
@@ -1716,6 +1743,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1716
1743
  name,
1717
1744
  owner: expandedConf.owner,
1718
1745
  visibility: expandedConf.visibility,
1746
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1719
1747
  sharedWithUsers: expandedConf.sharedWithUsers,
1720
1748
  enabled: true,
1721
1749
  status: 'disconnected',
@@ -1750,6 +1778,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1750
1778
  Object.assign(onDemandInfo, {
1751
1779
  owner: expandedConf.owner,
1752
1780
  visibility: expandedConf.visibility,
1781
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1753
1782
  sharedWithUsers: expandedConf.sharedWithUsers,
1754
1783
  enabled: true,
1755
1784
  config: expandedConf,
@@ -1787,6 +1816,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1787
1816
  Object.assign(existingServer, {
1788
1817
  owner: expandedConf.owner,
1789
1818
  visibility: expandedConf.visibility,
1819
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1790
1820
  sharedWithUsers: expandedConf.sharedWithUsers,
1791
1821
  enabled: expandedConf.enabled === undefined ? true : expandedConf.enabled,
1792
1822
  });
@@ -1812,6 +1842,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1812
1842
  name,
1813
1843
  owner: expandedConf.owner,
1814
1844
  visibility: expandedConf.visibility,
1845
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1815
1846
  sharedWithUsers: expandedConf.sharedWithUsers,
1816
1847
  status: 'disconnected',
1817
1848
  error: 'Missing OpenAPI specification URL or schema',
@@ -1827,6 +1858,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1827
1858
  name,
1828
1859
  owner: expandedConf.owner,
1829
1860
  visibility: expandedConf.visibility,
1861
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1830
1862
  sharedWithUsers: expandedConf.sharedWithUsers,
1831
1863
  status: 'connecting',
1832
1864
  error: null,
@@ -1920,6 +1952,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1920
1952
  name,
1921
1953
  owner: expandedConf.owner,
1922
1954
  visibility: expandedConf.visibility,
1955
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1923
1956
  sharedWithUsers: expandedConf.sharedWithUsers,
1924
1957
  status: 'disconnected',
1925
1958
  error: `Failed to create transport: ${formatErrorForLogging(error)}`,
@@ -1954,6 +1987,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1954
1987
  name,
1955
1988
  owner: expandedConf.owner,
1956
1989
  visibility: expandedConf.visibility,
1990
+ sharedWithUserGroups: expandedConf.sharedWithUserGroups,
1957
1991
  sharedWithUsers: expandedConf.sharedWithUsers,
1958
1992
  status: 'connecting',
1959
1993
  recovery: existingServer?.recovery,
@@ -2169,6 +2203,24 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
2169
2203
  }
2170
2204
  return serverInfos;
2171
2205
  };
2206
+ export const reconcileReplicaServers = async (declarations) => {
2207
+ const expanded = new Map();
2208
+ for (const declaration of declarations) {
2209
+ const resolved = await expandServerConfig(declaration);
2210
+ validateCredentialTemplate(resolved);
2211
+ validateMaxBufferSize(resolved.options?.maxBufferSize);
2212
+ expanded.set(declaration.name, resolved);
2213
+ }
2214
+ const changed = serverInfos.filter((info) => !isDeepStrictEqual(info.config, expanded.get(info.name)) ||
2215
+ (info.enabled !== false) !== (expanded.get(info.name)?.enabled !== false));
2216
+ for (const info of changed)
2217
+ closeServer(info.name);
2218
+ serverInfos = serverInfos.filter((info) => !changed.includes(info));
2219
+ await initializeClientsFromSettings(false, undefined, { declarations, preserveExisting: true });
2220
+ broadcastToolListChanged();
2221
+ broadcastResourceListChanged();
2222
+ broadcastPromptListChanged();
2223
+ };
2172
2224
  // Register all MCP tools
2173
2225
  export const registerAllTools = async (isInit, serverName, options) => {
2174
2226
  await initializeClientsFromSettings(isInit, serverName, options);
@@ -2203,6 +2255,7 @@ export const getServersInfo = async (page, limit, user) => {
2203
2255
  name: server.name,
2204
2256
  owner: server.owner,
2205
2257
  visibility: server.visibility,
2258
+ sharedWithUserGroups: server.sharedWithUserGroups,
2206
2259
  sharedWithUsers: server.sharedWithUsers,
2207
2260
  // Newly created servers that are enabled should appear as "connecting"
2208
2261
  // until the MCP client initialization completes. Disabled servers remain
@@ -4321,6 +4374,7 @@ const handleReadResourceRequestImpl = async (request, extra) => {
4321
4374
  };
4322
4375
  // Preserve credential-safe errors for personal clients in every discovery scope.
4323
4376
  const personalClientMethods = new Set([
4377
+ 'connect',
4324
4378
  'callTool',
4325
4379
  'getPrompt',
4326
4380
  'readResource',
@@ -4329,7 +4383,33 @@ const personalClientMethods = new Set([
4329
4383
  'listResources',
4330
4384
  'listResourceTemplates',
4331
4385
  ]);
4332
- const protectPersonalClient = (client, info, resolvedConfig) => new Proxy(client, {
4386
+ const protectReplicaOAuthClient = (client, name, definition) => {
4387
+ if (!isReplicaMode() || !definition.url || !definition.oauth)
4388
+ return client;
4389
+ return new Proxy(client, {
4390
+ get(target, property) {
4391
+ const value = Reflect.get(target, property);
4392
+ if (typeof value !== 'function')
4393
+ return value;
4394
+ if (!personalClientMethods.has(String(property)))
4395
+ return value.bind(target);
4396
+ return (...args) => {
4397
+ const personal = personalOAuthContexts.get(definition);
4398
+ const scope = JSON.stringify(['oauth', name, personal?.username || 'shared']);
4399
+ return withReplicaLock(scope, async () => {
4400
+ if (personal) {
4401
+ await personal.assertCurrent();
4402
+ const binding = await getCredentialBindingDao().get(name, personal.username);
4403
+ if (binding?.encryptedValues !== personal.version)
4404
+ throw new Error('Personal authorization changed; retry with current credentials');
4405
+ }
4406
+ return value.apply(target, args);
4407
+ });
4408
+ };
4409
+ },
4410
+ });
4411
+ };
4412
+ const protectPersonalClient = (client, info, resolvedConfig) => new Proxy(protectReplicaOAuthClient(client, info.name, resolvedConfig), {
4333
4413
  get(target, property) {
4334
4414
  const value = Reflect.get(target, property);
4335
4415
  if (typeof value !== 'function')
@@ -4358,6 +4438,7 @@ const createPrincipalRuntime = async (name, resolvedConfig, scope, toolsOnly = f
4358
4438
  name,
4359
4439
  owner: resolvedConfig.owner,
4360
4440
  visibility: resolvedConfig.visibility,
4441
+ sharedWithUserGroups: resolvedConfig.sharedWithUserGroups,
4361
4442
  sharedWithUsers: resolvedConfig.sharedWithUsers,
4362
4443
  enabled: true,
4363
4444
  config: resolvedConfig,
@@ -4400,10 +4481,10 @@ const createPrincipalRuntime = async (name, resolvedConfig, scope, toolsOnly = f
4400
4481
  });
4401
4482
  info.transport = transport;
4402
4483
  info.client = protectPersonalClient(client, info, resolvedConfig);
4403
- await client.connect(transport, resolvedConfig.options || {});
4484
+ await info.client.connect(transport, resolvedConfig.options || {});
4404
4485
  const capabilities = client.getServerCapabilities();
4405
4486
  if (capabilities?.tools) {
4406
- const { tools } = await client.listTools({}, resolvedConfig.options);
4487
+ const { tools } = await info.client.listTools({}, resolvedConfig.options);
4407
4488
  info.tools = preserveListFreshness(tools, tools.map((tool) => normalizeToolForCache(name, tool)));
4408
4489
  recordCapabilitySnapshot(info, tools);
4409
4490
  }
@@ -4713,6 +4794,7 @@ const listProjectionInputs = async (group, field) => {
4713
4794
  enabled: info.enabled,
4714
4795
  owner: info.owner,
4715
4796
  visibility: info.visibility,
4797
+ sharedWithUserGroups: info.sharedWithUserGroups,
4716
4798
  sharedWithUsers: info.sharedWithUsers,
4717
4799
  config: info.config,
4718
4800
  })),
@@ -4870,7 +4952,52 @@ const withToolPolicy = async (handler, request, extra, invocation) => {
4870
4952
  return principalServerScope.run(eligible, () => handler(request, extra));
4871
4953
  };
4872
4954
  export const handleListToolsRequest = (request, extra) => withToolPolicy(listToolsWithPrincipal, request, extra, false);
4873
- export const handleCallToolRequest = (request, extra) => observeToolCall(() => withToolPolicy(callToolWithPrincipal, request, extra, true));
4955
+ // Polling refreshes connections; authorization always reads the current shared records.
4956
+ const withReplicaServerScope = async (action) => {
4957
+ if (!isReplicaMode())
4958
+ return action();
4959
+ const context = UserContextService.getInstance();
4960
+ const current = context.getCurrentUser();
4961
+ const externalPrincipal = current?.credentialEligible === false ||
4962
+ RequestContextService.getInstance().getHostedAuthContext();
4963
+ const user = current ? externalPrincipal ? current : await getUserDao().findByUsername(current.username) : null;
4964
+ if (current && !user)
4965
+ throw new Error('User no longer exists');
4966
+ const definitions = getDataService().filterData(await getServerDao().findAll(), user ?? undefined);
4967
+ const byName = new Map(definitions.map((server) => [server.name, server]));
4968
+ const visible = (principalServerScope.getStore() ?? serverInfos).flatMap((info) => {
4969
+ const live = byName.get(info.name);
4970
+ if (!live || live.enabled === false)
4971
+ return [];
4972
+ if (hasPersonalAuthentication(live) !== hasPersonalAuthentication(info.config))
4973
+ return [];
4974
+ // Project request authorization while keeping all lifecycle reads/writes on the runtime.
4975
+ return [
4976
+ new Proxy(info, {
4977
+ get(target, property) {
4978
+ switch (property) {
4979
+ case 'owner':
4980
+ case 'visibility':
4981
+ case 'sharedWithUsers':
4982
+ case 'sharedWithUserGroups':
4983
+ return live[property];
4984
+ case 'config':
4985
+ return {
4986
+ ...target.config,
4987
+ tools: live.tools,
4988
+ prompts: live.prompts,
4989
+ resources: live.resources,
4990
+ };
4991
+ default:
4992
+ return Reflect.get(target, property);
4993
+ }
4994
+ },
4995
+ }),
4996
+ ];
4997
+ });
4998
+ return context.runWithContext(() => principalServerScope.run(visible, action), user ?? null);
4999
+ };
5000
+ export const handleCallToolRequest = (request, extra) => observeToolCall(() => withReplicaServerScope(() => withToolPolicy(callToolWithPrincipal, request, extra, true)));
4874
5001
  export const handleGetPromptRequest = withPrincipalServers(withModernLists(handleGetPromptRequestImpl, ['prompts']), 'prompt');
4875
5002
  export const handleListPromptsRequest = withPrincipalServers(withModernLists(withCacheHints(handleListPromptsRequestImpl, false, 'prompts'), ['prompts']), 'list');
4876
5003
  export const handleListResourcesRequest = withPrincipalServers(withModernLists(withCacheHints(handleListResourcesRequestImpl, false, 'resources'), [