@samanhappy/mcphub 1.2.2 → 1.2.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 (63) hide show
  1. package/dist/controllers/bearerKeyController.js +50 -2
  2. package/dist/controllers/bearerKeyController.js.map +1 -1
  3. package/dist/services/mcpService.js +131 -5
  4. package/dist/services/mcpService.js.map +1 -1
  5. package/dist/services/personalOAuthService.js +3 -1
  6. package/dist/services/personalOAuthService.js.map +1 -1
  7. package/dist/services/sseService.js +7 -5
  8. package/dist/services/sseService.js.map +1 -1
  9. package/dist/utils/resourceTemplateMatch.js +229 -0
  10. package/dist/utils/resourceTemplateMatch.js.map +1 -0
  11. package/dist/utils/upstreamError.js +10 -1
  12. package/dist/utils/upstreamError.js.map +1 -1
  13. package/frontend/dist/assets/{ActivityPage-CB41zWix.js → ActivityPage-DhNQ7kmd.js} +2 -2
  14. package/frontend/dist/assets/{ActivityPage-CB41zWix.js.map → ActivityPage-DhNQ7kmd.js.map} +1 -1
  15. package/frontend/dist/assets/{CredentialsPage-BecFRfro.js → CredentialsPage-DysT6EhJ.js} +2 -2
  16. package/frontend/dist/assets/{CredentialsPage-BecFRfro.js.map → CredentialsPage-DysT6EhJ.js.map} +1 -1
  17. package/frontend/dist/assets/{Dashboard-CwifBwm4.js → Dashboard-CIkS2wIr.js} +2 -2
  18. package/frontend/dist/assets/{Dashboard-CwifBwm4.js.map → Dashboard-CIkS2wIr.js.map} +1 -1
  19. package/frontend/dist/assets/{EndpointCopy-BeLf_ow_.js → EndpointCopy-zuPM6wTV.js} +2 -2
  20. package/frontend/dist/assets/{EndpointCopy-BeLf_ow_.js.map → EndpointCopy-zuPM6wTV.js.map} +1 -1
  21. package/frontend/dist/assets/{GroupsPage-DLL1tFj8.js → GroupsPage-DXE8on9r.js} +2 -2
  22. package/frontend/dist/assets/{GroupsPage-DLL1tFj8.js.map → GroupsPage-DXE8on9r.js.map} +1 -1
  23. package/frontend/dist/assets/{LoginPage-DvHL1HNV.js → LoginPage-DP5A-fpr.js} +2 -2
  24. package/frontend/dist/assets/{LoginPage-DvHL1HNV.js.map → LoginPage-DP5A-fpr.js.map} +1 -1
  25. package/frontend/dist/assets/{LogsPage-Bva6Y11K.js → LogsPage-kFZF0A3x.js} +2 -2
  26. package/frontend/dist/assets/{LogsPage-Bva6Y11K.js.map → LogsPage-kFZF0A3x.js.map} +1 -1
  27. package/frontend/dist/assets/{MarketPage-DGxNuifk.js → MarketPage-DaodfOD8.js} +2 -2
  28. package/frontend/dist/assets/{MarketPage-DGxNuifk.js.map → MarketPage-DaodfOD8.js.map} +1 -1
  29. package/frontend/dist/assets/{OAuthApprovalsPage-TzVNIJ27.js → OAuthApprovalsPage-BbkfaOs3.js} +2 -2
  30. package/frontend/dist/assets/{OAuthApprovalsPage-TzVNIJ27.js.map → OAuthApprovalsPage-BbkfaOs3.js.map} +1 -1
  31. package/frontend/dist/assets/{OAuthConsentPage-yQSgIbZ8.js → OAuthConsentPage-BX5MIl4y.js} +2 -2
  32. package/frontend/dist/assets/{OAuthConsentPage-yQSgIbZ8.js.map → OAuthConsentPage-BX5MIl4y.js.map} +1 -1
  33. package/frontend/dist/assets/{PromptsPage-CIAVpo9B.js → PromptsPage-DEIMpdNn.js} +2 -2
  34. package/frontend/dist/assets/{PromptsPage-CIAVpo9B.js.map → PromptsPage-DEIMpdNn.js.map} +1 -1
  35. package/frontend/dist/assets/{ResourcesPage-C5g-98tB.js → ResourcesPage-CjkaRPQd.js} +2 -2
  36. package/frontend/dist/assets/{ResourcesPage-C5g-98tB.js.map → ResourcesPage-CjkaRPQd.js.map} +1 -1
  37. package/frontend/dist/assets/{ServersPage-CJEgBQr-.js → ServersPage-LpIlO6by.js} +4 -4
  38. package/frontend/dist/assets/{ServersPage-CJEgBQr-.js.map → ServersPage-LpIlO6by.js.map} +1 -1
  39. package/frontend/dist/assets/SettingsPage-fL5-63Ve.js +14 -0
  40. package/frontend/dist/assets/SettingsPage-fL5-63Ve.js.map +1 -0
  41. package/frontend/dist/assets/{StatusDot-B81gkUBo.js → StatusDot-DyEnhqJV.js} +2 -2
  42. package/frontend/dist/assets/{StatusDot-B81gkUBo.js.map → StatusDot-DyEnhqJV.js.map} +1 -1
  43. package/frontend/dist/assets/{ToggleGroup-DZ39486g.js → ToggleGroup-CNkUGOeP.js} +2 -2
  44. package/frontend/dist/assets/{ToggleGroup-DZ39486g.js.map → ToggleGroup-CNkUGOeP.js.map} +1 -1
  45. package/frontend/dist/assets/{UsersPage-pdkVxTsL.js → UsersPage-DeGScomQ.js} +2 -2
  46. package/frontend/dist/assets/{UsersPage-pdkVxTsL.js.map → UsersPage-DeGScomQ.js.map} +1 -1
  47. package/frontend/dist/assets/{clipboard-BYlVdxdy.js → clipboard-PC3TyCTa.js} +2 -2
  48. package/frontend/dist/assets/{clipboard-BYlVdxdy.js.map → clipboard-PC3TyCTa.js.map} +1 -1
  49. package/frontend/dist/assets/{costRevision-D-WY0B73.js → costRevision-DkLRM8DI.js} +2 -2
  50. package/frontend/dist/assets/{costRevision-D-WY0B73.js.map → costRevision-DkLRM8DI.js.map} +1 -1
  51. package/frontend/dist/assets/index-8GliUQTA.js +3 -0
  52. package/frontend/dist/assets/{index-DKX_BExz.js.map → index-8GliUQTA.js.map} +1 -1
  53. package/frontend/dist/assets/{resourceService-CKAaXBkJ.js → resourceService-BN-FT_uq.js} +2 -2
  54. package/frontend/dist/assets/{resourceService-CKAaXBkJ.js.map → resourceService-BN-FT_uq.js.map} +1 -1
  55. package/frontend/dist/assets/{useCostData-DzjFGnw4.js → useCostData-DNk0WL-a.js} +2 -2
  56. package/frontend/dist/assets/{useCostData-DzjFGnw4.js.map → useCostData-DNk0WL-a.js.map} +1 -1
  57. package/frontend/dist/assets/{variableDetection-D75LR7nZ.js → variableDetection-DQg-vRNn.js} +2 -2
  58. package/frontend/dist/assets/{variableDetection-D75LR7nZ.js.map → variableDetection-DQg-vRNn.js.map} +1 -1
  59. package/frontend/dist/index.html +1 -1
  60. package/package.json +1 -1
  61. package/frontend/dist/assets/SettingsPage-Bub-g0mD.js +0 -14
  62. package/frontend/dist/assets/SettingsPage-Bub-g0mD.js.map +0 -1
  63. package/frontend/dist/assets/index-DKX_BExz.js +0 -3
@@ -1,5 +1,5 @@
1
1
  import { randomBytes } from 'node:crypto';
2
- import { getBearerKeyDao, getUserDao } from '../dao/index.js';
2
+ import { getBearerKeyDao, getGroupDao, getUserDao } from '../dao/index.js';
3
3
  import { logger } from '../utils/logger.js';
4
4
  import { maskBearerKey, toStoredToken } from '../utils/bearerKeyToken.js';
5
5
  const VALID_ACCESS_TYPES = [
@@ -37,6 +37,42 @@ const validateSystemScope = (accessType, res) => {
37
37
  }
38
38
  return true;
39
39
  };
40
+ const resolvePersonalScope = async (accessType, allowedGroups, res) => {
41
+ if (accessType !== 'all' && accessType !== 'groups') {
42
+ res
43
+ .status(400)
44
+ .json({ success: false, message: 'Personal keys support only all or groups scope' });
45
+ return;
46
+ }
47
+ const groupIds = new Set();
48
+ if (accessType === 'groups') {
49
+ if (!Array.isArray(allowedGroups) ||
50
+ allowedGroups.length === 0 ||
51
+ !allowedGroups.every((value) => typeof value === 'string' && value.trim().length > 0)) {
52
+ res.status(400).json({ success: false, message: 'Select at least one allowed group' });
53
+ return;
54
+ }
55
+ const dao = getGroupDao();
56
+ for (const reference of allowedGroups) {
57
+ const group = (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(reference)
58
+ ? await dao.findById(reference)
59
+ : null) || (await dao.findByName(reference));
60
+ if (!group) {
61
+ res.status(400).json({ success: false, message: 'Allowed group not found' });
62
+ return;
63
+ }
64
+ // Persist IDs so renaming or recreating a group cannot redirect the grant.
65
+ groupIds.add(group.id);
66
+ }
67
+ }
68
+ return {
69
+ accessType,
70
+ allowedGroups: [...groupIds],
71
+ allowedServers: [],
72
+ excludedGroups: [],
73
+ excludedServers: [],
74
+ };
75
+ };
40
76
  export const getBearerKeys = async (req, res) => {
41
77
  try {
42
78
  const user = getAuthenticatedUser(req);
@@ -85,7 +121,12 @@ export const createBearerKey = async (req, res) => {
85
121
  return;
86
122
  }
87
123
  }
88
- const resolvedAccessType = kind === 'user' ? 'all' : accessType;
124
+ const resolvedAccessType = kind === 'user' && accessType === undefined ? 'all' : accessType;
125
+ const personalScope = kind === 'user'
126
+ ? await resolvePersonalScope(resolvedAccessType, allowedGroups, res)
127
+ : undefined;
128
+ if (kind === 'user' && !personalScope)
129
+ return;
89
130
  if (kind === 'system' && !validateSystemScope(resolvedAccessType, res)) {
90
131
  return;
91
132
  }
@@ -105,6 +146,7 @@ export const createBearerKey = async (req, res) => {
105
146
  allowedServers: kind === 'system' && Array.isArray(allowedServers) ? allowedServers : [],
106
147
  excludedGroups: resolvedExcludedGroups,
107
148
  excludedServers: resolvedExcludedServers,
149
+ ...personalScope,
108
150
  });
109
151
  const { tokenHash: _hash, ...created } = key;
110
152
  res.status(201).json({
@@ -142,6 +184,12 @@ export const updateBearerKey = async (req, res) => {
142
184
  updates.name = name;
143
185
  if (enabled !== undefined)
144
186
  updates.enabled = enabled;
187
+ if (existing.kind === 'user' && (accessType !== undefined || allowedGroups !== undefined)) {
188
+ const scope = await resolvePersonalScope(accessType === undefined ? existing.accessType : accessType, allowedGroups === undefined ? existing.allowedGroups : allowedGroups, res);
189
+ if (!scope)
190
+ return;
191
+ Object.assign(updates, scope);
192
+ }
145
193
  if (existing.kind !== 'user' && user?.isAdmin) {
146
194
  if (accessType !== undefined) {
147
195
  if (!validateSystemScope(accessType, res))
@@ -1 +1 @@
1
- {"version":3,"file":"bearerKeyController.js","sourceRoot":"","sources":["../../src/controllers/bearerKeyController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bearerKeyController.js","sourceRoot":"","sources":["../../src/controllers/bearerKeyController.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { withReplicaLock } from './replicaLock.js';
5
5
  import { projectGroupToolName, assertValidGroupToolNames } from '../utils/groupToolNames.js';
6
6
  import { isSafePassthroughHeader } from '../utils/passthroughHeaders.js';
7
7
  import { observeToolCall, setMetricsServer } from './metricsService.js';
8
- import { hasPersonalOAuth, PersonalOAuthContext, personalOAuthContexts, personalAuthorizationRequired, } from './personalOAuthService.js';
8
+ import { hasPersonalOAuth, PersonalOAuthContext, personalOAuthContexts, personalAuthorizationRequired, PersonalAuthorizationRequiredError, } from './personalOAuthService.js';
9
9
  import { preserveListFreshness, combineListFreshness, remainingListTtl, } from '../utils/listFreshness.js';
10
10
  import { expandServerConfig, getServerEnvironment } from './serverConfigEnvironment.js';
11
11
  import { getMcpRequestGroup } from '../utils/mcpRequestGroup.js';
@@ -17,6 +17,7 @@ import { AsyncLocalStorage } from 'node:async_hooks';
17
17
  import { createHash } from 'node:crypto';
18
18
  import { canAccessGroupRoute } from '../utils/groupAccess.js';
19
19
  import { canServeToolRequests } from '../utils/serverAvailability.js';
20
+ import { uriMatchesResourceTemplate } from '../utils/resourceTemplateMatch.js';
20
21
  import { assertToolCallArgumentsSafe, isToolCallGuardEnabled, ToolCallBlockedError, } from '../middlewares/toolCallGuard.js';
21
22
  import { applyHiddenParams, findToolConfig, removeHiddenArguments, } from '../utils/toolConfig.js';
22
23
  import { prepareCapabilitySnapshot, recordCapabilitySnapshot, flushCapabilitySnapshot, } from './capabilitySnapshotService.js';
@@ -31,7 +32,7 @@ import treeKill from 'tree-kill';
31
32
  import { isProcessTreeKillAvailable } from '../utils/processTree.js';
32
33
  import { StdioClientTransport } from '@modelcontextprotocol/client/stdio';
33
34
  import { SSEClientTransport, StreamableHTTPClientTransport, } from '../clients/mcpSdkClient.js';
34
- import { Server } from '@modelcontextprotocol/server';
35
+ import { ProtocolError, Server } from '@modelcontextprotocol/server';
35
36
  import { createFetchWithProxy, getProxyConfigFromEnv } from './proxy.js';
36
37
  import { assertSafeUrl, createRedirectValidatingFetch } from '../utils/ssrf.js';
37
38
  import { createAbortIsolatingFetch } from '../utils/abortIsolatingFetch.js';
@@ -862,6 +863,29 @@ const updateServerPromptsCache = (serverInfo, prompts) => {
862
863
  const updateServerResourcesCache = (serverInfo, resources) => {
863
864
  serverInfo.resources = preserveListFreshness(resources, resources.map(normalizeResourceForCache));
864
865
  };
866
+ const updateServerResourceTemplatesCache = (serverInfo, resourceTemplates) => {
867
+ serverInfo.resourceTemplates = Array.isArray(resourceTemplates) ? resourceTemplates : [];
868
+ };
869
+ // Best effort: many servers do not implement resources/templates/list.
870
+ const refreshServerResourceTemplatesCache = async (getTarget, client, options, owner = client) => {
871
+ try {
872
+ if (!client.getServerCapabilities?.()?.resources)
873
+ return undefined;
874
+ const { resourceTemplates } = await client.listResourceTemplates({}, options || {});
875
+ const target = getTarget();
876
+ if (target && target.client === owner) {
877
+ updateServerResourceTemplatesCache(target, resourceTemplates);
878
+ }
879
+ return resourceTemplates;
880
+ }
881
+ catch (error) {
882
+ logger.debug('Failed to list resource templates for server', {
883
+ serverName: getTarget()?.name,
884
+ error: summarizeErrorForLogging(error),
885
+ });
886
+ return undefined;
887
+ }
888
+ };
865
889
  // Modern HTTP has no list-changed push stream. Refresh only the lists needed
866
890
  // by the current request; TTL and in-flight work are scoped to the live client.
867
891
  const refreshModernServerLists = async (info, fields) => {
@@ -983,6 +1007,10 @@ const createUpstreamMcpClient = (name, getServerInfo, serverConfig, downstream)
983
1007
  }
984
1008
  updateServerResourcesCache(serverInfo, resources);
985
1009
  broadcastResourceListChanged();
1010
+ // Templates have no list-changed notification of their own.
1011
+ if (serverInfo.client) {
1012
+ void refreshServerResourceTemplatesCache(getServerInfo, serverInfo.client, serverInfo.options);
1013
+ }
986
1014
  },
987
1015
  },
988
1016
  },
@@ -2111,6 +2139,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
2111
2139
  });
2112
2140
  }
2113
2141
  if (capabilities?.resources) {
2142
+ void refreshServerResourceTemplatesCache(liveServerInfo, client, initRequestOptions || requestOptions);
2114
2143
  client
2115
2144
  .listResources({}, initRequestOptions || requestOptions)
2116
2145
  .then((resources) => {
@@ -2910,6 +2939,7 @@ const ensureServerReady = async (serverInfo) => {
2910
2939
  }
2911
2940
  }
2912
2941
  if (capabilities?.resources) {
2942
+ void refreshServerResourceTemplatesCache(() => serverInfo, client, requestOptions);
2913
2943
  try {
2914
2944
  const resources = await client.listResources({}, requestOptions);
2915
2945
  resourceCount = resources.resources.length;
@@ -3004,6 +3034,7 @@ export const resetServerOAuthConnection = (name) => {
3004
3034
  serverInfo.tools = [];
3005
3035
  serverInfo.prompts = [];
3006
3036
  serverInfo.resources = [];
3037
+ serverInfo.resourceTemplates = undefined;
3007
3038
  serverInfo.oauth = undefined;
3008
3039
  broadcastToolListChanged();
3009
3040
  broadcastPromptListChanged();
@@ -4220,8 +4251,12 @@ const handleListResourceTemplatesRequestImpl = async (_, extra) => {
4220
4251
  if (!serverInfo.client?.listResourceTemplates) {
4221
4252
  return [];
4222
4253
  }
4223
- const templates = await serverInfo.client.listResourceTemplates({}, serverInfo.options || {});
4254
+ const client = serverInfo.client;
4255
+ const templates = await client.listResourceTemplates({}, serverInfo.options || {});
4224
4256
  snapshots.push(templates.resourceTemplates);
4257
+ if (serverInfo.client === client) {
4258
+ updateServerResourceTemplatesCache(serverInfo, templates.resourceTemplates);
4259
+ }
4225
4260
  const filteredTemplates = await filterResourceTemplatesByGroup(lookupGroup, serverInfo.name, templates.resourceTemplates || [], serverConfigsByName.get(serverInfo.name));
4226
4261
  return appsRouteContext.enabled
4227
4262
  ? filteredTemplates
@@ -4234,6 +4269,60 @@ const handleListResourceTemplatesRequestImpl = async (_, extra) => {
4234
4269
  }
4235
4270
  return { resourceTemplates };
4236
4271
  };
4272
+ const TEMPLATE_LIST_RETRY_MS = 60000;
4273
+ const templateListFailedAt = new WeakMap();
4274
+ const getReadableResourceTemplates = async (serverInfo, uri, lookupGroup, groupServerConfig) => {
4275
+ const serverConfig = await getServerDao().findById(serverInfo.name);
4276
+ const groupConfig = await getGroupServerConfig(lookupGroup, serverInfo.name, groupServerConfig);
4277
+ if (serverConfig?.resources?.[uri]?.enabled === false ||
4278
+ (Array.isArray(groupConfig?.resources) && groupConfig.resources.length === 0)) {
4279
+ return [];
4280
+ }
4281
+ const client = serverInfo.client;
4282
+ // Modern upstreams have no list-changed stream, so honor the templates' own TTL.
4283
+ const modern = client?.getProtocolEra?.() === 'modern';
4284
+ if ((serverInfo.resourceTemplates === undefined || modern) &&
4285
+ serverInfo.status === 'connected' &&
4286
+ client &&
4287
+ (templateListFailedAt.get(client) ?? -Infinity) < Date.now() - TEMPLATE_LIST_RETRY_MS) {
4288
+ const refresh = async () => {
4289
+ const listed = await refreshServerResourceTemplatesCache(() => serverInfo, client, serverInfo.options);
4290
+ if (listed === undefined) {
4291
+ templateListFailedAt.set(client, Date.now());
4292
+ }
4293
+ };
4294
+ await (modern ? revalidateUpstreamList(client, 'templates', refresh) : refresh());
4295
+ }
4296
+ const templates = serverInfo.resourceTemplates;
4297
+ if (!templates?.length) {
4298
+ return [];
4299
+ }
4300
+ const enabled = templates.filter((template) => serverConfig?.resources?.[template.uriTemplate]?.enabled !== false);
4301
+ if (!groupConfig ||
4302
+ !Array.isArray(groupConfig.resources) ||
4303
+ groupConfig.resources.includes(uri)) {
4304
+ return enabled;
4305
+ }
4306
+ // Listing shows templates under any selected prefix; reading needs the template itself selected.
4307
+ const selected = new Set(groupConfig.resources);
4308
+ return enabled.filter((template) => selected.has(template.uriTemplate));
4309
+ };
4310
+ const findResourceTemplateServer = async (uri, lookupGroup, filteredServerInfos, serverConfigsByName) => {
4311
+ for (const serverInfo of filteredServerInfos) {
4312
+ // Idle on-demand servers keep cached templates; the read wakes them.
4313
+ const idleOnDemand = serverInfo.config?.startOnDemand === true &&
4314
+ serverInfo.status === 'disconnected' &&
4315
+ !serverInfo.client;
4316
+ if (serverInfo.status !== 'connected' && !idleOnDemand) {
4317
+ continue;
4318
+ }
4319
+ const templates = await getReadableResourceTemplates(serverInfo, uri, lookupGroup, serverConfigsByName.get(serverInfo.name));
4320
+ if (templates.some((template) => uriMatchesResourceTemplate(template.uriTemplate, uri))) {
4321
+ return serverInfo;
4322
+ }
4323
+ }
4324
+ return undefined;
4325
+ };
4237
4326
  const handleReadResourceRequestImpl = async (request, extra) => {
4238
4327
  try {
4239
4328
  const { uri } = request.params;
@@ -4349,7 +4438,32 @@ const handleReadResourceRequestImpl = async (request, extra) => {
4349
4438
  }
4350
4439
  }
4351
4440
  else {
4352
- throw new Error(`Resource not found: ${uri}`);
4441
+ const templateServer = await findResourceTemplateServer(uri, lookupGroup, filteredServerInfos, serverConfigsByName);
4442
+ if (!templateServer) {
4443
+ throw new Error(`Resource not found: ${uri}`);
4444
+ }
4445
+ const releaseOnDemandRead = beginOnDemandToolCall(templateServer);
4446
+ try {
4447
+ if (templateServer.config?.startOnDemand) {
4448
+ if (!templateServer.client) {
4449
+ await ensureServerReady(templateServer);
4450
+ }
4451
+ templateServer.lastUsedAt = Date.now();
4452
+ }
4453
+ const client = templateServer.client;
4454
+ if (!client) {
4455
+ throw new Error(`Resource not found: ${uri}`);
4456
+ }
4457
+ result = readOptions
4458
+ ? await client.readResource({ uri }, readOptions)
4459
+ : await client.readResource({ uri });
4460
+ }
4461
+ finally {
4462
+ releaseOnDemandRead?.();
4463
+ }
4464
+ if (!result || !Array.isArray(result.contents)) {
4465
+ throw new Error(`Failed to read resource: ${uri}`);
4466
+ }
4353
4467
  }
4354
4468
  return appsRouteContext.enabled
4355
4469
  ? result
@@ -4497,6 +4611,8 @@ const createPrincipalRuntime = async (name, resolvedConfig, scope, toolsOnly = f
4497
4611
  info.prompts = preserveListFreshness(prompts, prompts.map((prompt) => normalizePromptForCache(name, prompt)));
4498
4612
  }
4499
4613
  if (capabilities?.resources) {
4614
+ // The raw client: the protected one holds the replica credential lock while listing.
4615
+ void refreshServerResourceTemplatesCache(() => info, client, resolvedConfig.options, info.client);
4500
4616
  const { resources } = await client.listResources({}, resolvedConfig.options);
4501
4617
  info.resources = preserveListFreshness(resources, resources.map(normalizeResourceForCache));
4502
4618
  }
@@ -4755,7 +4871,17 @@ const withPrincipalServers = (handler, operation) => async (request, extra) => {
4755
4871
  : { ...request, params: { ...request.params, name: `${prefix}${requestedName}` } };
4756
4872
  }
4757
4873
  }
4758
- return await principalServerScope.run([...scoped.values()], () => handler(resolvedRequest, extra));
4874
+ const result = await principalServerScope.run([...scoped.values()], () => handler(resolvedRequest, extra));
4875
+ if (operation === 'tools-list' && result.tools?.length === 0) {
4876
+ const authorizationFailures = [...failures].filter(([, error]) => error instanceof PersonalAuthorizationRequiredError);
4877
+ if (authorizationFailures.length) {
4878
+ throw new ProtocolError(-32000, authorizationFailures.map(([, error]) => error.message).join(' '), {
4879
+ code: 'PERSONAL_AUTHORIZATION_REQUIRED',
4880
+ servers: authorizationFailures.map(([name]) => name),
4881
+ });
4882
+ }
4883
+ }
4884
+ return result;
4759
4885
  }
4760
4886
  finally {
4761
4887
  for (const release of releases)