@samanhappy/mcphub 1.0.17 → 1.0.19

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 (99) hide show
  1. package/dist/betterAuth.js +2 -2
  2. package/dist/betterAuth.js.map +1 -1
  3. package/dist/clients/openapi.js +28 -0
  4. package/dist/clients/openapi.js.map +1 -1
  5. package/dist/controllers/groupController.js +66 -2
  6. package/dist/controllers/groupController.js.map +1 -1
  7. package/dist/controllers/serverController.js +22 -4
  8. package/dist/controllers/serverController.js.map +1 -1
  9. package/dist/controllers/userController.js +10 -1
  10. package/dist/controllers/userController.js.map +1 -1
  11. package/dist/dao/SystemConfigDaoDbImpl.js +3 -0
  12. package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -1
  13. package/dist/db/entities/Group.js.map +1 -1
  14. package/dist/db/entities/SystemConfig.js +4 -0
  15. package/dist/db/entities/SystemConfig.js.map +1 -1
  16. package/dist/services/activityLoggingService.js +36 -6
  17. package/dist/services/activityLoggingService.js.map +1 -1
  18. package/dist/services/groupService.js +25 -0
  19. package/dist/services/groupService.js.map +1 -1
  20. package/dist/services/mcpService.js +155 -24
  21. package/dist/services/mcpService.js.map +1 -1
  22. package/dist/services/requestContextService.js +15 -0
  23. package/dist/services/requestContextService.js.map +1 -1
  24. package/dist/services/smartRoutingService.js +63 -12
  25. package/dist/services/smartRoutingService.js.map +1 -1
  26. package/dist/services/sseService.js +5 -2
  27. package/dist/services/sseService.js.map +1 -1
  28. package/dist/services/userService.js +18 -0
  29. package/dist/services/userService.js.map +1 -1
  30. package/dist/utils/serialization.js +85 -12
  31. package/dist/utils/serialization.js.map +1 -1
  32. package/dist/utils/ssrf.js +155 -0
  33. package/dist/utils/ssrf.js.map +1 -0
  34. package/dist/utils/tokenTruncation.js +14 -0
  35. package/dist/utils/tokenTruncation.js.map +1 -1
  36. package/frontend/dist/assets/{ActivityPage-KqU4EjKb.js → ActivityPage-DjDalhlo.js} +2 -2
  37. package/frontend/dist/assets/{ActivityPage-KqU4EjKb.js.map → ActivityPage-DjDalhlo.js.map} +1 -1
  38. package/frontend/dist/assets/{ConfirmDialog-Cag_haxr.js → ConfirmDialog-BKNVI65J.js} +2 -2
  39. package/frontend/dist/assets/{ConfirmDialog-Cag_haxr.js.map → ConfirmDialog-BKNVI65J.js.map} +1 -1
  40. package/frontend/dist/assets/{Dashboard-CXc-ImS1.js → Dashboard-Cf2VFPQ7.js} +2 -2
  41. package/frontend/dist/assets/{Dashboard-CXc-ImS1.js.map → Dashboard-Cf2VFPQ7.js.map} +1 -1
  42. package/frontend/dist/assets/{DeleteDialog-BBfJpiiD.js → DeleteDialog-7NPk3Hro.js} +2 -2
  43. package/frontend/dist/assets/{DeleteDialog-BBfJpiiD.js.map → DeleteDialog-7NPk3Hro.js.map} +1 -1
  44. package/frontend/dist/assets/{EndpointCopy-B0Jzcw_o.js → EndpointCopy-DW_j2a9P.js} +2 -2
  45. package/frontend/dist/assets/{EndpointCopy-B0Jzcw_o.js.map → EndpointCopy-DW_j2a9P.js.map} +1 -1
  46. package/frontend/dist/assets/GroupsPage-DUspUR95.js +33 -0
  47. package/frontend/dist/assets/GroupsPage-DUspUR95.js.map +1 -0
  48. package/frontend/dist/assets/{LoginPage-BhY00qA7.js → LoginPage-o710z6HX.js} +2 -2
  49. package/frontend/dist/assets/{LoginPage-BhY00qA7.js.map → LoginPage-o710z6HX.js.map} +1 -1
  50. package/frontend/dist/assets/{LogsPage-Dg-lc3Pg.js → LogsPage-DiXiSUhj.js} +2 -2
  51. package/frontend/dist/assets/{LogsPage-Dg-lc3Pg.js.map → LogsPage-DiXiSUhj.js.map} +1 -1
  52. package/frontend/dist/assets/{MarketPage-Cx40FYHN.js → MarketPage-Codk7YxZ.js} +2 -2
  53. package/frontend/dist/assets/{MarketPage-Cx40FYHN.js.map → MarketPage-Codk7YxZ.js.map} +1 -1
  54. package/frontend/dist/assets/{Pagination-DBAu79mv.js → Pagination-DAcOi8eq.js} +2 -2
  55. package/frontend/dist/assets/{Pagination-DBAu79mv.js.map → Pagination-DAcOi8eq.js.map} +1 -1
  56. package/frontend/dist/assets/{PromptsPage-CGdbhjVN.js → PromptsPage-DQacrj7y.js} +2 -2
  57. package/frontend/dist/assets/{PromptsPage-CGdbhjVN.js.map → PromptsPage-DQacrj7y.js.map} +1 -1
  58. package/frontend/dist/assets/{ResourcesPage-Cb85Tu7s.js → ResourcesPage-BS25aKa7.js} +2 -2
  59. package/frontend/dist/assets/{ResourcesPage-Cb85Tu7s.js.map → ResourcesPage-BS25aKa7.js.map} +1 -1
  60. package/frontend/dist/assets/ServersPage-D7L7zYLX.js +37 -0
  61. package/frontend/dist/assets/ServersPage-D7L7zYLX.js.map +1 -0
  62. package/frontend/dist/assets/SettingsPage-3PaaNjJQ.js +12 -0
  63. package/frontend/dist/assets/SettingsPage-3PaaNjJQ.js.map +1 -0
  64. package/frontend/dist/assets/{StatusDot-CpT1CIHe.js → StatusDot-udIVio-o.js} +2 -2
  65. package/frontend/dist/assets/{StatusDot-CpT1CIHe.js.map → StatusDot-udIVio-o.js.map} +1 -1
  66. package/frontend/dist/assets/{ToggleGroup-Dd_LLvuF.js → ToggleGroup-PVPGDLq8.js} +2 -2
  67. package/frontend/dist/assets/{ToggleGroup-Dd_LLvuF.js.map → ToggleGroup-PVPGDLq8.js.map} +1 -1
  68. package/frontend/dist/assets/{UsersPage-B1kkBEmr.js → UsersPage-C7BUNQm9.js} +2 -2
  69. package/frontend/dist/assets/{UsersPage-B1kkBEmr.js.map → UsersPage-C7BUNQm9.js.map} +1 -1
  70. package/frontend/dist/assets/{contextCost-BdSIYgf1.js → contextCost-DqhBunlo.js} +2 -2
  71. package/frontend/dist/assets/{contextCost-BdSIYgf1.js.map → contextCost-DqhBunlo.js.map} +1 -1
  72. package/frontend/dist/assets/framework-vendor-X-WP1v0m.js +61 -0
  73. package/frontend/dist/assets/framework-vendor-X-WP1v0m.js.map +1 -0
  74. package/frontend/dist/assets/{i18n-vendor-DP1IRITP.js → i18n-vendor-BLr2MLKp.js} +2 -2
  75. package/frontend/dist/assets/{i18n-vendor-DP1IRITP.js.map → i18n-vendor-BLr2MLKp.js.map} +1 -1
  76. package/frontend/dist/assets/{icons-vendor-Cumt8zWo.js → icons-vendor-DMtsx1SI.js} +2 -2
  77. package/frontend/dist/assets/{icons-vendor-Cumt8zWo.js.map → icons-vendor-DMtsx1SI.js.map} +1 -1
  78. package/frontend/dist/assets/{index-D1-Bdpe1.css → index-BlTPJflb.css} +1 -1
  79. package/frontend/dist/assets/index-CPJj7k3z.js +3 -0
  80. package/frontend/dist/assets/index-CPJj7k3z.js.map +1 -0
  81. package/frontend/dist/assets/{resourceService-ajx0g9wO.js → resourceService-BjMkU6_N.js} +2 -2
  82. package/frontend/dist/assets/{resourceService-ajx0g9wO.js.map → resourceService-BjMkU6_N.js.map} +1 -1
  83. package/frontend/dist/assets/useSettingsData-B9qL54qz.js +2 -0
  84. package/frontend/dist/assets/{useSettingsData-DPg3UYfr.js.map → useSettingsData-B9qL54qz.js.map} +1 -1
  85. package/frontend/dist/assets/{variableDetection-C_2zoP1B.js → variableDetection-Bp_stsiy.js} +2 -2
  86. package/frontend/dist/assets/{variableDetection-C_2zoP1B.js.map → variableDetection-Bp_stsiy.js.map} +1 -1
  87. package/frontend/dist/index.html +5 -5
  88. package/package.json +11 -11
  89. package/frontend/dist/assets/GroupsPage-CswSlOw8.js +0 -33
  90. package/frontend/dist/assets/GroupsPage-CswSlOw8.js.map +0 -1
  91. package/frontend/dist/assets/ServersPage-EHYBPHCn.js +0 -37
  92. package/frontend/dist/assets/ServersPage-EHYBPHCn.js.map +0 -1
  93. package/frontend/dist/assets/SettingsPage-S3Sjrsdr.js +0 -12
  94. package/frontend/dist/assets/SettingsPage-S3Sjrsdr.js.map +0 -1
  95. package/frontend/dist/assets/framework-vendor-DeqnZ0v6.js +0 -61
  96. package/frontend/dist/assets/framework-vendor-DeqnZ0v6.js.map +0 -1
  97. package/frontend/dist/assets/index-Cm_FKd7K.js +0 -3
  98. package/frontend/dist/assets/index-Cm_FKd7K.js.map +0 -1
  99. package/frontend/dist/assets/useSettingsData-DPg3UYfr.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"groupService.js","sourceRoot":"","sources":["../../src/services/groupService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"groupService.js","sourceRoot":"","sources":["../../src/services/groupService.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'
10
10
  import { StreamableHTTPClientTransport, } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
11
11
  import { normalizeHeaders } from '@modelcontextprotocol/sdk/shared/transport.js';
12
12
  import { createFetchWithProxy, getProxyConfigFromEnv } from './proxy.js';
13
+ import { assertSafeUrl, createRedirectValidatingFetch } from '../utils/ssrf.js';
14
+ import { getUserDao } from '../dao/index.js';
13
15
  import { expandEnvVars, replaceEnvVars, getNameSeparator } from '../config/index.js';
14
16
  import config from '../config/index.js';
15
17
  import { getGroup } from './sseService.js';
@@ -27,7 +29,7 @@ import { maybeCompressToolResult } from './toolResultCompressionService.js';
27
29
  import { assertHostedToolAllowed, filterHostedTools, reserveHostedToolCall, settleHostedToolCall, } from './hostedAuthService.js';
28
30
  import { formatErrorForLogging, sanitizeStringForLogging, summarizeErrorForLogging, } from '../utils/serialization.js';
29
31
  import { MCP_APPS_CAPABILITIES, filterModelVisibleTools, hasMcpAppsCapability, isAppOnlyTool, stripMcpAppsMetadata, } from '../utils/mcpApps.js';
30
- import { supportsCacheRefresh, injectRefreshFlag, clearRunnerCache, } from '../utils/cacheUtils.js';
32
+ import { supportsCacheRefresh, injectRefreshFlag, clearRunnerCache } from '../utils/cacheUtils.js';
31
33
  const servers = {};
32
34
  import { setupClientKeepAlive } from './keepAliveService.js';
33
35
  /**
@@ -654,7 +656,9 @@ const summarizePromptForLogging = (prompt) => {
654
656
  return summary;
655
657
  };
656
658
  export const collectPassthroughHeaders = (requestHeaders, passthroughHeaderNames) => {
657
- if (!requestHeaders || !Array.isArray(passthroughHeaderNames) || passthroughHeaderNames.length === 0) {
659
+ if (!requestHeaders ||
660
+ !Array.isArray(passthroughHeaderNames) ||
661
+ passthroughHeaderNames.length === 0) {
658
662
  return {};
659
663
  }
660
664
  const passthroughHeaders = {};
@@ -696,11 +700,23 @@ export const createTransportFromConfig = async (name, conf) => {
696
700
  ...process.env,
697
701
  ...replaceEnvVars(conf.env || {}),
698
702
  };
703
+ // SSRF guard: block URL/streamable-http transports from reaching
704
+ // loopback / RFC1918 / link-local targets (e.g. cloud metadata service).
705
+ // Admin-owned servers may legitimately target internal services, so they
706
+ // skip the internal-IP blocklist. allowInternal also governs per-hop
707
+ // redirect validation in createRedirectValidatingFetch below.
708
+ const ownerUser = conf.owner
709
+ ? await getUserDao().findByUsername(conf.owner)
710
+ : null;
711
+ const allowInternal = !!ownerUser?.isAdmin;
712
+ if (conf.url) {
713
+ await assertSafeUrl(conf.url, { allowInternal });
714
+ }
699
715
  if (conf.type === 'streamable-http') {
700
716
  const options = {};
701
717
  const headers = conf.headers ? replaceEnvVars(conf.headers, env) : {};
702
718
  const baseFetch = createFetchWithProxy(getProxyConfigFromEnv(env));
703
- const requestAwareFetch = createRequestContextAwareFetch(baseFetch, conf.passthroughHeaders);
719
+ const requestAwareFetch = createRedirectValidatingFetch(createRequestContextAwareFetch(baseFetch, conf.passthroughHeaders), allowInternal);
704
720
  if (Object.keys(headers).length > 0) {
705
721
  options.requestInit = {
706
722
  headers,
@@ -720,7 +736,7 @@ export const createTransportFromConfig = async (name, conf) => {
720
736
  const options = {};
721
737
  const headers = conf.headers ? replaceEnvVars(conf.headers, env) : {};
722
738
  const baseFetch = createFetchWithProxy(getProxyConfigFromEnv(env));
723
- const requestAwareFetch = createRequestContextAwareFetch(baseFetch, conf.passthroughHeaders);
739
+ const requestAwareFetch = createRedirectValidatingFetch(createRequestContextAwareFetch(baseFetch, conf.passthroughHeaders), allowInternal);
724
740
  if (Object.keys(headers).length > 0) {
725
741
  options.eventSourceInit = {
726
742
  headers,
@@ -908,8 +924,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
908
924
  const existingServer = existingServerInfos.find((s) => s.name === name);
909
925
  const isDifferentServer = Boolean(serverName) && serverName !== name;
910
926
  if (existingServer &&
911
- (isDifferentServer ||
912
- (!serverName && existingServer.status === 'connected'))) {
927
+ (isDifferentServer || (!serverName && existingServer.status === 'connected'))) {
913
928
  nextServerInfos.push({
914
929
  ...existingServer,
915
930
  enabled: expandedConf.enabled === undefined ? true : expandedConf.enabled,
@@ -988,6 +1003,9 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
988
1003
  serverInfo.tools = mcpTools;
989
1004
  serverInfo.openApiClient = openApiClient;
990
1005
  console.log(`Successfully initialized OpenAPI server: ${name} with ${mcpTools.length} tools`);
1006
+ // Broadcast now that tools are loaded. OpenAPI servers expose tools
1007
+ // only (no prompts/resources). See the standard-path note above.
1008
+ broadcastToolListChanged();
991
1009
  // Save tools as vector embeddings for search
992
1010
  syncToolsAsVectorEmbeddings(name, mcpTools, {
993
1011
  reportProgress: options?.reportEmbeddingProgress === true && serverName === name,
@@ -1076,6 +1094,11 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1076
1094
  updateServerToolsCache(serverInfo, tools.tools, {
1077
1095
  reportEmbeddingProgress: options?.reportEmbeddingProgress === true && serverName === name,
1078
1096
  });
1097
+ // Broadcast only after tools are actually loaded into the cache.
1098
+ // The connection completes asynchronously, so callers (e.g. enabling
1099
+ // a server) cannot broadcast a correct tool list themselves — doing so
1100
+ // would race ahead of this point and push a stale (empty) list.
1101
+ broadcastToolListChanged();
1079
1102
  })
1080
1103
  .catch((error) => {
1081
1104
  console.error('Failed to list tools for server', {
@@ -1091,6 +1114,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1091
1114
  .then((prompts) => {
1092
1115
  console.log(`Successfully listed ${prompts.prompts.length} prompts for server: ${name}`);
1093
1116
  updateServerPromptsCache(serverInfo, prompts.prompts);
1117
+ broadcastPromptListChanged();
1094
1118
  })
1095
1119
  .catch((error) => {
1096
1120
  console.error('Failed to list prompts for server', {
@@ -1106,6 +1130,7 @@ export const initializeClientsFromSettings = async (isInit, serverName, options)
1106
1130
  .then((resources) => {
1107
1131
  console.log(`Successfully listed ${resources.resources.length} resources for server: ${name}`);
1108
1132
  updateServerResourcesCache(serverInfo, resources.resources);
1133
+ broadcastResourceListChanged();
1109
1134
  })
1110
1135
  .catch((error) => {
1111
1136
  console.error('Failed to list resources for server', {
@@ -1605,6 +1630,31 @@ const normalizeToolNameForServer = (serverName, toolName) => {
1605
1630
  const prefix = `${serverName}${getNameSeparator()}`;
1606
1631
  return toolName.startsWith(prefix) ? toolName.substring(prefix.length) : toolName;
1607
1632
  };
1633
+ const getGroupLookupName = (group) => {
1634
+ if (group?.startsWith('$smart/')) {
1635
+ return group.substring(7) || undefined;
1636
+ }
1637
+ return group;
1638
+ };
1639
+ const getExposedServerName = (serverName, serverConfig) => {
1640
+ return serverConfig?.alias?.trim() || serverName;
1641
+ };
1642
+ const replacePrefixedServerName = (name, fromServerName, toServerName) => {
1643
+ if (fromServerName === toServerName) {
1644
+ return name;
1645
+ }
1646
+ const separator = getNameSeparator();
1647
+ const prefix = `${fromServerName}${separator}`;
1648
+ return name.startsWith(prefix)
1649
+ ? `${toServerName}${separator}${name.substring(prefix.length)}`
1650
+ : name;
1651
+ };
1652
+ const projectNameForGroup = (name, serverName, serverConfig) => {
1653
+ return replacePrefixedServerName(name, serverName, getExposedServerName(serverName, serverConfig));
1654
+ };
1655
+ const resolveNameFromGroup = (name, serverName, serverConfig) => {
1656
+ return replacePrefixedServerName(name, getExposedServerName(serverName, serverConfig), serverName);
1657
+ };
1608
1658
  const findToolOnServer = (serverInfo, toolName, allowRawName) => {
1609
1659
  return serverInfo.tools.find((tool) => tool.name === toolName ||
1610
1660
  (allowRawName && normalizeToolNameForServer(serverInfo.name, tool.name) === toolName));
@@ -1614,7 +1664,55 @@ const assertToolAvailableForRoute = (tool, appsRouteContext) => {
1614
1664
  throw new Error(`Tool '${tool.name}' is only available to MCP Apps`);
1615
1665
  }
1616
1666
  };
1617
- const projectToolForDownstream = (serverName, tool, appsRouteContext) => {
1667
+ const resolveToolInGroup = async (group, toolName, allowRawName) => {
1668
+ const lookupGroup = getGroupLookupName(group);
1669
+ if (!lookupGroup) {
1670
+ return undefined;
1671
+ }
1672
+ const { filteredServerInfos, serverConfigsByName } = await getFilteredServerInfosForGroup(lookupGroup);
1673
+ for (const serverInfo of filteredServerInfos) {
1674
+ if (serverInfo.status !== 'connected' || serverInfo.enabled === false) {
1675
+ continue;
1676
+ }
1677
+ const serverConfig = serverConfigsByName.get(serverInfo.name);
1678
+ const internalToolName = resolveNameFromGroup(toolName, serverInfo.name, serverConfig);
1679
+ const tool = findToolOnServer(serverInfo, internalToolName, allowRawName);
1680
+ if (!tool) {
1681
+ continue;
1682
+ }
1683
+ const filteredTools = await filterToolsByGroup(lookupGroup, serverInfo.name, [tool], serverConfig);
1684
+ if (filteredTools.length === 0) {
1685
+ continue;
1686
+ }
1687
+ return { serverInfo, toolName: internalToolName, tool };
1688
+ }
1689
+ return undefined;
1690
+ };
1691
+ async function resolvePromptInGroup(group, promptName) {
1692
+ const lookupGroup = getGroupLookupName(group);
1693
+ if (!lookupGroup) {
1694
+ return undefined;
1695
+ }
1696
+ const { filteredServerInfos, serverConfigsByName } = await getFilteredServerInfosForGroup(lookupGroup);
1697
+ for (const serverInfo of filteredServerInfos) {
1698
+ if (serverInfo.status !== 'connected' || serverInfo.enabled === false) {
1699
+ continue;
1700
+ }
1701
+ const serverConfig = serverConfigsByName.get(serverInfo.name);
1702
+ const internalPromptName = resolveNameFromGroup(promptName, serverInfo.name, serverConfig);
1703
+ const prompt = serverInfo.prompts.find((item) => item.name === internalPromptName);
1704
+ if (!prompt) {
1705
+ continue;
1706
+ }
1707
+ const filteredPrompts = await filterPromptsByGroup(lookupGroup, serverInfo.name, [prompt], serverConfig);
1708
+ if (filteredPrompts.length === 0) {
1709
+ continue;
1710
+ }
1711
+ return { serverInfo, promptName: internalPromptName };
1712
+ }
1713
+ return undefined;
1714
+ }
1715
+ const projectToolForDownstream = (serverName, tool, appsRouteContext, serverConfig) => {
1618
1716
  if (!appsRouteContext.enabled && isAppOnlyTool(tool)) {
1619
1717
  return undefined;
1620
1718
  }
@@ -1623,7 +1721,7 @@ const projectToolForDownstream = (serverName, tool, appsRouteContext) => {
1623
1721
  ...projectedTool,
1624
1722
  name: appsRouteContext.enabled
1625
1723
  ? normalizeToolNameForServer(serverName, projectedTool.name)
1626
- : projectedTool.name,
1724
+ : projectNameForGroup(projectedTool.name, serverName, serverConfig),
1627
1725
  };
1628
1726
  };
1629
1727
  export const handleListToolsRequest = async (_, extra) => {
@@ -1640,10 +1738,11 @@ export const handleListToolsRequest = async (_, extra) => {
1640
1738
  const allTools = [];
1641
1739
  for (const serverInfo of filteredServerInfos) {
1642
1740
  if (serverInfo.tools && serverInfo.tools.length > 0) {
1741
+ const groupServerConfig = serverConfigsByName.get(serverInfo.name);
1643
1742
  // Filter tools based on server configuration
1644
1743
  let tools = await filterToolsByConfig(serverInfo.name, serverInfo.tools);
1645
1744
  // If this is a group request, apply group-level tool filtering
1646
- tools = await filterToolsByGroup(group, serverInfo.name, tools, serverConfigsByName.get(serverInfo.name));
1745
+ tools = await filterToolsByGroup(group, serverInfo.name, tools, groupServerConfig);
1647
1746
  // Apply custom descriptions from server configuration
1648
1747
  const serverConfig = await getServerDao().findById(serverInfo.name);
1649
1748
  const toolsWithCustomDescriptions = tools.map((tool) => {
@@ -1654,7 +1753,7 @@ export const handleListToolsRequest = async (_, extra) => {
1654
1753
  };
1655
1754
  });
1656
1755
  allTools.push(...toolsWithCustomDescriptions.flatMap((tool) => {
1657
- const projectedTool = projectToolForDownstream(serverInfo.name, tool, appsRouteContext);
1756
+ const projectedTool = projectToolForDownstream(serverInfo.name, tool, appsRouteContext, groupServerConfig);
1658
1757
  return projectedTool ? [projectedTool] : [];
1659
1758
  }));
1660
1759
  }
@@ -1674,7 +1773,10 @@ export const handleCallToolRequest = async (request, extra) => {
1674
1773
  // Extract group and key info from request context (set by SSE/HTTP handlers)
1675
1774
  // Fallback to extra for backward compatibility (e.g., direct API calls)
1676
1775
  const group = requestContextService.getGroupContext() || extra?.group || getGroup(sessionId) || undefined;
1677
- const username = requestContextService.getUsernameContext() || extra?.username || undefined;
1776
+ const username = requestContextService.getUsernameContext() ||
1777
+ extra?.username ||
1778
+ (requestContextService.getKeyKindContext() === 'system' ? 'system' : undefined) ||
1779
+ undefined;
1678
1780
  let appsRouteContext = { enabled: false };
1679
1781
  const keyId = bearerKeyContext.keyId || extra?.keyId || undefined;
1680
1782
  const keyName = bearerKeyContext.keyName || extra?.keyName || undefined;
@@ -1715,12 +1817,22 @@ export const handleCallToolRequest = async (request, extra) => {
1715
1817
  }
1716
1818
  const { arguments: toolArgs } = request.params.arguments || {};
1717
1819
  let targetServerInfo;
1820
+ let targetToolName = toolName;
1821
+ let targetTool;
1718
1822
  if (appsRouteContext.enabled) {
1719
1823
  targetServerInfo = appsRouteContext.serverInfo;
1720
1824
  }
1721
1825
  else if (extra && extra.server) {
1722
1826
  targetServerInfo = getServerByName(extra.server);
1723
1827
  }
1828
+ else if (group) {
1829
+ const groupTool = await resolveToolInGroup(group, toolName, appsRouteContext.enabled);
1830
+ if (groupTool) {
1831
+ targetServerInfo = groupTool.serverInfo;
1832
+ targetToolName = groupTool.toolName;
1833
+ targetTool = groupTool.tool;
1834
+ }
1835
+ }
1724
1836
  else {
1725
1837
  // Find the first server that has this tool
1726
1838
  targetServerInfo = serverInfos.find((serverInfo) => serverInfo.status === 'connected' &&
@@ -1731,7 +1843,7 @@ export const handleCallToolRequest = async (request, extra) => {
1731
1843
  throw new Error(`No available servers found with tool: ${toolName}`);
1732
1844
  }
1733
1845
  // Check if the tool exists on the server
1734
- const tool = findToolOnServer(targetServerInfo, toolName, appsRouteContext.enabled);
1846
+ const tool = targetTool ?? findToolOnServer(targetServerInfo, targetToolName, appsRouteContext.enabled);
1735
1847
  if (!tool) {
1736
1848
  throw new Error(`Tool '${toolName}' not found on server '${targetServerInfo.name}'`);
1737
1849
  }
@@ -1743,12 +1855,12 @@ export const handleCallToolRequest = async (request, extra) => {
1743
1855
  // Use toolArgs if it has properties, otherwise fallback to request.params.arguments
1744
1856
  const finalArgs = toolArgs && typeof toolArgs === 'object' ? toolArgs : {};
1745
1857
  console.log('Invoking OpenAPI tool', {
1746
- toolName,
1858
+ toolName: targetToolName,
1747
1859
  serverName: targetServerInfo.name,
1748
1860
  arguments: summarizeArgumentsForLogging(finalArgs),
1749
1861
  });
1750
1862
  // Remove server prefix from tool name if present
1751
- const cleanToolName = normalizeToolNameForServer(targetServerInfo.name, toolName);
1863
+ const cleanToolName = normalizeToolNameForServer(targetServerInfo.name, targetToolName);
1752
1864
  // Extract passthrough headers from extra or request context
1753
1865
  let passthroughHeaders;
1754
1866
  let requestHeaders = null;
@@ -1821,11 +1933,11 @@ export const handleCallToolRequest = async (request, extra) => {
1821
1933
  // Use toolArgs if it has properties, otherwise fallback to request.params.arguments
1822
1934
  const finalArgs = toolArgs && typeof toolArgs === 'object' ? toolArgs : {};
1823
1935
  console.log('Invoking tool', {
1824
- toolName,
1936
+ toolName: targetToolName,
1825
1937
  serverName: targetServerInfo.name,
1826
1938
  arguments: summarizeArgumentsForLogging(finalArgs),
1827
1939
  });
1828
- const cleanToolName = normalizeToolNameForServer(targetServerInfo.name, toolName);
1940
+ const cleanToolName = normalizeToolNameForServer(targetServerInfo.name, targetToolName);
1829
1941
  await reserveHostedIfNeeded(targetServerInfo.name, cleanToolName);
1830
1942
  const result = await callToolWithReconnect(targetServerInfo, {
1831
1943
  name: cleanToolName,
@@ -1864,12 +1976,17 @@ export const handleCallToolRequest = async (request, extra) => {
1864
1976
  });
1865
1977
  }
1866
1978
  // Regular tool handling
1979
+ const groupTool = !appsRouteContext.enabled && group
1980
+ ? await resolveToolInGroup(group, request.params.name, appsRouteContext.enabled)
1981
+ : undefined;
1867
1982
  const serverInfo = appsRouteContext.enabled
1868
1983
  ? appsRouteContext.serverInfo
1869
- : getServerByTool(request.params.name);
1870
- const tool = serverInfo
1871
- ? findToolOnServer(serverInfo, request.params.name, appsRouteContext.enabled)
1872
- : undefined;
1984
+ : (groupTool?.serverInfo ?? (group ? undefined : getServerByTool(request.params.name)));
1985
+ const routeToolName = groupTool?.toolName ?? request.params.name;
1986
+ const tool = groupTool?.tool ??
1987
+ (serverInfo
1988
+ ? findToolOnServer(serverInfo, routeToolName, appsRouteContext.enabled)
1989
+ : undefined);
1873
1990
  if (!serverInfo || !tool) {
1874
1991
  throw new Error(`Server not found: ${request.params.name}`);
1875
1992
  }
@@ -1879,7 +1996,7 @@ export const handleCallToolRequest = async (request, extra) => {
1879
1996
  // For OpenAPI servers, use the OpenAPI client
1880
1997
  const openApiClient = serverInfo.openApiClient;
1881
1998
  // Remove server prefix from tool name if present
1882
- const cleanToolName = normalizeToolNameForServer(serverInfo.name, request.params.name);
1999
+ const cleanToolName = normalizeToolNameForServer(serverInfo.name, routeToolName);
1883
2000
  console.log('Invoking OpenAPI tool', {
1884
2001
  toolName: cleanToolName,
1885
2002
  serverName: serverInfo.name,
@@ -1955,7 +2072,7 @@ export const handleCallToolRequest = async (request, extra) => {
1955
2072
  if (!client) {
1956
2073
  throw new Error(`Client not found for server: ${serverInfo.name}`);
1957
2074
  }
1958
- const cleanToolName = normalizeToolNameForServer(serverInfo.name, request.params.name);
2075
+ const cleanToolName = normalizeToolNameForServer(serverInfo.name, routeToolName);
1959
2076
  await reserveHostedIfNeeded(serverInfo.name, cleanToolName);
1960
2077
  const result = await callToolWithReconnect(serverInfo, { ...request.params, name: cleanToolName }, serverInfo.options || {});
1961
2078
  await settleHostedIfNeeded({
@@ -2031,6 +2148,8 @@ export const handleCallToolRequest = async (request, extra) => {
2031
2148
  export const handleGetPromptRequest = async (request, extra) => {
2032
2149
  try {
2033
2150
  const { name, arguments: promptArgs } = request.params;
2151
+ const sessionId = extra?.sessionId || '';
2152
+ const group = extra?.group || getGroup(sessionId) || undefined;
2034
2153
  // Check built-in prompts first
2035
2154
  const builtinPrompt = await getBuiltinPromptDao().findByName(name);
2036
2155
  if (builtinPrompt && builtinPrompt.enabled !== false) {
@@ -2051,9 +2170,17 @@ export const handleGetPromptRequest = async (request, extra) => {
2051
2170
  };
2052
2171
  }
2053
2172
  let server;
2173
+ let promptNameForServer = name;
2054
2174
  if (extra && extra.server) {
2055
2175
  server = getServerByName(extra.server);
2056
2176
  }
2177
+ else if (group) {
2178
+ const groupPrompt = await resolvePromptInGroup(group, name);
2179
+ if (groupPrompt) {
2180
+ server = groupPrompt.serverInfo;
2181
+ promptNameForServer = groupPrompt.promptName;
2182
+ }
2183
+ }
2057
2184
  else {
2058
2185
  // Find the first server that has this prompt
2059
2186
  server = serverInfos.find((serverInfo) => serverInfo.status === 'connected' &&
@@ -2066,7 +2193,9 @@ export const handleGetPromptRequest = async (request, extra) => {
2066
2193
  // Remove server prefix from prompt name if present
2067
2194
  const separator = getNameSeparator();
2068
2195
  const prefix = `${server.name}${separator}`;
2069
- const cleanPromptName = name.startsWith(prefix) ? name.substring(prefix.length) : name;
2196
+ const cleanPromptName = promptNameForServer.startsWith(prefix)
2197
+ ? promptNameForServer.substring(prefix.length)
2198
+ : promptNameForServer;
2070
2199
  const promptParams = {
2071
2200
  name: cleanPromptName || '',
2072
2201
  arguments: promptArgs,
@@ -2112,6 +2241,7 @@ export const handleListPromptsRequest = async (_, extra) => {
2112
2241
  const { filteredServerInfos, serverConfigsByName } = await getFilteredServerInfosForGroup(group);
2113
2242
  for (const serverInfo of filteredServerInfos) {
2114
2243
  if (serverInfo.prompts && serverInfo.prompts.length > 0) {
2244
+ const groupServerConfig = serverConfigsByName.get(serverInfo.name);
2115
2245
  // Filter prompts based on server configuration
2116
2246
  const serverConfig = await getServerDao().findById(serverInfo.name);
2117
2247
  let enabledPrompts = serverInfo.prompts;
@@ -2122,12 +2252,13 @@ export const handleListPromptsRequest = async (_, extra) => {
2122
2252
  return promptConfig?.enabled !== false;
2123
2253
  });
2124
2254
  }
2125
- enabledPrompts = await filterPromptsByGroup(group, serverInfo.name, enabledPrompts, serverConfigsByName.get(serverInfo.name));
2255
+ enabledPrompts = await filterPromptsByGroup(group, serverInfo.name, enabledPrompts, groupServerConfig);
2126
2256
  // Apply custom descriptions from server configuration
2127
2257
  const promptsWithCustomDescriptions = enabledPrompts.map((prompt) => {
2128
2258
  const promptConfig = serverConfig?.prompts?.[prompt.name];
2129
2259
  return normalizePromptForList({
2130
2260
  ...prompt,
2261
+ name: projectNameForGroup(prompt.name, serverInfo.name, groupServerConfig),
2131
2262
  description: promptConfig?.description || prompt.description, // Use custom description if available
2132
2263
  });
2133
2264
  });