@samanhappy/mcphub 1.0.32 → 1.0.34
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.
- package/README.fr.md +12 -6
- package/README.md +23 -7
- package/README.zh.md +24 -8
- package/dist/clients/openapi.js +439 -72
- package/dist/clients/openapi.js.map +1 -1
- package/dist/config/index.js +24 -2
- package/dist/config/index.js.map +1 -1
- package/dist/constants/oauthServerDefaults.js +5 -0
- package/dist/constants/oauthServerDefaults.js.map +1 -1
- package/dist/controllers/activityController.js +11 -0
- package/dist/controllers/activityController.js.map +1 -1
- package/dist/controllers/logController.js +10 -3
- package/dist/controllers/logController.js.map +1 -1
- package/dist/controllers/mcpbController.js +6 -13
- package/dist/controllers/mcpbController.js.map +1 -1
- package/dist/controllers/oauthCallbackController.js +26 -0
- package/dist/controllers/oauthCallbackController.js.map +1 -1
- package/dist/controllers/oauthServerController.js +40 -4
- package/dist/controllers/oauthServerController.js.map +1 -1
- package/dist/controllers/serverController.js +122 -31
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/controllers/templateController.js +1 -1
- package/dist/controllers/templateController.js.map +1 -1
- package/dist/routes/index.js +2 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/services/authorizationService.js +28 -0
- package/dist/services/authorizationService.js.map +1 -0
- package/dist/services/cimdClientService.js +195 -0
- package/dist/services/cimdClientService.js.map +1 -0
- package/dist/services/mcpOAuthProvider.js +2 -2
- package/dist/services/mcpOAuthProvider.js.map +1 -1
- package/dist/services/mcpService.js +108 -11
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/oauthClientRegistration.js +27 -9
- package/dist/services/oauthClientRegistration.js.map +1 -1
- package/dist/services/oauthServerService.js +17 -1
- package/dist/services/oauthServerService.js.map +1 -1
- package/dist/services/openApiToolStatsService.js +37 -0
- package/dist/services/openApiToolStatsService.js.map +1 -0
- package/dist/services/serverConfigPresenter.js +85 -0
- package/dist/services/serverConfigPresenter.js.map +1 -0
- package/dist/services/templateService.js +48 -11
- package/dist/services/templateService.js.map +1 -1
- package/dist/services/vectorSearchService.js +31 -6
- package/dist/services/vectorSearchService.js.map +1 -1
- package/dist/utils/oauthIssuer.js +57 -0
- package/dist/utils/oauthIssuer.js.map +1 -0
- package/dist/utils/openApiRequestBody.js +220 -0
- package/dist/utils/openApiRequestBody.js.map +1 -0
- package/dist/utils/processTree.js +47 -0
- package/dist/utils/processTree.js.map +1 -0
- package/dist/utils/serverConfigPersistence.js +3 -0
- package/dist/utils/serverConfigPersistence.js.map +1 -1
- package/dist/utils/serverConfigValidation.js +13 -0
- package/dist/utils/serverConfigValidation.js.map +1 -0
- package/dist/utils/serverNameValidation.js +56 -0
- package/dist/utils/serverNameValidation.js.map +1 -0
- package/dist/utils/smartRouting.js +9 -4
- package/dist/utils/smartRouting.js.map +1 -1
- package/dist/utils/ssrf.js +6 -5
- package/dist/utils/ssrf.js.map +1 -1
- package/dist/utils/systemConfigCache.js +40 -2
- package/dist/utils/systemConfigCache.js.map +1 -1
- package/frontend/dist/assets/{ActivityPage-C6m1hGLq.js → ActivityPage-BYoyi-IG.js} +2 -2
- package/frontend/dist/assets/{ActivityPage-C6m1hGLq.js.map → ActivityPage-BYoyi-IG.js.map} +1 -1
- package/frontend/dist/assets/ConfirmDialog-3APts2Y9.js +2 -0
- package/frontend/dist/assets/ConfirmDialog-3APts2Y9.js.map +1 -0
- package/frontend/dist/assets/Dashboard-BOHkLPxE.js +2 -0
- package/frontend/dist/assets/{Dashboard-DFKfjPff.js.map → Dashboard-BOHkLPxE.js.map} +1 -1
- package/frontend/dist/assets/{EndpointCopy-CP_Fb1To.js → EndpointCopy-DDVLhiUy.js} +2 -2
- package/frontend/dist/assets/{EndpointCopy-CP_Fb1To.js.map → EndpointCopy-DDVLhiUy.js.map} +1 -1
- package/frontend/dist/assets/GroupsPage-B3bHSWmT.js +33 -0
- package/frontend/dist/assets/{GroupsPage-Cwfm5q-a.js.map → GroupsPage-B3bHSWmT.js.map} +1 -1
- package/frontend/dist/assets/{LoginPage-CnF44h_n.js → LoginPage-CfAnFIbQ.js} +2 -2
- package/frontend/dist/assets/{LoginPage-CnF44h_n.js.map → LoginPage-CfAnFIbQ.js.map} +1 -1
- package/frontend/dist/assets/{LogsPage-BFIpICsM.js → LogsPage-DT2VotXH.js} +2 -2
- package/frontend/dist/assets/{LogsPage-BFIpICsM.js.map → LogsPage-DT2VotXH.js.map} +1 -1
- package/frontend/dist/assets/MarketPage-Cn0J7UNX.js +3 -0
- package/frontend/dist/assets/MarketPage-Cn0J7UNX.js.map +1 -0
- package/frontend/dist/assets/{OAuthConsentPage-zqXUvKMF.js → OAuthConsentPage-DnKLaKDH.js} +2 -2
- package/frontend/dist/assets/{OAuthConsentPage-zqXUvKMF.js.map → OAuthConsentPage-DnKLaKDH.js.map} +1 -1
- package/frontend/dist/assets/{PromptsPage-Cm8ykiI4.js → PromptsPage-Ccg3fJWt.js} +2 -2
- package/frontend/dist/assets/{PromptsPage-Cm8ykiI4.js.map → PromptsPage-Ccg3fJWt.js.map} +1 -1
- package/frontend/dist/assets/{ResourcesPage-UMyO6mQ4.js → ResourcesPage-V45CxfvA.js} +2 -2
- package/frontend/dist/assets/{ResourcesPage-UMyO6mQ4.js.map → ResourcesPage-V45CxfvA.js.map} +1 -1
- package/frontend/dist/assets/{ServersPage-B0RoM8ez.js → ServersPage-DA_nkhLB.js} +5 -5
- package/frontend/dist/assets/{ServersPage-B0RoM8ez.js.map → ServersPage-DA_nkhLB.js.map} +1 -1
- package/frontend/dist/assets/SettingsPage-BJjO5cte.js +12 -0
- package/frontend/dist/assets/SettingsPage-BJjO5cte.js.map +1 -0
- package/frontend/dist/assets/{StatusDot-BAMXeT2x.js → StatusDot-DcjrhMNI.js} +2 -2
- package/frontend/dist/assets/{StatusDot-BAMXeT2x.js.map → StatusDot-DcjrhMNI.js.map} +1 -1
- package/frontend/dist/assets/{ToggleGroup-Cfgt5lJo.js → ToggleGroup-BSLtGF--.js} +2 -2
- package/frontend/dist/assets/{ToggleGroup-Cfgt5lJo.js.map → ToggleGroup-BSLtGF--.js.map} +1 -1
- package/frontend/dist/assets/UsersPage-DKdCe4GT.js +2 -0
- package/frontend/dist/assets/UsersPage-DKdCe4GT.js.map +1 -0
- package/frontend/dist/assets/contextCost-CilWqGWT.js +2 -0
- package/frontend/dist/assets/contextCost-CilWqGWT.js.map +1 -0
- package/frontend/dist/assets/index-DjExFs33.js +3 -0
- package/frontend/dist/assets/index-DjExFs33.js.map +1 -0
- package/frontend/dist/assets/index-DtrCVU1h.css +1 -0
- package/frontend/dist/assets/passwordValidation-DTLWgUy9.js +2 -0
- package/frontend/dist/assets/passwordValidation-DTLWgUy9.js.map +1 -0
- package/frontend/dist/assets/{resourceService-D2QmlFby.js → resourceService-DIUK5vbC.js} +2 -2
- package/frontend/dist/assets/{resourceService-D2QmlFby.js.map → resourceService-DIUK5vbC.js.map} +1 -1
- package/frontend/dist/assets/useCostData-CSeCIQmM.js +2 -0
- package/frontend/dist/assets/useCostData-CSeCIQmM.js.map +1 -0
- package/frontend/dist/assets/useSettingsData-CvAOhPaX.js +2 -0
- package/frontend/dist/assets/{useSettingsData-CeCvZ2nU.js.map → useSettingsData-CvAOhPaX.js.map} +1 -1
- package/frontend/dist/assets/variableDetection-BeF9gp9K.js +16 -0
- package/frontend/dist/assets/variableDetection-BeF9gp9K.js.map +1 -0
- package/frontend/dist/index.html +2 -2
- package/package.json +7 -7
- package/frontend/dist/assets/ConfirmDialog-BCMNzi21.js +0 -2
- package/frontend/dist/assets/ConfirmDialog-BCMNzi21.js.map +0 -1
- package/frontend/dist/assets/Dashboard-DFKfjPff.js +0 -2
- package/frontend/dist/assets/GroupsPage-Cwfm5q-a.js +0 -33
- package/frontend/dist/assets/MarketPage-Du-NqiEl.js +0 -3
- package/frontend/dist/assets/MarketPage-Du-NqiEl.js.map +0 -1
- package/frontend/dist/assets/SettingsPage-BTB-36-n.js +0 -12
- package/frontend/dist/assets/SettingsPage-BTB-36-n.js.map +0 -1
- package/frontend/dist/assets/UsersPage-DlzYf7Su.js +0 -2
- package/frontend/dist/assets/UsersPage-DlzYf7Su.js.map +0 -1
- package/frontend/dist/assets/contextCost-kp2vZYp7.js +0 -2
- package/frontend/dist/assets/contextCost-kp2vZYp7.js.map +0 -1
- package/frontend/dist/assets/index-CGvImZ3F.css +0 -1
- package/frontend/dist/assets/index-CvXw771N.js +0 -3
- package/frontend/dist/assets/index-CvXw771N.js.map +0 -1
- package/frontend/dist/assets/useSettingsData-CeCvZ2nU.js +0 -2
- package/frontend/dist/assets/variableDetection-DKPiHkxr.js +0 -16
- package/frontend/dist/assets/variableDetection-DKPiHkxr.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getOAuthServer, handleTokenRequest, handleAuthenticateRequest, } from '../services/oauthServerService.js';
|
|
2
|
-
import {
|
|
2
|
+
import { findOAuthClientIncludingCimd, isCimdClientId } from '../services/cimdClientService.js';
|
|
3
3
|
import { getSystemConfigDao, getGroupDao, getServerDao } from '../dao/index.js';
|
|
4
4
|
import OAuth2Server from '@node-oauth/oauth2-server';
|
|
5
5
|
import jwt from 'jsonwebtoken';
|
|
@@ -101,7 +101,7 @@ async function validateClientRedirectUri(res, clientId, redirectUri) {
|
|
|
101
101
|
});
|
|
102
102
|
return null;
|
|
103
103
|
}
|
|
104
|
-
const client = await
|
|
104
|
+
const client = await findOAuthClientIncludingCimd(clientId);
|
|
105
105
|
if (!client) {
|
|
106
106
|
res.status(400).json({ error: 'invalid_client', error_description: 'Client not found' });
|
|
107
107
|
return null;
|
|
@@ -115,6 +115,32 @@ async function validateClientRedirectUri(res, clientId, redirectUri) {
|
|
|
115
115
|
}
|
|
116
116
|
return redirectUri;
|
|
117
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolve this install's issuer identifier (RFC 9207). Uses the same
|
|
120
|
+
* resolution chain as the RFC 8414 metadata endpoint (`issuer` field) so
|
|
121
|
+
* clients validating `iss` compare against a value they can discover.
|
|
122
|
+
*/
|
|
123
|
+
async function resolveIssuer(req) {
|
|
124
|
+
try {
|
|
125
|
+
const systemConfig = await getSystemConfigDao().get();
|
|
126
|
+
const host = typeof req.get === 'function' ? req.get('host') : undefined;
|
|
127
|
+
const fallback = host ? `${req.protocol ?? 'http'}://${host}` : undefined;
|
|
128
|
+
return resolveInstallBaseUrl(systemConfig, fallback);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
return undefined;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Attach the RFC 9207 `iss` parameter to an authorization response redirect.
|
|
136
|
+
* A no-op when the issuer cannot be resolved (defensive: authorization
|
|
137
|
+
* responses must never fail because of this hardening).
|
|
138
|
+
*/
|
|
139
|
+
function setIssuerParam(redirectUrl, issuer) {
|
|
140
|
+
if (issuer) {
|
|
141
|
+
redirectUrl.searchParams.set('iss', issuer);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
118
144
|
/**
|
|
119
145
|
* Generate OAuth authorization consent HTML page with i18n support
|
|
120
146
|
* (keeps visual style consistent with OAuth callback pages)
|
|
@@ -243,7 +269,13 @@ export const getAuthorize = async (req, res) => {
|
|
|
243
269
|
return;
|
|
244
270
|
}
|
|
245
271
|
// Get and validate query parameters
|
|
246
|
-
|
|
272
|
+
// CIMD (draft-ietf-oauth-client-id-metadata-document) client_ids are HTTPS
|
|
273
|
+
// URLs; registered client_ids stay restricted to the legacy safe charset.
|
|
274
|
+
const rawClientId = validateQueryParam(req.query.client_id, 'client_id');
|
|
275
|
+
const isUrlClientId = isCimdClientId(rawClientId);
|
|
276
|
+
const client_id = isUrlClientId
|
|
277
|
+
? rawClientId
|
|
278
|
+
: validateQueryParam(rawClientId, 'client_id', /^[a-zA-Z0-9_-]+$/);
|
|
247
279
|
const redirect_uri = validateQueryParam(req.query.redirect_uri, 'redirect_uri');
|
|
248
280
|
const response_type = validateQueryParam(req.query.response_type, 'response_type', /^code$/);
|
|
249
281
|
// RFC 6749 §3.3: scope tokens are printable ASCII (!#-[]-~) excluding " and \, space-delimited
|
|
@@ -275,7 +307,7 @@ export const getAuthorize = async (req, res) => {
|
|
|
275
307
|
return;
|
|
276
308
|
}
|
|
277
309
|
// Verify client
|
|
278
|
-
const client = await
|
|
310
|
+
const client = await findOAuthClientIncludingCimd(client_id);
|
|
279
311
|
if (!client) {
|
|
280
312
|
res.status(400).json({ error: 'invalid_client', error_description: 'Client not found' });
|
|
281
313
|
return;
|
|
@@ -397,6 +429,7 @@ export const postAuthorize = async (req, res) => {
|
|
|
397
429
|
res.status(503).json({ error: 'OAuth server not available' });
|
|
398
430
|
return;
|
|
399
431
|
}
|
|
432
|
+
const issuer = await resolveIssuer(req);
|
|
400
433
|
const { allow, client_id, redirect_uri, state } = req.body;
|
|
401
434
|
validatedRedirectUri = await validateClientRedirectUri(res, client_id, redirect_uri);
|
|
402
435
|
if (!validatedRedirectUri) {
|
|
@@ -406,6 +439,7 @@ export const postAuthorize = async (req, res) => {
|
|
|
406
439
|
if (allow !== 'true') {
|
|
407
440
|
const redirectUrl = new URL(validatedRedirectUri);
|
|
408
441
|
redirectUrl.searchParams.set('error', 'access_denied');
|
|
442
|
+
setIssuerParam(redirectUrl, issuer);
|
|
409
443
|
if (state) {
|
|
410
444
|
redirectUrl.searchParams.set('state', state);
|
|
411
445
|
}
|
|
@@ -441,6 +475,7 @@ export const postAuthorize = async (req, res) => {
|
|
|
441
475
|
// Build redirect URL with authorization code
|
|
442
476
|
const redirectUrl = new URL(validatedRedirectUri);
|
|
443
477
|
redirectUrl.searchParams.set('code', code.authorizationCode);
|
|
478
|
+
setIssuerParam(redirectUrl, issuer);
|
|
444
479
|
if (state) {
|
|
445
480
|
redirectUrl.searchParams.set('state', state);
|
|
446
481
|
}
|
|
@@ -458,6 +493,7 @@ export const postAuthorize = async (req, res) => {
|
|
|
458
493
|
if (oauthError.message) {
|
|
459
494
|
redirectUrl.searchParams.set('error_description', oauthError.message);
|
|
460
495
|
}
|
|
496
|
+
setIssuerParam(redirectUrl, await resolveIssuer(req));
|
|
461
497
|
if (state) {
|
|
462
498
|
redirectUrl.searchParams.set('state', state);
|
|
463
499
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauthServerController.js","sourceRoot":"","sources":["../../src/controllers/oauthServerController.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"oauthServerController.js","sourceRoot":"","sources":["../../src/controllers/oauthServerController.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,15 @@ import { createSafeJSON } from '../utils/serialization.js';
|
|
|
6
6
|
import { cloneDefaultOAuthServerConfig } from '../constants/oauthServerDefaults.js';
|
|
7
7
|
import { getBearerKeyDao, getGroupDao, getOAuthClientDao, getOAuthTokenDao, getServerDao, getSystemConfigDao, getUserConfigDao, getUserDao, } from '../dao/DaoFactory.js';
|
|
8
8
|
import { UserContextService } from '../services/userContextService.js';
|
|
9
|
+
import { authorizationService } from '../services/authorizationService.js';
|
|
10
|
+
import { presentServerForPrincipal, presentServerInfoForPrincipal, } from '../services/serverConfigPresenter.js';
|
|
9
11
|
import { disconnectUpstreamOAuth } from '../services/upstreamOAuthDisconnectService.js';
|
|
10
12
|
import { normalizeServerConfigForPersistence } from '../utils/serverConfigPersistence.js';
|
|
13
|
+
import { isPrivilegedServerConfig } from '../utils/serverConfigValidation.js';
|
|
14
|
+
import { validateServerName } from '../utils/serverNameValidation.js';
|
|
11
15
|
import { setCachedSystemConfig } from '../utils/systemConfigCache.js';
|
|
12
16
|
import { DEFAULT_INSTALL_BASE_URL, withResolvedInstallBaseUrl } from '../utils/installBaseUrl.js';
|
|
17
|
+
import { previewOpenApiToolStats } from '../services/openApiToolStatsService.js';
|
|
13
18
|
import { logger } from '../utils/logger.js';
|
|
14
19
|
const getRequestUser = (req) => {
|
|
15
20
|
return req.user || null;
|
|
@@ -23,12 +28,6 @@ const canAccessServer = (user, server) => {
|
|
|
23
28
|
}
|
|
24
29
|
return server.owner === user.username;
|
|
25
30
|
};
|
|
26
|
-
const isPrivilegedServerConfig = (config) => {
|
|
27
|
-
return Boolean(config.type === 'stdio' ||
|
|
28
|
-
config.command ||
|
|
29
|
-
(Array.isArray(config.args) && config.args.length > 0) ||
|
|
30
|
-
(!config.url && !config.openapi?.url && !config.openapi?.schema));
|
|
31
|
-
};
|
|
32
31
|
const loadAuthorizedServer = async (req, res, serverName) => {
|
|
33
32
|
const serverDao = getServerDao();
|
|
34
33
|
const server = await serverDao.findById(serverName);
|
|
@@ -195,10 +194,15 @@ export const getAllServers = async (req, res) => {
|
|
|
195
194
|
// No pagination, get all servers (will be filtered by mcpService)
|
|
196
195
|
serversInfo = await getServersInfo();
|
|
197
196
|
}
|
|
197
|
+
// #1036 Phase 1: withhold OAuth session-recovery fields from principals
|
|
198
|
+
// who may not read the full server configuration (defense in depth; the
|
|
199
|
+
// config block on list entries is already narrowed to safe metadata).
|
|
200
|
+
const presentedServersInfo = serversInfo.map((info) => presentServerInfoForPrincipal(info, currentUser));
|
|
201
|
+
const presentedAllServers = allServers?.map((info) => presentServerInfoForPrincipal(info, currentUser));
|
|
198
202
|
const response = {
|
|
199
203
|
success: true,
|
|
200
|
-
data: createSafeJSON(
|
|
201
|
-
...(
|
|
204
|
+
data: createSafeJSON(presentedServersInfo),
|
|
205
|
+
...(presentedAllServers && { allServers: createSafeJSON(presentedAllServers) }),
|
|
202
206
|
...(pagination && { pagination }),
|
|
203
207
|
};
|
|
204
208
|
res.json(response);
|
|
@@ -316,16 +320,57 @@ export const getAllSettings = async (req, res) => {
|
|
|
316
320
|
});
|
|
317
321
|
}
|
|
318
322
|
};
|
|
323
|
+
/**
|
|
324
|
+
* Preview the tool list an OpenAPI import would generate, without persisting
|
|
325
|
+
* anything (#1082). Large specs can silently produce a tools/list that does
|
|
326
|
+
* not fit in a model's context window; this endpoint lets the form surface
|
|
327
|
+
* the numbers at the point of confirming the import.
|
|
328
|
+
*/
|
|
329
|
+
export const previewOpenApiToolStatsHandler = async (req, res) => {
|
|
330
|
+
try {
|
|
331
|
+
const { config } = req.body;
|
|
332
|
+
if (!config || typeof config !== 'object') {
|
|
333
|
+
res.status(400).json({
|
|
334
|
+
success: false,
|
|
335
|
+
message: 'Server configuration is required',
|
|
336
|
+
});
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
const normalizedConfig = normalizeServerConfigForPersistence(config);
|
|
340
|
+
if (!normalizedConfig.openapi?.url && !normalizedConfig.openapi?.schema) {
|
|
341
|
+
res.status(400).json({
|
|
342
|
+
success: false,
|
|
343
|
+
message: 'OpenAPI specification URL or schema is required',
|
|
344
|
+
});
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
// Assign the requesting user as owner so initialize()'s admin check (and
|
|
348
|
+
// therefore the internal-network SSRF allowance) matches what a real
|
|
349
|
+
// add-server request would produce for the same caller.
|
|
350
|
+
assignServerOwner(req, normalizedConfig);
|
|
351
|
+
const stats = await previewOpenApiToolStats(normalizedConfig);
|
|
352
|
+
res.json({ success: true, data: stats });
|
|
353
|
+
}
|
|
354
|
+
catch (error) {
|
|
355
|
+
logger.warn('Failed to preview OpenAPI tool stats:', error);
|
|
356
|
+
res.status(400).json({
|
|
357
|
+
success: false,
|
|
358
|
+
message: error instanceof Error ? error.message : 'Failed to analyze OpenAPI specification',
|
|
359
|
+
});
|
|
360
|
+
}
|
|
361
|
+
};
|
|
319
362
|
export const createServer = async (req, res) => {
|
|
320
363
|
try {
|
|
321
364
|
const { name, config } = req.body;
|
|
322
|
-
|
|
365
|
+
const nameValidation = validateServerName(name);
|
|
366
|
+
if (!nameValidation.valid) {
|
|
323
367
|
res.status(400).json({
|
|
324
368
|
success: false,
|
|
325
|
-
message:
|
|
369
|
+
message: nameValidation.message,
|
|
326
370
|
});
|
|
327
371
|
return;
|
|
328
372
|
}
|
|
373
|
+
const serverName = nameValidation.normalized;
|
|
329
374
|
if (!config || typeof config !== 'object') {
|
|
330
375
|
res.status(400).json({
|
|
331
376
|
success: false,
|
|
@@ -397,13 +442,13 @@ export const createServer = async (req, res) => {
|
|
|
397
442
|
normalizedConfig.keepAliveInterval = 60000; // Default 60 seconds for SSE servers
|
|
398
443
|
}
|
|
399
444
|
assignServerOwner(req, normalizedConfig);
|
|
400
|
-
const result = await addServer(
|
|
445
|
+
const result = await addServer(serverName, normalizedConfig);
|
|
401
446
|
if (result.success) {
|
|
402
447
|
res.json({
|
|
403
448
|
success: true,
|
|
404
449
|
message: 'Server added successfully',
|
|
405
450
|
});
|
|
406
|
-
notifyToolChanged(
|
|
451
|
+
notifyToolChanged(serverName, { reportEmbeddingProgress: true }).catch((error) => {
|
|
407
452
|
logger.error('Failed to trigger embedding sync for created server:', error);
|
|
408
453
|
});
|
|
409
454
|
}
|
|
@@ -442,8 +487,9 @@ export const batchCreateServers = async (req, res) => {
|
|
|
442
487
|
}
|
|
443
488
|
// Helper function to validate a single server configuration
|
|
444
489
|
const validateServerConfig = (name, config) => {
|
|
445
|
-
|
|
446
|
-
|
|
490
|
+
const nameValidation = validateServerName(name);
|
|
491
|
+
if (!nameValidation.valid) {
|
|
492
|
+
return { valid: false, message: nameValidation.message };
|
|
447
493
|
}
|
|
448
494
|
if (!config || typeof config !== 'object') {
|
|
449
495
|
return { valid: false, message: 'Server configuration is required and must be an object' };
|
|
@@ -491,7 +537,7 @@ export const batchCreateServers = async (req, res) => {
|
|
|
491
537
|
if (normalizedConfig.headers && normalizedConfig.type === 'stdio') {
|
|
492
538
|
return { valid: false, message: 'Headers are not supported for stdio server type' };
|
|
493
539
|
}
|
|
494
|
-
return { valid: true };
|
|
540
|
+
return { valid: true, normalizedName: nameValidation.normalized };
|
|
495
541
|
};
|
|
496
542
|
// Process each server
|
|
497
543
|
const results = [];
|
|
@@ -513,6 +559,7 @@ export const batchCreateServers = async (req, res) => {
|
|
|
513
559
|
failureCount++;
|
|
514
560
|
continue;
|
|
515
561
|
}
|
|
562
|
+
const serverName = validation.normalizedName ?? name;
|
|
516
563
|
try {
|
|
517
564
|
// Set default keep-alive interval for SSE servers if not specified
|
|
518
565
|
const normalizedConfig = normalizeServerConfigForPersistence(config);
|
|
@@ -522,7 +569,7 @@ export const batchCreateServers = async (req, res) => {
|
|
|
522
569
|
}
|
|
523
570
|
if (isPrivilegedServerConfig(normalizedConfig) && currentUser?.isAdmin !== true) {
|
|
524
571
|
results.push({
|
|
525
|
-
name,
|
|
572
|
+
name: serverName,
|
|
526
573
|
success: false,
|
|
527
574
|
message: 'Only admins can create or modify stdio-based servers',
|
|
528
575
|
});
|
|
@@ -534,17 +581,17 @@ export const batchCreateServers = async (req, res) => {
|
|
|
534
581
|
? normalizedConfig.owner || defaultOwner
|
|
535
582
|
: defaultOwner;
|
|
536
583
|
// Attempt to add server
|
|
537
|
-
const result = await addServer(
|
|
584
|
+
const result = await addServer(serverName, normalizedConfig);
|
|
538
585
|
if (result.success) {
|
|
539
586
|
results.push({
|
|
540
|
-
name,
|
|
587
|
+
name: serverName,
|
|
541
588
|
success: true,
|
|
542
589
|
});
|
|
543
590
|
successCount++;
|
|
544
591
|
}
|
|
545
592
|
else {
|
|
546
593
|
results.push({
|
|
547
|
-
name,
|
|
594
|
+
name: serverName,
|
|
548
595
|
success: false,
|
|
549
596
|
message: result.message || 'Failed to add server',
|
|
550
597
|
});
|
|
@@ -553,7 +600,7 @@ export const batchCreateServers = async (req, res) => {
|
|
|
553
600
|
}
|
|
554
601
|
catch (error) {
|
|
555
602
|
results.push({
|
|
556
|
-
name,
|
|
603
|
+
name: serverName,
|
|
557
604
|
success: false,
|
|
558
605
|
message: error instanceof Error ? error.message : 'Internal server error',
|
|
559
606
|
});
|
|
@@ -715,19 +762,32 @@ export const updateServer = async (req, res) => {
|
|
|
715
762
|
assignServerOwner(req, normalizedConfig, existingServer.owner);
|
|
716
763
|
// Check if server name is being changed
|
|
717
764
|
const isRenaming = newName && newName !== name;
|
|
765
|
+
// Final server name used for the rest of the update flow (the new name when
|
|
766
|
+
// renaming, otherwise the original name).
|
|
767
|
+
let finalName = name;
|
|
718
768
|
// If renaming, validate the new name and update references
|
|
719
769
|
if (isRenaming) {
|
|
720
770
|
const serverDao = getServerDao();
|
|
771
|
+
const nameValidation = validateServerName(newName);
|
|
772
|
+
if (!nameValidation.valid) {
|
|
773
|
+
res.status(400).json({
|
|
774
|
+
success: false,
|
|
775
|
+
message: nameValidation.message,
|
|
776
|
+
});
|
|
777
|
+
return;
|
|
778
|
+
}
|
|
779
|
+
const targetName = nameValidation.normalized;
|
|
780
|
+
finalName = targetName;
|
|
721
781
|
// Check if new name already exists
|
|
722
|
-
if (await serverDao.exists(
|
|
782
|
+
if (await serverDao.exists(targetName)) {
|
|
723
783
|
res.status(400).json({
|
|
724
784
|
success: false,
|
|
725
|
-
message: `Server name '${
|
|
785
|
+
message: `Server name '${targetName}' already exists`,
|
|
726
786
|
});
|
|
727
787
|
return;
|
|
728
788
|
}
|
|
729
789
|
// Rename the server
|
|
730
|
-
const renamed = await serverDao.rename(name,
|
|
790
|
+
const renamed = await serverDao.rename(name, targetName);
|
|
731
791
|
if (!renamed) {
|
|
732
792
|
res.status(404).json({
|
|
733
793
|
success: false,
|
|
@@ -743,10 +803,10 @@ export const updateServer = async (req, res) => {
|
|
|
743
803
|
closeServer(name);
|
|
744
804
|
// Update references in groups
|
|
745
805
|
const groupDao = getGroupDao();
|
|
746
|
-
await groupDao.updateServerName(name,
|
|
806
|
+
await groupDao.updateServerName(name, targetName);
|
|
747
807
|
// Update references in bearer keys
|
|
748
808
|
const bearerKeyDao = getBearerKeyDao();
|
|
749
|
-
await bearerKeyDao.updateServerName(name,
|
|
809
|
+
await bearerKeyDao.updateServerName(name, targetName);
|
|
750
810
|
// Drop embeddings stored under the old name so search_tools does not
|
|
751
811
|
// advertise phantom tools; addOrUpdateServer below regenerates them
|
|
752
812
|
// under the new name. A failure here must not abort the rename.
|
|
@@ -760,8 +820,6 @@ export const updateServer = async (req, res) => {
|
|
|
760
820
|
});
|
|
761
821
|
}
|
|
762
822
|
}
|
|
763
|
-
// Use the final server name (new name if renaming, otherwise original name)
|
|
764
|
-
const finalName = isRenaming ? newName : name;
|
|
765
823
|
// Fast path: if no connection-relevant field changed, persist and update
|
|
766
824
|
// in-memory access metadata without tearing down the runtime. This covers
|
|
767
825
|
// visibility/sharedWithUsers edits, description-only edits, owner changes,
|
|
@@ -823,15 +881,34 @@ export const updateServer = async (req, res) => {
|
|
|
823
881
|
export const getServerConfig = async (req, res) => {
|
|
824
882
|
try {
|
|
825
883
|
const { name } = req.params;
|
|
826
|
-
const
|
|
827
|
-
|
|
884
|
+
const serverDao = getServerDao();
|
|
885
|
+
const serverRecord = await serverDao.findById(name);
|
|
886
|
+
if (!serverRecord) {
|
|
887
|
+
res.status(404).json({
|
|
888
|
+
success: false,
|
|
889
|
+
message: 'Server not found',
|
|
890
|
+
});
|
|
891
|
+
return;
|
|
892
|
+
}
|
|
893
|
+
// #1036 Phase 1: config read and server use are separate decisions.
|
|
894
|
+
// Owner/admin get the full configuration; visibility-admitted shared users
|
|
895
|
+
// (public / group members) get a safe view without secret-bearing fields;
|
|
896
|
+
// everyone else is rejected exactly as before.
|
|
897
|
+
const principal = getRequestUser(req);
|
|
898
|
+
const canReadFullConfig = authorizationService.can('server.config.read', serverRecord, principal);
|
|
899
|
+
if (!canReadFullConfig && !authorizationService.can('server.invoke', serverRecord, principal)) {
|
|
900
|
+
res.status(403).json({
|
|
901
|
+
success: false,
|
|
902
|
+
message: 'Forbidden',
|
|
903
|
+
});
|
|
828
904
|
return;
|
|
829
905
|
}
|
|
830
906
|
// Get runtime info (status, tools) from getServersInfo
|
|
831
907
|
const allServers = await getServersInfo();
|
|
832
908
|
const serverInfo = allServers.find((s) => s.name === name);
|
|
833
909
|
// Extract config without the name field
|
|
834
|
-
const { name: serverName, ...config } =
|
|
910
|
+
const { name: serverName, ...config } = serverRecord;
|
|
911
|
+
const presented = presentServerForPrincipal(config, principal);
|
|
835
912
|
// OpenAPI tools can carry circular $ref cycles left by SwaggerParser.dereference
|
|
836
913
|
// (recursive schemas), which would make res.json throw. Mirror the list endpoint
|
|
837
914
|
// and sanitize via createSafeJSON. See #959.
|
|
@@ -841,7 +918,7 @@ export const getServerConfig = async (req, res) => {
|
|
|
841
918
|
name: serverName,
|
|
842
919
|
status: serverInfo?.status || 'disconnected',
|
|
843
920
|
tools: serverInfo?.tools || [],
|
|
844
|
-
config,
|
|
921
|
+
config: presented.data,
|
|
845
922
|
}),
|
|
846
923
|
};
|
|
847
924
|
res.json(response);
|
|
@@ -1226,6 +1303,8 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
1226
1303
|
smartRouting.basePacingDelayMs === null ||
|
|
1227
1304
|
typeof smartRouting.embeddingProvider === 'string' ||
|
|
1228
1305
|
typeof smartRouting.embeddingEncodingFormat === 'string' ||
|
|
1306
|
+
typeof smartRouting.embeddingDimensions === 'number' ||
|
|
1307
|
+
smartRouting.embeddingDimensions === null ||
|
|
1229
1308
|
typeof smartRouting.openaiApiBaseUrl === 'string' ||
|
|
1230
1309
|
typeof smartRouting.openaiApiKey === 'string' ||
|
|
1231
1310
|
typeof smartRouting.openaiApiEmbeddingModel === 'string' ||
|
|
@@ -1317,6 +1396,7 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
1317
1396
|
dbUrl: '',
|
|
1318
1397
|
basePacingDelayMs: undefined,
|
|
1319
1398
|
embeddingProvider: 'openai',
|
|
1399
|
+
embeddingDimensions: undefined,
|
|
1320
1400
|
openaiApiBaseUrl: '',
|
|
1321
1401
|
openaiApiKey: '',
|
|
1322
1402
|
openaiApiEmbeddingModel: '',
|
|
@@ -1367,6 +1447,7 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
1367
1447
|
dbUrl: '',
|
|
1368
1448
|
basePacingDelayMs: undefined,
|
|
1369
1449
|
embeddingProvider: 'openai',
|
|
1450
|
+
embeddingDimensions: undefined,
|
|
1370
1451
|
openaiApiBaseUrl: '',
|
|
1371
1452
|
openaiApiKey: '',
|
|
1372
1453
|
openaiApiEmbeddingModel: '',
|
|
@@ -1467,6 +1548,14 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
1467
1548
|
systemConfig.smartRouting.embeddingEncodingFormat =
|
|
1468
1549
|
normalized === 'base64' || normalized === 'float' ? normalized : 'auto';
|
|
1469
1550
|
}
|
|
1551
|
+
if (typeof smartRouting.embeddingDimensions === 'number' &&
|
|
1552
|
+
Number.isSafeInteger(smartRouting.embeddingDimensions) &&
|
|
1553
|
+
smartRouting.embeddingDimensions > 0) {
|
|
1554
|
+
systemConfig.smartRouting.embeddingDimensions = smartRouting.embeddingDimensions;
|
|
1555
|
+
}
|
|
1556
|
+
else if (smartRouting.embeddingDimensions === null) {
|
|
1557
|
+
systemConfig.smartRouting.embeddingDimensions = undefined;
|
|
1558
|
+
}
|
|
1470
1559
|
if (typeof smartRouting.enabled === 'boolean') {
|
|
1471
1560
|
// If enabling Smart Routing, validate required fields
|
|
1472
1561
|
if (smartRouting.enabled) {
|
|
@@ -1570,6 +1659,8 @@ export const updateSystemConfig = async (req, res) => {
|
|
|
1570
1659
|
systemConfig.smartRouting.embeddingProvider ||
|
|
1571
1660
|
previousSmartRoutingConfig.embeddingEncodingFormat !==
|
|
1572
1661
|
systemConfig.smartRouting.embeddingEncodingFormat ||
|
|
1662
|
+
previousSmartRoutingConfig.embeddingDimensions !==
|
|
1663
|
+
systemConfig.smartRouting.embeddingDimensions ||
|
|
1573
1664
|
previousSmartRoutingConfig.openaiApiBaseUrl !==
|
|
1574
1665
|
systemConfig.smartRouting.openaiApiBaseUrl ||
|
|
1575
1666
|
previousSmartRoutingConfig.openaiApiKey !== systemConfig.smartRouting.openaiApiKey ||
|