@samanhappy/mcphub 1.1.1 → 1.1.3

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 (103) hide show
  1. package/README.fr.md +4 -0
  2. package/README.md +4 -0
  3. package/README.zh.md +2 -0
  4. package/dist/cli/http.js +54 -1
  5. package/dist/cli/http.js.map +1 -1
  6. package/dist/clients/legacyMcpClient.js +1 -1
  7. package/dist/clients/legacyMcpClient.js.map +1 -1
  8. package/dist/clients/mcpSdkClient.js +28359 -0
  9. package/dist/clients/mcpSdkClient.js.map +7 -0
  10. package/dist/controllers/betterAuthController.js +3 -1
  11. package/dist/controllers/betterAuthController.js.map +1 -1
  12. package/dist/controllers/serverController.js +72 -16
  13. package/dist/controllers/serverController.js.map +1 -1
  14. package/dist/dao/SystemConfigDaoDbImpl.js +3 -0
  15. package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -1
  16. package/dist/dao/UserDao.js +57 -34
  17. package/dist/dao/UserDao.js.map +1 -1
  18. package/dist/db/entities/SystemConfig.js +4 -0
  19. package/dist/db/entities/SystemConfig.js.map +1 -1
  20. package/dist/middlewares/auth.js +17 -0
  21. package/dist/middlewares/auth.js.map +1 -1
  22. package/dist/services/betterAuthConfig.js +2 -96
  23. package/dist/services/betterAuthConfig.js.map +1 -1
  24. package/dist/services/betterAuthSession.js +19 -3
  25. package/dist/services/betterAuthSession.js.map +1 -1
  26. package/dist/services/cimdClientService.js +2 -1
  27. package/dist/services/cimdClientService.js.map +1 -1
  28. package/dist/services/credentialBindingService.js +42 -0
  29. package/dist/services/credentialBindingService.js.map +1 -1
  30. package/dist/services/forwardAuthService.js +277 -0
  31. package/dist/services/forwardAuthService.js.map +1 -0
  32. package/dist/services/keepAliveService.js +1 -1
  33. package/dist/services/keepAliveService.js.map +1 -1
  34. package/dist/services/mcpOAuthProvider.js +13 -0
  35. package/dist/services/mcpOAuthProvider.js.map +1 -1
  36. package/dist/services/mcpService.js +97 -25
  37. package/dist/services/mcpService.js.map +1 -1
  38. package/dist/services/sseService.js +22 -2
  39. package/dist/services/sseService.js.map +1 -1
  40. package/dist/services/templateService.js +10 -9
  41. package/dist/services/templateService.js.map +1 -1
  42. package/dist/utils/migration.js +1 -0
  43. package/dist/utils/migration.js.map +1 -1
  44. package/dist/utils/serverConfigPersistence.js +8 -1
  45. package/dist/utils/serverConfigPersistence.js.map +1 -1
  46. package/dist/utils/serverConfigValidation.js +5 -1
  47. package/dist/utils/serverConfigValidation.js.map +1 -1
  48. package/dist/utils/settingResolvers.js +97 -0
  49. package/dist/utils/settingResolvers.js.map +1 -0
  50. package/dist/utils/ssrf.js +48 -13
  51. package/dist/utils/ssrf.js.map +1 -1
  52. package/frontend/dist/assets/{ActivityPage-D3Oto1RE.js → ActivityPage-Bs0YrAhj.js} +2 -2
  53. package/frontend/dist/assets/{ActivityPage-D3Oto1RE.js.map → ActivityPage-Bs0YrAhj.js.map} +1 -1
  54. package/frontend/dist/assets/{CopyClientConfigDialog-kX5ewtFp.js → CopyClientConfigDialog-TcVaJHaV.js} +2 -2
  55. package/frontend/dist/assets/{CopyClientConfigDialog-kX5ewtFp.js.map → CopyClientConfigDialog-TcVaJHaV.js.map} +1 -1
  56. package/frontend/dist/assets/{CredentialsPage-C9dHU6Wf.js → CredentialsPage-Cnd6MF-3.js} +2 -2
  57. package/frontend/dist/assets/{CredentialsPage-C9dHU6Wf.js.map → CredentialsPage-Cnd6MF-3.js.map} +1 -1
  58. package/frontend/dist/assets/{Dashboard-DFyfT22A.js → Dashboard--skdgzau.js} +2 -2
  59. package/frontend/dist/assets/{Dashboard-DFyfT22A.js.map → Dashboard--skdgzau.js.map} +1 -1
  60. package/frontend/dist/assets/{EndpointCopy-6sqlZ15W.js → EndpointCopy-Dr-iLvMr.js} +2 -2
  61. package/frontend/dist/assets/{EndpointCopy-6sqlZ15W.js.map → EndpointCopy-Dr-iLvMr.js.map} +1 -1
  62. package/frontend/dist/assets/{GroupsPage-joJmAW7F.js → GroupsPage-CSIfAW7V.js} +2 -2
  63. package/frontend/dist/assets/{GroupsPage-joJmAW7F.js.map → GroupsPage-CSIfAW7V.js.map} +1 -1
  64. package/frontend/dist/assets/{LoginPage-10tXreQ_.js → LoginPage-DwnZEV5T.js} +2 -2
  65. package/frontend/dist/assets/{LoginPage-10tXreQ_.js.map → LoginPage-DwnZEV5T.js.map} +1 -1
  66. package/frontend/dist/assets/{LogsPage-yBj3gqOU.js → LogsPage-CTstXCQT.js} +2 -2
  67. package/frontend/dist/assets/{LogsPage-yBj3gqOU.js.map → LogsPage-CTstXCQT.js.map} +1 -1
  68. package/frontend/dist/assets/{MarketPage-CuAl4IXf.js → MarketPage-IbsIGvoI.js} +2 -2
  69. package/frontend/dist/assets/{MarketPage-CuAl4IXf.js.map → MarketPage-IbsIGvoI.js.map} +1 -1
  70. package/frontend/dist/assets/{OAuthConsentPage-BuvpRon8.js → OAuthConsentPage-DawUB5r6.js} +2 -2
  71. package/frontend/dist/assets/{OAuthConsentPage-BuvpRon8.js.map → OAuthConsentPage-DawUB5r6.js.map} +1 -1
  72. package/frontend/dist/assets/{PromptsPage-DsYU0Kgm.js → PromptsPage-Dim3CdKg.js} +2 -2
  73. package/frontend/dist/assets/{PromptsPage-DsYU0Kgm.js.map → PromptsPage-Dim3CdKg.js.map} +1 -1
  74. package/frontend/dist/assets/{ResourcesPage-DVxFnDJE.js → ResourcesPage-zcP5M9pv.js} +2 -2
  75. package/frontend/dist/assets/{ResourcesPage-DVxFnDJE.js.map → ResourcesPage-zcP5M9pv.js.map} +1 -1
  76. package/frontend/dist/assets/{ServersPage-DWq6jqvv.js → ServersPage-CxucQkR-.js} +4 -4
  77. package/frontend/dist/assets/{ServersPage-DWq6jqvv.js.map → ServersPage-CxucQkR-.js.map} +1 -1
  78. package/frontend/dist/assets/SettingsPage-CoAt9Wha.js +14 -0
  79. package/frontend/dist/assets/SettingsPage-CoAt9Wha.js.map +1 -0
  80. package/frontend/dist/assets/{StatusDot-DdZTtyw1.js → StatusDot-nh6JXzfm.js} +2 -2
  81. package/frontend/dist/assets/{StatusDot-DdZTtyw1.js.map → StatusDot-nh6JXzfm.js.map} +1 -1
  82. package/frontend/dist/assets/{ToggleGroup-tJbhgavL.js → ToggleGroup-CeiSM3PL.js} +2 -2
  83. package/frontend/dist/assets/{ToggleGroup-tJbhgavL.js.map → ToggleGroup-CeiSM3PL.js.map} +1 -1
  84. package/frontend/dist/assets/{UsersPage-BqM1rGSo.js → UsersPage-DLq5cgUz.js} +2 -2
  85. package/frontend/dist/assets/{UsersPage-BqM1rGSo.js.map → UsersPage-DLq5cgUz.js.map} +1 -1
  86. package/frontend/dist/assets/{clipboard-CakNzStU.js → clipboard-CmkeMDp6.js} +2 -2
  87. package/frontend/dist/assets/{clipboard-CakNzStU.js.map → clipboard-CmkeMDp6.js.map} +1 -1
  88. package/frontend/dist/assets/index-dacgBASO.js +3 -0
  89. package/frontend/dist/assets/index-dacgBASO.js.map +1 -0
  90. package/frontend/dist/assets/{resourceService-BkO_Mq1D.js → resourceService-Nk5qQbQ0.js} +2 -2
  91. package/frontend/dist/assets/{resourceService-BkO_Mq1D.js.map → resourceService-Nk5qQbQ0.js.map} +1 -1
  92. package/frontend/dist/assets/{useCostData-inPDjb84.js → useCostData-BgXlKVml.js} +2 -2
  93. package/frontend/dist/assets/{useCostData-inPDjb84.js.map → useCostData-BgXlKVml.js.map} +1 -1
  94. package/frontend/dist/assets/variableDetection-CUnJ5xdC.js +16 -0
  95. package/frontend/dist/assets/variableDetection-CUnJ5xdC.js.map +1 -0
  96. package/frontend/dist/index.html +1 -1
  97. package/package.json +5 -3
  98. package/frontend/dist/assets/SettingsPage-Db0jJzi0.js +0 -12
  99. package/frontend/dist/assets/SettingsPage-Db0jJzi0.js.map +0 -1
  100. package/frontend/dist/assets/index-DE5u_PAU.js +0 -3
  101. package/frontend/dist/assets/index-DE5u_PAU.js.map +0 -1
  102. package/frontend/dist/assets/variableDetection-Dt-yEyj8.js +0 -16
  103. package/frontend/dist/assets/variableDetection-Dt-yEyj8.js.map +0 -1
@@ -0,0 +1,277 @@
1
+ import crypto from 'crypto';
2
+ import { createRemoteJWKSet, decodeJwt, errors as joseErrors, jwtVerify } from 'jose';
3
+ import { createUser, findUserByEmail, findUserBySsoUserId, findUserByUsername, } from '../models/User.js';
4
+ import { normalizeOptionalString, normalizeStringArray, resolveBooleanSetting, resolveStringArraySetting, resolveStringSetting, } from '../utils/settingResolvers.js';
5
+ import { logger } from '../utils/logger.js';
6
+ /**
7
+ * Forward auth trusts an identity asserted by an upstream gateway as a JWT and
8
+ * verifies it against the identity provider's JWKS.
9
+ *
10
+ * Boundaries (agreed in issue #1207):
11
+ * - External identities are kept separate from Better Auth identities: they are
12
+ * stored in `ssoUserId` under the `forward-auth:` namespace, which Better Auth
13
+ * never produces.
14
+ * - Existing accounts are never linked by username or email. An identity is
15
+ * either already bound to a forward-auth user or gets a new non-admin user.
16
+ * - A token from the configured issuer that fails verification is rejected and
17
+ * never falls back to another authentication method.
18
+ */
19
+ export const FORWARD_AUTH_SSO_PREFIX = 'forward-auth:';
20
+ const SUPPORTED_MODES = ['jwks'];
21
+ const DEFAULT_ALGORITHMS = ['RS256', 'ES256'];
22
+ const DEFAULT_USERNAME_CLAIM = 'preferred_username';
23
+ const DEFAULT_EMAIL_CLAIM = 'email';
24
+ const CLOCK_TOLERANCE_SECONDS = 30;
25
+ const MAX_USERNAME_LENGTH = 255;
26
+ // Only asymmetric algorithms are meaningful with a remote JWKS. HS* and `none`
27
+ // are never accepted, whatever the configuration says.
28
+ const ASYMMETRIC_ALGORITHMS = new Set([
29
+ 'RS256',
30
+ 'RS384',
31
+ 'RS512',
32
+ 'PS256',
33
+ 'PS384',
34
+ 'PS512',
35
+ 'ES256',
36
+ 'ES384',
37
+ 'ES512',
38
+ 'EdDSA',
39
+ ]);
40
+ const reportedConfigErrors = new Set();
41
+ const reportConfigError = (message) => {
42
+ if (reportedConfigErrors.has(message)) {
43
+ return;
44
+ }
45
+ reportedConfigErrors.add(message);
46
+ logger.error(`Forward auth disabled: ${message}`);
47
+ };
48
+ const isAllowedJwksUri = (uri) => {
49
+ try {
50
+ const url = new URL(uri);
51
+ if (url.protocol === 'https:') {
52
+ return true;
53
+ }
54
+ return url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname);
55
+ }
56
+ catch {
57
+ return false;
58
+ }
59
+ };
60
+ // Audience names may contain spaces (e.g. "My API"), so a plain string is split
61
+ // on commas only. Arrays and JSON-array strings use the shared parser.
62
+ const parseAudience = (value) => {
63
+ const text = normalizeOptionalString(value);
64
+ if (text && !text.startsWith('[')) {
65
+ return text
66
+ .split(',')
67
+ .map((item) => item.trim())
68
+ .filter((item) => item.length > 0);
69
+ }
70
+ return normalizeStringArray(value);
71
+ };
72
+ const resolveAudienceSetting = (envValue, settingsValue) => {
73
+ const envAudience = parseAudience(envValue);
74
+ return envAudience.length > 0 ? envAudience : parseAudience(settingsValue);
75
+ };
76
+ export const resolveForwardAuthRuntimeConfig = (systemConfig) => {
77
+ const settings = systemConfig?.auth?.forwardAuth || {};
78
+ const jwksSettings = settings.jwks || {};
79
+ const enabledSetting = resolveBooleanSetting(process.env.FORWARD_AUTH_ENABLED, settings.enabled, false);
80
+ const mode = resolveStringSetting(process.env.FORWARD_AUTH_MODE, settings.mode, 'jwks');
81
+ const jwksUri = resolveStringSetting(process.env.FORWARD_AUTH_JWKS_URI, jwksSettings.uri);
82
+ const issuer = resolveStringSetting(process.env.FORWARD_AUTH_ISSUER, jwksSettings.issuer);
83
+ const audience = resolveAudienceSetting(process.env.FORWARD_AUTH_AUDIENCE, jwksSettings.audience);
84
+ const configuredAlgorithms = resolveStringArraySetting(process.env.FORWARD_AUTH_ALGORITHMS, jwksSettings.algorithms, DEFAULT_ALGORITHMS);
85
+ const algorithms = configuredAlgorithms.filter((alg) => ASYMMETRIC_ALGORITHMS.has(alg));
86
+ const usernameClaim = resolveStringSetting(process.env.FORWARD_AUTH_USERNAME_CLAIM, settings.usernameClaim, DEFAULT_USERNAME_CLAIM) || DEFAULT_USERNAME_CLAIM;
87
+ const emailClaim = resolveStringSetting(process.env.FORWARD_AUTH_EMAIL_CLAIM, settings.emailClaim, DEFAULT_EMAIL_CLAIM) || DEFAULT_EMAIL_CLAIM;
88
+ const autoCreate = resolveBooleanSetting(process.env.FORWARD_AUTH_AUTO_CREATE, settings.autoCreate, true);
89
+ let enabled = enabledSetting;
90
+ if (enabled) {
91
+ const rejectedAlgorithms = configuredAlgorithms.filter((alg) => !ASYMMETRIC_ALGORITHMS.has(alg));
92
+ if (!SUPPORTED_MODES.includes(mode)) {
93
+ reportConfigError(`unsupported mode "${mode}"; only "jwks" is supported`);
94
+ enabled = false;
95
+ }
96
+ else if (!jwksUri || !isAllowedJwksUri(jwksUri)) {
97
+ reportConfigError('jwks.uri must be an https URL (http is allowed only for localhost)');
98
+ enabled = false;
99
+ }
100
+ else if (!issuer) {
101
+ reportConfigError('jwks.issuer is required');
102
+ enabled = false;
103
+ }
104
+ else if (audience.length === 0) {
105
+ reportConfigError('jwks.audience is required');
106
+ enabled = false;
107
+ }
108
+ else if (rejectedAlgorithms.length > 0 || algorithms.length === 0) {
109
+ reportConfigError(`jwks.algorithms must list only asymmetric algorithms (${[...ASYMMETRIC_ALGORITHMS].join(', ')})`);
110
+ enabled = false;
111
+ }
112
+ }
113
+ return {
114
+ enabled,
115
+ mode: 'jwks',
116
+ jwksUri,
117
+ issuer,
118
+ audience,
119
+ algorithms,
120
+ usernameClaim,
121
+ emailClaim,
122
+ autoCreate,
123
+ };
124
+ };
125
+ const jwksCache = new Map();
126
+ // createRemoteJWKSet caches keys and refetches on an unknown `kid`, which is
127
+ // what handles key rotation at the identity provider.
128
+ const getRemoteJwks = (uri) => {
129
+ let jwks = jwksCache.get(uri);
130
+ if (!jwks) {
131
+ jwks = createRemoteJWKSet(new URL(uri));
132
+ jwksCache.set(uri, jwks);
133
+ }
134
+ return jwks;
135
+ };
136
+ /** Test hook: drop cached JWKS clients and once-only config error reports. */
137
+ export const resetForwardAuthStateForTests = () => {
138
+ jwksCache.clear();
139
+ reportedConfigErrors.clear();
140
+ };
141
+ // Claims are used exactly as issued and never normalized. A missing, non-string
142
+ // or whitespace-only claim counts as absent.
143
+ const readStringClaim = (payload, claim) => {
144
+ const value = payload[claim];
145
+ return typeof value === 'string' && value.trim() ? value : undefined;
146
+ };
147
+ export const buildForwardAuthSsoUserId = (issuer, subject) => `${FORWARD_AUTH_SSO_PREFIX}${crypto
148
+ .createHash('sha256')
149
+ .update(`${issuer}\n${subject}`)
150
+ .digest('hex')}`;
151
+ export const isForwardAuthUser = (user) => Boolean(user?.ssoUserId?.startsWith(FORWARD_AUTH_SSO_PREFIX));
152
+ const resolveForwardAuthUser = async (payload, config) => {
153
+ // `sub` is the identity key; normalizing it could merge distinct identities.
154
+ const subject = readStringClaim(payload, 'sub');
155
+ if (!subject || !config.issuer) {
156
+ return { status: 'rejected', reason: 'token has no usable sub claim' };
157
+ }
158
+ const ssoUserId = buildForwardAuthSsoUserId(config.issuer, subject);
159
+ const boundUser = await findUserBySsoUserId(ssoUserId);
160
+ if (boundUser) {
161
+ return { status: 'authenticated', user: boundUser };
162
+ }
163
+ if (!config.autoCreate) {
164
+ return {
165
+ status: 'rejected',
166
+ reason: 'identity is not bound to a local user and autoCreate is disabled',
167
+ };
168
+ }
169
+ const email = readStringClaim(payload, config.emailClaim);
170
+ const username = readStringClaim(payload, config.usernameClaim) || email || subject;
171
+ if (username.length > MAX_USERNAME_LENGTH) {
172
+ return { status: 'rejected', reason: 'username claim is too long' };
173
+ }
174
+ // The username is used as-is, but ownership checks trim owners, so a padded
175
+ // username could alias another account. Reject it rather than normalize it.
176
+ if (/^\s|\s$/.test(username)) {
177
+ return { status: 'rejected', reason: 'username has leading or trailing whitespace' };
178
+ }
179
+ // Never link an existing account by username or email, so a gateway identity
180
+ // cannot take over a local, Better Auth or admin account.
181
+ if (await findUserByUsername(username)) {
182
+ return {
183
+ status: 'rejected',
184
+ reason: `username "${username}" already belongs to another account`,
185
+ };
186
+ }
187
+ if (email && (await findUserByEmail(email))) {
188
+ return { status: 'rejected', reason: 'email already belongs to another account' };
189
+ }
190
+ const createdUser = await createUser({
191
+ username,
192
+ password: crypto.randomUUID(),
193
+ isAdmin: false,
194
+ email,
195
+ ssoUserId,
196
+ });
197
+ if (createdUser) {
198
+ logger.info(`Forward auth created local user "${username}"`);
199
+ return { status: 'authenticated', user: createdUser };
200
+ }
201
+ // A concurrent request for the same identity may have created the user first.
202
+ const racedUser = await findUserBySsoUserId(ssoUserId);
203
+ if (racedUser) {
204
+ return { status: 'authenticated', user: racedUser };
205
+ }
206
+ return { status: 'rejected', reason: `could not create local user "${username}"` };
207
+ };
208
+ const describeVerificationError = (error) => {
209
+ if (error instanceof joseErrors.JWTExpired)
210
+ return 'token expired';
211
+ if (error instanceof joseErrors.JWTClaimValidationFailed) {
212
+ return `claim "${error.claim}" ${error.reason}`;
213
+ }
214
+ if (error instanceof joseErrors.JOSEAlgNotAllowed)
215
+ return 'algorithm not allowed';
216
+ if (error instanceof joseErrors.JWKSNoMatchingKey)
217
+ return 'no matching key in JWKS';
218
+ if (error instanceof joseErrors.JWSSignatureVerificationFailed)
219
+ return 'invalid signature';
220
+ if (error instanceof joseErrors.JWKSTimeout)
221
+ return 'JWKS request timed out';
222
+ return error instanceof Error ? error.message : 'verification failed';
223
+ };
224
+ /**
225
+ * Authenticate a bearer token as a forward-auth JWT.
226
+ *
227
+ * Returns `skipped` when forward auth is disabled or the token is not a JWT from
228
+ * the configured issuer, so callers continue with their other methods. Returns
229
+ * `rejected` for a token from the configured issuer that fails verification or
230
+ * cannot be mapped to a user; callers must not fall back in that case.
231
+ */
232
+ export const authenticateForwardAuthToken = async (token, systemConfig) => {
233
+ if (!token) {
234
+ return { status: 'skipped' };
235
+ }
236
+ const config = resolveForwardAuthRuntimeConfig(systemConfig);
237
+ if (!config.enabled || !config.jwksUri || !config.issuer) {
238
+ return { status: 'skipped' };
239
+ }
240
+ let unverifiedIssuer;
241
+ try {
242
+ unverifiedIssuer = decodeJwt(token).iss;
243
+ }
244
+ catch {
245
+ return { status: 'skipped' };
246
+ }
247
+ if (unverifiedIssuer !== config.issuer) {
248
+ return { status: 'skipped' };
249
+ }
250
+ let payload;
251
+ try {
252
+ ({ payload } = await jwtVerify(token, getRemoteJwks(config.jwksUri), {
253
+ issuer: config.issuer,
254
+ audience: config.audience,
255
+ algorithms: config.algorithms,
256
+ requiredClaims: ['exp', 'sub'],
257
+ clockTolerance: CLOCK_TOLERANCE_SECONDS,
258
+ }));
259
+ }
260
+ catch (error) {
261
+ const reason = describeVerificationError(error);
262
+ logger.warn(`Forward auth rejected token: ${reason}`);
263
+ return { status: 'rejected', reason };
264
+ }
265
+ try {
266
+ const result = await resolveForwardAuthUser(payload, config);
267
+ if (result.status === 'rejected') {
268
+ logger.warn(`Forward auth rejected token: ${result.reason}`);
269
+ }
270
+ return result;
271
+ }
272
+ catch (error) {
273
+ logger.error('Forward auth user resolution failed:', error);
274
+ return { status: 'rejected', reason: 'user resolution failed' };
275
+ }
276
+ };
277
+ //# sourceMappingURL=forwardAuthService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forwardAuthService.js","sourceRoot":"","sources":["../../src/services/forwardAuthService.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SSEClientTransport, StreamableHTTPClientTransport } from '@modelcontextprotocol/client';
1
+ import { SSEClientTransport, StreamableHTTPClientTransport } from '../clients/mcpSdkClient.js';
2
2
  import { formatErrorForLogging } from '../utils/serialization.js';
3
3
  import { logger } from '../utils/logger.js';
4
4
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"keepAliveService.js","sourceRoot":"","sources":["../../src/services/keepAliveService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keepAliveService.js","sourceRoot":"","sources":["../../src/services/keepAliveService.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,19 @@ export class MCPHubOAuthProvider {
44
44
  getSystemInstallBaseUrl() {
45
45
  return this._systemInstallBaseUrl;
46
46
  }
47
+ async allowInsecureTokenEndpoint(endpoint) {
48
+ // Re-read the admin-controlled setting so a revoked exception cannot be
49
+ // reused by an old transport or a pending authorization callback.
50
+ const config = await loadServerConfig(this.serverName);
51
+ if (endpoint.protocol !== 'http:' || config?.oauth?.allowInsecureTokenEndpoint !== true) {
52
+ return false;
53
+ }
54
+ logger.warn('Sending OAuth credentials over HTTP with an admin-enabled exception', {
55
+ serverName: this.serverName,
56
+ tokenEndpointOrigin: endpoint.origin,
57
+ });
58
+ return true;
59
+ }
47
60
  /**
48
61
  * Get redirect URL for OAuth callback
49
62
  */
@@ -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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"}
@@ -4,6 +4,7 @@ import { getMcpRequestGroup } from '../utils/mcpRequestGroup.js';
4
4
  import { LegacyMcpClient } from '../clients/legacyMcpClient.js';
5
5
  import { LEGACY_PROTOCOL_VERSIONS } from '../utils/mcpProtocol.js';
6
6
  import { AsyncLocalStorage } from 'node:async_hooks';
7
+ import { createHash } from 'node:crypto';
7
8
  import { canAccessGroupRoute } from '../utils/groupAccess.js';
8
9
  import { canServeToolRequests } from '../utils/serverAvailability.js';
9
10
  import { PrincipalRuntimeService } from './principalRuntimeService.js';
@@ -16,7 +17,7 @@ import fs from 'fs';
16
17
  import treeKill from 'tree-kill';
17
18
  import { isProcessTreeKillAvailable } from '../utils/processTree.js';
18
19
  import { StdioClientTransport } from '@modelcontextprotocol/client/stdio';
19
- import { SSEClientTransport, StreamableHTTPClientTransport, } from '@modelcontextprotocol/client';
20
+ import { SSEClientTransport, StreamableHTTPClientTransport, } from '../clients/mcpSdkClient.js';
20
21
  import { Server } from '@modelcontextprotocol/server';
21
22
  import { createFetchWithProxy, getProxyConfigFromEnv } from './proxy.js';
22
23
  import { assertSafeUrl, createRedirectValidatingFetch } from '../utils/ssrf.js';
@@ -721,16 +722,28 @@ const removeClientState = (id) => {
721
722
  for (const client of state.cookieClients)
722
723
  client.clearSessionCookies(id);
723
724
  };
724
- const acquireClientState = (serverInfo) => {
725
+ const acquireClientState = (serverInfo, openAiSession) => {
725
726
  const contextService = RequestContextService.getInstance();
726
727
  const scope = contextService.getRequestContext()?.clientStateScope;
727
- const handle = contextService.getHeader('x-mcphub-state-id');
728
- if (!scope ||
729
- typeof handle !== 'string' ||
730
- !/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(handle)) {
731
- throw new Error('Stateful tools on stateless MCP require authenticated bearer access and X-MCPHub-State-Id (UUID v4)');
728
+ const explicitHandle = contextService.getHeader('x-mcphub-state-id');
729
+ if (!scope) {
730
+ throw new Error('Stateful tools on stateless MCP require authenticated bearer access and an application state handle');
731
+ }
732
+ let handle;
733
+ if (explicitHandle !== undefined) {
734
+ if (typeof explicitHandle !== 'string' ||
735
+ !/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(explicitHandle)) {
736
+ throw new Error('X-MCPHub-State-Id must be a UUID v4');
737
+ }
738
+ handle = explicitHandle.toLowerCase();
739
+ }
740
+ else if (typeof openAiSession === 'string' && openAiSession.trim()) {
741
+ handle = `openai:${createHash('sha256').update(openAiSession).digest('hex')}`;
742
+ }
743
+ else {
744
+ throw new Error('Stateful tools on stateless MCP require X-MCPHub-State-Id (UUID v4) or _meta["openai/session"]');
732
745
  }
733
- const id = `client-state:${scope}:${handle.toLowerCase()}`;
746
+ const id = `client-state:${scope}:${handle}`;
734
747
  let state = clientStates.get(id);
735
748
  if (state && state.active === 0 && Date.now() - state.lastUsed >= CLIENT_STATE_IDLE_MS) {
736
749
  removeClientState(id);
@@ -2670,12 +2683,19 @@ const primeOnDemandServers = (gate) => {
2670
2683
  const run = gate ? gate.run : (start) => start();
2671
2684
  return Promise.allSettled(targets.map(async (si) => {
2672
2685
  try {
2673
- await run(() => ensureServerReady(si));
2686
+ await run(() => ensureServerReady(si),
2687
+ // A reload may replace this runtime or finish its discovery while it
2688
+ // waits for a slot. Neither needs another child from the old queue.
2689
+ () => serverInfos.includes(si) && si.enabled !== false && si.tools.length === 0);
2674
2690
  // Sleep the child unless a tool call is using it; keep the cached tool list.
2675
2691
  shutdownOnDemandServer(si);
2676
2692
  logger.log('On-demand server tool cache primed');
2677
2693
  }
2678
2694
  catch (error) {
2695
+ if (error instanceof QueuedConnectCancelledError) {
2696
+ logger.log('Cancelled queued on-demand discovery', { serverName: si.name });
2697
+ return;
2698
+ }
2679
2699
  logger.warn('Failed to prime on-demand server', {
2680
2700
  error: summarizeErrorForLogging(error),
2681
2701
  });
@@ -2843,9 +2863,21 @@ const getMcpAppsRouteContext = async (sessionId, group) => {
2843
2863
  : sessionId
2844
2864
  ? servers[sessionId]?.getClientCapabilities()
2845
2865
  : undefined;
2846
- if (isSmartRoutingGroup(group) || !hasMcpAppsCapability(clientCapabilities)) {
2866
+ if (!hasMcpAppsCapability(clientCapabilities)) {
2847
2867
  return { enabled: false };
2848
2868
  }
2869
+ if (isSmartRoutingGroup(group)) {
2870
+ // Only pinned tools are listed under their own descriptor, so only the servers
2871
+ // that pin something can own a widget here. Always the multi-server shape:
2872
+ // names stay qualified and calls resolve through the group, so a pin never
2873
+ // widens what the group allows.
2874
+ const pinned = await resolvePinnedSmartRoutingServers(group);
2875
+ // An idle on-demand server still advertises its cached tools, so it keeps its
2876
+ // widget link: dropping it here would hand the host a descriptor without one
2877
+ // that the next call, which wakes the server, can no longer correct.
2878
+ const eligible = (pinned?.pinnedServerInfos ?? []).filter(canServeToolRequests);
2879
+ return eligible.length > 0 ? { enabled: true, serverInfos: eligible } : { enabled: false };
2880
+ }
2849
2881
  const { filteredServerInfos } = await getFilteredServerInfosForGroup(group);
2850
2882
  const connectedServerInfos = filteredServerInfos.filter((serverInfo) => serverInfo.status === 'connected' && !!serverInfo.client);
2851
2883
  if (connectedServerInfos.length === 0) {
@@ -3041,13 +3073,12 @@ const listGroupTools = async (group, filteredServerInfos, serverConfigsByName, a
3041
3073
  // Names the call handler always routes to a meta-tool on a Smart Routing session,
3042
3074
  // whichever of them the current mode lists (see handleCallToolRequestImpl)
3043
3075
  const SMART_ROUTING_META_TOOL_NAMES = new Set(['search_tools', 'describe_tool', 'call_tool']);
3044
- // Tools a $smart/<group> lists next to its meta-tools: each member's pinnedTools,
3045
- // narrowed to its tools selection and then run through the same filtering and
3046
- // projection as a direct group listing.
3047
- const getPinnedSmartRoutingTools = async (group) => {
3076
+ // Each member's pinnedTools, narrowed to its tools selection. Empty when the
3077
+ // route is not a $smart/<group> or the group pins nothing.
3078
+ const resolvePinnedSmartRoutingServers = async (group) => {
3048
3079
  const lookupGroup = getGroupLookupName(group);
3049
3080
  if (!lookupGroup) {
3050
- return [];
3081
+ return undefined;
3051
3082
  }
3052
3083
  const { filteredServerInfos, serverConfigsByName } = await getFilteredServerInfosForGroup(lookupGroup);
3053
3084
  const pinnedConfigsByName = new Map();
@@ -3059,9 +3090,23 @@ const getPinnedSmartRoutingTools = async (group) => {
3059
3090
  }
3060
3091
  }
3061
3092
  if (pinnedConfigsByName.size === 0) {
3093
+ return undefined;
3094
+ }
3095
+ return {
3096
+ lookupGroup,
3097
+ pinnedServerInfos: filteredServerInfos.filter((serverInfo) => pinnedConfigsByName.has(serverInfo.name)),
3098
+ pinnedConfigsByName,
3099
+ };
3100
+ };
3101
+ // Tools a $smart/<group> lists next to its meta-tools: each member's pinnedTools,
3102
+ // narrowed to its tools selection and then run through the same filtering and
3103
+ // projection as a direct group listing.
3104
+ const getPinnedSmartRoutingTools = async (group, appsRouteContext = { enabled: false }) => {
3105
+ const pinned = await resolvePinnedSmartRoutingServers(group);
3106
+ if (!pinned) {
3062
3107
  return [];
3063
3108
  }
3064
- return listGroupTools(lookupGroup, filteredServerInfos.filter((serverInfo) => pinnedConfigsByName.has(serverInfo.name)), pinnedConfigsByName, { enabled: false });
3109
+ return listGroupTools(pinned.lookupGroup, pinned.pinnedServerInfos, pinned.pinnedConfigsByName, appsRouteContext);
3065
3110
  };
3066
3111
  const handleListToolsRequestImpl = async (_, extra) => {
3067
3112
  const sessionId = extra.sessionId || '';
@@ -3073,10 +3118,11 @@ const handleListToolsRequestImpl = async (_, extra) => {
3073
3118
  const smartRoutingTools = await getSmartRoutingTools(group);
3074
3119
  let pinnedTools = [];
3075
3120
  try {
3121
+ const appsRouteContext = await getMcpAppsRouteContext(sessionId, group);
3076
3122
  // A pin named like a meta-tool (e.g. alias "describe" + separator "_" +
3077
3123
  // tool "tool") would be intercepted by it on call, even in a mode that
3078
3124
  // does not list that meta-tool, so it is not listed at all
3079
- pinnedTools = (await getPinnedSmartRoutingTools(group)).filter((tool) => !SMART_ROUTING_META_TOOL_NAMES.has(tool.name));
3125
+ pinnedTools = (await getPinnedSmartRoutingTools(group, appsRouteContext)).filter((tool) => !SMART_ROUTING_META_TOOL_NAMES.has(tool.name));
3080
3126
  }
3081
3127
  catch (error) {
3082
3128
  // Pins are an optimisation: failing to resolve them must not cost the meta-tools
@@ -3129,7 +3175,7 @@ const handleCallToolRequestImpl = async (request, extra) => {
3129
3175
  const getToolStateId = (info, legacyId) => {
3130
3176
  if (!requestContextService.getRequestContext()?.stateless)
3131
3177
  return legacyId;
3132
- clientStateLease ?? (clientStateLease = acquireClientState(info));
3178
+ clientStateLease ?? (clientStateLease = acquireClientState(info, request.params?._meta?.['openai/session']));
3133
3179
  return clientStateLease.id;
3134
3180
  };
3135
3181
  const reserveHostedIfNeeded = async (serverName, toolName) => {
@@ -3834,9 +3880,19 @@ const handleReadResourceRequestImpl = async (request, extra) => {
3834
3880
  ? { cacheMode: 'bypass' }
3835
3881
  : undefined;
3836
3882
  if (server?.client) {
3837
- result = readOptions
3838
- ? await server.client.readResource({ uri }, readOptions)
3839
- : await server.client.readResource({ uri });
3883
+ // A widget URI the upstream also lists in resources/list is read here, not in
3884
+ // the fallback loop below, so it needs the same idle guard: otherwise an
3885
+ // idle timer armed by an earlier read can close an on-demand upstream while
3886
+ // this read is still in flight.
3887
+ const releaseOnDemandRead = beginOnDemandToolCall(server);
3888
+ try {
3889
+ result = readOptions
3890
+ ? await server.client.readResource({ uri }, readOptions)
3891
+ : await server.client.readResource({ uri });
3892
+ }
3893
+ finally {
3894
+ releaseOnDemandRead?.();
3895
+ }
3840
3896
  if (!result || !Array.isArray(result.contents)) {
3841
3897
  throw new Error(`Failed to read resource: ${uri}`);
3842
3898
  }
@@ -3852,10 +3908,23 @@ const handleReadResourceRequestImpl = async (request, extra) => {
3852
3908
  ? [appsRouteContext.serverInfo]
3853
3909
  : (appsRouteContext.serverInfos ?? []);
3854
3910
  for (const candidate of candidates) {
3855
- if (!candidate.client) {
3856
- continue;
3857
- }
3911
+ // An on-demand candidate may be idle yet still advertise its cached widget
3912
+ // link, so a host can read the ui:// resource before any tool call has
3913
+ // woken it. Hold off its idle shutdown for every read, awake or not, so an
3914
+ // armed idle timer or an overlapping read cannot close the server mid-read,
3915
+ // then wake it the same way the call path does if it is not running.
3916
+ let releaseOnDemandRead;
3858
3917
  try {
3918
+ if (candidate.config?.startOnDemand && candidate.enabled !== false) {
3919
+ releaseOnDemandRead = beginOnDemandToolCall(candidate);
3920
+ if (!candidate.client) {
3921
+ await ensureServerReady(candidate);
3922
+ }
3923
+ candidate.lastUsedAt = Date.now();
3924
+ }
3925
+ if (!candidate.client) {
3926
+ continue;
3927
+ }
3859
3928
  const candidateResult = readOptions
3860
3929
  ? await candidate.client.readResource({ uri }, readOptions)
3861
3930
  : await candidate.client.readResource({ uri });
@@ -3865,7 +3934,10 @@ const handleReadResourceRequestImpl = async (request, extra) => {
3865
3934
  }
3866
3935
  }
3867
3936
  catch {
3868
- // This candidate doesn't own the resource; try the next one.
3937
+ // This candidate doesn't own the resource (or failed to wake); try the next one.
3938
+ }
3939
+ finally {
3940
+ releaseOnDemandRead?.();
3869
3941
  }
3870
3942
  }
3871
3943
  if (!result) {