@samanhappy/mcphub 0.10.5 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.fr.md +36 -152
  2. package/README.md +34 -255
  3. package/README.zh.md +33 -212
  4. package/dist/config/DaoConfigService.js +3 -3
  5. package/dist/config/DaoConfigService.js.map +1 -1
  6. package/dist/controllers/authController.js +2 -2
  7. package/dist/controllers/authController.js.map +1 -1
  8. package/dist/controllers/groupController.js +24 -24
  9. package/dist/controllers/groupController.js.map +1 -1
  10. package/dist/controllers/openApiController.js +1 -1
  11. package/dist/controllers/openApiController.js.map +1 -1
  12. package/dist/controllers/serverController.js +96 -62
  13. package/dist/controllers/serverController.js.map +1 -1
  14. package/dist/controllers/userController.js +22 -21
  15. package/dist/controllers/userController.js.map +1 -1
  16. package/dist/dao/DaoFactory.js +19 -0
  17. package/dist/dao/DaoFactory.js.map +1 -1
  18. package/dist/dao/DatabaseDaoFactory.js +68 -0
  19. package/dist/dao/DatabaseDaoFactory.js.map +1 -0
  20. package/dist/dao/GroupDaoDbImpl.js +131 -0
  21. package/dist/dao/GroupDaoDbImpl.js.map +1 -0
  22. package/dist/dao/ServerDaoDbImpl.js +109 -0
  23. package/dist/dao/ServerDaoDbImpl.js.map +1 -0
  24. package/dist/dao/SystemConfigDaoDbImpl.js +56 -0
  25. package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -0
  26. package/dist/dao/UserConfigDaoDbImpl.js +61 -0
  27. package/dist/dao/UserConfigDaoDbImpl.js.map +1 -0
  28. package/dist/dao/UserDaoDbImpl.js +90 -0
  29. package/dist/dao/UserDaoDbImpl.js.map +1 -0
  30. package/dist/dao/examples.js.map +1 -1
  31. package/dist/dao/index.js +7 -0
  32. package/dist/dao/index.js.map +1 -1
  33. package/dist/db/entities/Group.js +49 -0
  34. package/dist/db/entities/Group.js.map +1 -0
  35. package/dist/db/entities/Server.js +93 -0
  36. package/dist/db/entities/Server.js.map +1 -0
  37. package/dist/db/entities/SystemConfig.js +66 -0
  38. package/dist/db/entities/SystemConfig.js.map +1 -0
  39. package/dist/db/entities/User.js +45 -0
  40. package/dist/db/entities/User.js.map +1 -0
  41. package/dist/db/entities/UserConfig.js +45 -0
  42. package/dist/db/entities/UserConfig.js.map +1 -0
  43. package/dist/db/entities/index.js +7 -2
  44. package/dist/db/entities/index.js.map +1 -1
  45. package/dist/db/repositories/GroupRepository.js +81 -0
  46. package/dist/db/repositories/GroupRepository.js.map +1 -0
  47. package/dist/db/repositories/ServerRepository.js +80 -0
  48. package/dist/db/repositories/ServerRepository.js.map +1 -0
  49. package/dist/db/repositories/SystemConfigRepository.js +64 -0
  50. package/dist/db/repositories/SystemConfigRepository.js.map +1 -0
  51. package/dist/db/repositories/UserConfigRepository.js +69 -0
  52. package/dist/db/repositories/UserConfigRepository.js.map +1 -0
  53. package/dist/db/repositories/UserRepository.js +68 -0
  54. package/dist/db/repositories/UserRepository.js.map +1 -0
  55. package/dist/db/repositories/index.js +6 -1
  56. package/dist/db/repositories/index.js.map +1 -1
  57. package/dist/index.js +12 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/middlewares/auth.js +1 -1
  60. package/dist/middlewares/auth.js.map +1 -1
  61. package/dist/middlewares/userContext.js +1 -1
  62. package/dist/middlewares/userContext.js.map +1 -1
  63. package/dist/models/User.js +29 -48
  64. package/dist/models/User.js.map +1 -1
  65. package/dist/routes/index.js +2 -1
  66. package/dist/routes/index.js.map +1 -1
  67. package/dist/scripts/migrate-to-database.js +5 -0
  68. package/dist/scripts/migrate-to-database.js.map +1 -0
  69. package/dist/server.js +2 -2
  70. package/dist/server.js.map +1 -1
  71. package/dist/services/dataService.js +62 -12
  72. package/dist/services/dataService.js.map +1 -1
  73. package/dist/services/groupService.js +87 -113
  74. package/dist/services/groupService.js.map +1 -1
  75. package/dist/services/keepAliveService.js +58 -0
  76. package/dist/services/keepAliveService.js.map +1 -0
  77. package/dist/services/mcpOAuthProvider.js +22 -28
  78. package/dist/services/mcpOAuthProvider.js.map +1 -1
  79. package/dist/services/mcpService.js +73 -92
  80. package/dist/services/mcpService.js.map +1 -1
  81. package/dist/services/oauthServerService.js +18 -12
  82. package/dist/services/oauthServerService.js.map +1 -1
  83. package/dist/services/oauthService.js +11 -10
  84. package/dist/services/oauthService.js.map +1 -1
  85. package/dist/services/oauthSettingsStore.js +17 -12
  86. package/dist/services/oauthSettingsStore.js.map +1 -1
  87. package/dist/services/openApiGeneratorService.js +6 -7
  88. package/dist/services/openApiGeneratorService.js.map +1 -1
  89. package/dist/services/registry.js +23 -15
  90. package/dist/services/registry.js.map +1 -1
  91. package/dist/services/services.js +2 -6
  92. package/dist/services/services.js.map +1 -1
  93. package/dist/services/sseService.js +20 -62
  94. package/dist/services/sseService.js.map +1 -1
  95. package/dist/services/userService.js +38 -45
  96. package/dist/services/userService.js.map +1 -1
  97. package/dist/utils/migration.js +184 -0
  98. package/dist/utils/migration.js.map +1 -0
  99. package/dist/utils/oauthBearer.js +3 -3
  100. package/dist/utils/oauthBearer.js.map +1 -1
  101. package/frontend/dist/assets/index-CHCrTZNY.css +1 -0
  102. package/frontend/dist/assets/index-Dno2pywv.js +251 -0
  103. package/frontend/dist/assets/index-Dno2pywv.js.map +1 -0
  104. package/frontend/dist/index.html +2 -2
  105. package/package.json +1 -1
  106. package/dist/services/dataServicex.js +0 -73
  107. package/dist/services/dataServicex.js.map +0 -1
  108. package/frontend/dist/assets/index-C_58ZhSt.css +0 -1
  109. package/frontend/dist/assets/index-qg3ysGil.js +0 -251
  110. package/frontend/dist/assets/index-qg3ysGil.js.map +0 -1
@@ -11,7 +11,7 @@
11
11
  * - Authorization flow handling
12
12
  */
13
13
  import { randomBytes } from 'node:crypto';
14
- import { loadSettings } from '../config/index.js';
14
+ import { getSystemConfigDao } from '../dao/index.js';
15
15
  import { initializeOAuthForServer, getRegisteredClient, removeRegisteredClient, fetchScopesFromServer, } from './oauthClientRegistration.js';
16
16
  import { clearOAuthData, loadServerConfig, mutateOAuthSettings, persistClientCredentials, persistTokens, updatePendingAuthorization, } from './oauthSettingsStore.js';
17
17
  // Import getServerByName to access ServerInfo
@@ -24,13 +24,22 @@ import { getServerByName } from './mcpService.js';
24
24
  * so the authorization flow requires external handling (e.g., via web UI).
25
25
  */
26
26
  export class MCPHubOAuthProvider {
27
- constructor(serverName, serverConfig) {
27
+ constructor(serverName, serverConfig, systemInstallBaseUrl) {
28
28
  this.serverName = serverName;
29
29
  this.serverConfig = serverConfig;
30
+ this._systemInstallBaseUrl = systemInstallBaseUrl;
31
+ }
32
+ /**
33
+ * Factory method to create an MCPHubOAuthProvider with async config loading
34
+ */
35
+ static async create(serverName, serverConfig) {
36
+ const systemConfigDao = getSystemConfigDao();
37
+ const systemConfig = await systemConfigDao.get();
38
+ const systemInstallBaseUrl = systemConfig?.install?.baseUrl;
39
+ return new MCPHubOAuthProvider(serverName, serverConfig, systemInstallBaseUrl);
30
40
  }
31
41
  getSystemInstallBaseUrl() {
32
- const settings = loadSettings();
33
- return settings.systemConfig?.install?.baseUrl;
42
+ return this._systemInstallBaseUrl;
34
43
  }
35
44
  sanitizeRedirectUri(input) {
36
45
  if (!input) {
@@ -163,16 +172,9 @@ export class MCPHubOAuthProvider {
163
172
  clientInformation() {
164
173
  const clientInfo = getRegisteredClient(this.serverName);
165
174
  if (!clientInfo) {
166
- // Try to use static client configuration from cached serverConfig first
167
- let serverConfig = this.serverConfig;
168
- // If cached config doesn't have clientId, reload from settings
169
- if (!serverConfig?.oauth?.clientId) {
170
- const storedConfig = loadServerConfig(this.serverName);
171
- if (storedConfig) {
172
- this.serverConfig = storedConfig;
173
- serverConfig = storedConfig;
174
- }
175
- }
175
+ // Try to use static client configuration from cached serverConfig
176
+ // Note: we only use cache here since this is a sync method
177
+ const serverConfig = this.serverConfig;
176
178
  // Try to use static client configuration from serverConfig
177
179
  if (serverConfig?.oauth?.clientId) {
178
180
  return {
@@ -219,16 +221,8 @@ export class MCPHubOAuthProvider {
219
221
  * Get stored OAuth tokens
220
222
  */
221
223
  tokens() {
222
- // Use cached config first, but reload if needed
223
- let serverConfig = this.serverConfig;
224
- // If cached config doesn't have tokens, try reloading
225
- if (!serverConfig?.oauth?.accessToken) {
226
- const storedConfig = loadServerConfig(this.serverName);
227
- if (storedConfig) {
228
- this.serverConfig = storedConfig;
229
- serverConfig = storedConfig;
230
- }
231
- }
224
+ // Use cached config only (tokens are updated via saveTokens which updates cache)
225
+ const serverConfig = this.serverConfig;
232
226
  if (!serverConfig?.oauth?.accessToken) {
233
227
  return undefined;
234
228
  }
@@ -348,7 +342,7 @@ export class MCPHubOAuthProvider {
348
342
  if (this._codeVerifier) {
349
343
  return this._codeVerifier;
350
344
  }
351
- const storedConfig = loadServerConfig(this.serverName);
345
+ const storedConfig = await loadServerConfig(this.serverName);
352
346
  const storedVerifier = storedConfig?.oauth?.pendingAuthorization?.codeVerifier;
353
347
  if (storedVerifier) {
354
348
  this.serverConfig = storedConfig || this.serverConfig;
@@ -362,7 +356,7 @@ export class MCPHubOAuthProvider {
362
356
  * This keeps stored configuration in sync and forces a fresh authorization flow.
363
357
  */
364
358
  async invalidateCredentials(scope) {
365
- const storedConfig = loadServerConfig(this.serverName);
359
+ const storedConfig = await loadServerConfig(this.serverName);
366
360
  if (!storedConfig?.oauth) {
367
361
  if (scope === 'verifier' || scope === 'all') {
368
362
  this._codeVerifier = undefined;
@@ -464,8 +458,8 @@ export const createOAuthProvider = async (serverName, serverConfig) => {
464
458
  console.warn(`Failed to initialize OAuth for server ${serverName}:`, error);
465
459
  // Continue anyway - the SDK might be able to handle it
466
460
  }
467
- // Create and return the provider
468
- const provider = new MCPHubOAuthProvider(serverName, serverConfig);
461
+ // Create and return the provider using the factory method
462
+ const provider = await MCPHubOAuthProvider.create(serverName, serverConfig);
469
463
  console.log(`Created OAuth provider for server: ${serverName}`);
470
464
  return provider;
471
465
  };
@@ -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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"}
@@ -5,7 +5,7 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
5
5
  import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
6
6
  import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
7
7
  import { StreamableHTTPClientTransport, } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
8
- import { loadSettings, expandEnvVars, replaceEnvVars, getNameSeparator } from '../config/index.js';
8
+ import { expandEnvVars, replaceEnvVars, getNameSeparator } from '../config/index.js';
9
9
  import config from '../config/index.js';
10
10
  import { getGroup } from './sseService.js';
11
11
  import { getServersInGroup, getServerConfigInGroup } from './groupService.js';
@@ -13,37 +13,11 @@ import { saveToolsAsVectorEmbeddings, searchToolsByVector } from './vectorSearch
13
13
  import { OpenAPIClient } from '../clients/openapi.js';
14
14
  import { RequestContextService } from './requestContextService.js';
15
15
  import { getDataService } from './services.js';
16
- import { getServerDao } from '../dao/index.js';
16
+ import { getServerDao, getSystemConfigDao } from '../dao/index.js';
17
17
  import { initializeAllOAuthClients } from './oauthService.js';
18
18
  import { createOAuthProvider } from './mcpOAuthProvider.js';
19
19
  const servers = {};
20
- const serverDao = getServerDao();
21
- // Helper function to set up keep-alive ping for SSE connections
22
- const setupKeepAlive = (serverInfo, serverConfig) => {
23
- // Only set up keep-alive for SSE connections
24
- if (!(serverInfo.transport instanceof SSEClientTransport)) {
25
- return;
26
- }
27
- // Clear any existing interval first
28
- if (serverInfo.keepAliveIntervalId) {
29
- clearInterval(serverInfo.keepAliveIntervalId);
30
- }
31
- // Use configured interval or default to 60 seconds for SSE
32
- const interval = serverConfig.keepAliveInterval || 60000;
33
- serverInfo.keepAliveIntervalId = setInterval(async () => {
34
- try {
35
- if (serverInfo.client && serverInfo.status === 'connected') {
36
- await serverInfo.client.ping();
37
- console.log(`Keep-alive ping successful for server: ${serverInfo.name}`);
38
- }
39
- }
40
- catch (error) {
41
- console.warn(`Keep-alive ping failed for server ${serverInfo.name}:`, error);
42
- // TODO Consider handling reconnection logic here if needed
43
- }
44
- }, interval);
45
- console.log(`Keep-alive ping set up for server ${serverInfo.name} with interval ${interval / 1000} seconds`);
46
- };
20
+ import { setupClientKeepAlive } from './keepAliveService.js';
47
21
  export const initUpstreamServers = async () => {
48
22
  // Initialize OAuth clients for servers with dynamic registration
49
23
  await initializeAllOAuthClients();
@@ -178,19 +152,20 @@ export const createTransportFromConfig = async (name, conf) => {
178
152
  ...replaceEnvVars(conf.env || {}),
179
153
  };
180
154
  env['PATH'] = expandEnvVars(process.env.PATH) || '';
181
- const settings = loadSettings();
155
+ const systemConfigDao = getSystemConfigDao();
156
+ const systemConfig = await systemConfigDao.get();
182
157
  // Add UV_DEFAULT_INDEX and npm_config_registry if needed
183
- if (settings.systemConfig?.install?.pythonIndexUrl &&
158
+ if (systemConfig?.install?.pythonIndexUrl &&
184
159
  (conf.command === 'uvx' || conf.command === 'uv' || conf.command === 'python')) {
185
- env['UV_DEFAULT_INDEX'] = settings.systemConfig.install.pythonIndexUrl;
160
+ env['UV_DEFAULT_INDEX'] = systemConfig.install.pythonIndexUrl;
186
161
  }
187
- if (settings.systemConfig?.install?.npmRegistry &&
162
+ if (systemConfig?.install?.npmRegistry &&
188
163
  (conf.command === 'npm' ||
189
164
  conf.command === 'npx' ||
190
165
  conf.command === 'pnpm' ||
191
166
  conf.command === 'yarn' ||
192
167
  conf.command === 'node')) {
193
- env['npm_config_registry'] = settings.systemConfig.install.npmRegistry;
168
+ env['npm_config_registry'] = systemConfig.install.npmRegistry;
194
169
  }
195
170
  // Expand environment variables in command
196
171
  transport = new StdioClientTransport({
@@ -237,7 +212,7 @@ const callToolWithReconnect = async (serverInfo, toolParams, options, maxRetries
237
212
  }
238
213
  serverInfo.client.close();
239
214
  serverInfo.transport.close();
240
- const server = await serverDao.findById(serverInfo.name);
215
+ const server = await getServerDao().findById(serverInfo.name);
241
216
  if (!server) {
242
217
  throw new Error(`Server configuration not found for: ${serverInfo.name}`);
243
218
  }
@@ -300,7 +275,7 @@ const callToolWithReconnect = async (serverInfo, toolParams, options, maxRetries
300
275
  };
301
276
  // Initialize MCP server clients
302
277
  export const initializeClientsFromSettings = async (isInit, serverName) => {
303
- const allServers = await serverDao.findAll();
278
+ const allServers = await getServerDao().findAll();
304
279
  const existingServerInfos = serverInfos;
305
280
  const nextServerInfos = [];
306
281
  try {
@@ -488,8 +463,8 @@ export const initializeClientsFromSettings = async (isInit, serverName) => {
488
463
  if (!dataError) {
489
464
  serverInfo.status = 'connected';
490
465
  serverInfo.error = null;
491
- // Set up keep-alive ping for SSE connections
492
- setupKeepAlive(serverInfo, expandedConf);
466
+ // Set up keep-alive ping for SSE connections via shared service
467
+ setupClientKeepAlive(serverInfo, expandedConf).catch((e) => console.warn(`Keepalive setup failed for ${name}:`, e));
493
468
  }
494
469
  else {
495
470
  serverInfo.status = 'disconnected';
@@ -534,7 +509,7 @@ export const registerAllTools = async (isInit, serverName) => {
534
509
  };
535
510
  // Get all server information
536
511
  export const getServersInfo = async () => {
537
- const allServers = await serverDao.findAll();
512
+ const allServers = await getServerDao().findAll();
538
513
  const dataService = getDataService();
539
514
  const filterServerInfos = dataService.filterData
540
515
  ? dataService.filterData(serverInfos)
@@ -628,7 +603,7 @@ export const reconnectServer = async (serverName) => {
628
603
  };
629
604
  // Filter tools by server configuration
630
605
  const filterToolsByConfig = async (serverName, tools) => {
631
- const serverConfig = await serverDao.findById(serverName);
606
+ const serverConfig = await getServerDao().findById(serverName);
632
607
  if (!serverConfig || !serverConfig.tools) {
633
608
  // If no tool configuration exists, all tools are enabled by default
634
609
  return tools;
@@ -646,7 +621,7 @@ const getServerByTool = (toolName) => {
646
621
  // Add new server
647
622
  export const addServer = async (name, config) => {
648
623
  const server = { name, ...config };
649
- const result = await serverDao.create(server);
624
+ const result = await getServerDao().create(server);
650
625
  if (result) {
651
626
  return { success: true, message: 'Server added successfully' };
652
627
  }
@@ -656,7 +631,7 @@ export const addServer = async (name, config) => {
656
631
  };
657
632
  // Remove server
658
633
  export const removeServer = async (name) => {
659
- const result = await serverDao.delete(name);
634
+ const result = await getServerDao().delete(name);
660
635
  if (!result) {
661
636
  return { success: false, message: 'Failed to remove server' };
662
637
  }
@@ -666,23 +641,22 @@ export const removeServer = async (name) => {
666
641
  // Add or update server (supports overriding existing servers for DXT)
667
642
  export const addOrUpdateServer = async (name, config, allowOverride = false) => {
668
643
  try {
669
- const exists = await serverDao.exists(name);
644
+ const exists = await getServerDao().exists(name);
670
645
  if (exists && !allowOverride) {
671
646
  return { success: false, message: 'Server name already exists' };
672
647
  }
673
- // If overriding and this is a DXT server (stdio type with file paths),
674
- // we might want to clean up old files in the future
675
- if (exists && config.type === 'stdio') {
676
- // Close existing server connections
648
+ // If overriding an existing server, close connections and clear keep-alive timers
649
+ if (exists) {
650
+ // Close existing server connections (clears keep-alive intervals as well)
677
651
  closeServer(name);
678
652
  // Remove from server infos
679
653
  serverInfos = serverInfos.filter((serverInfo) => serverInfo.name !== name);
680
654
  }
681
655
  if (exists) {
682
- await serverDao.update(name, config);
656
+ await getServerDao().update(name, config);
683
657
  }
684
658
  else {
685
- await serverDao.create({ name, ...config });
659
+ await getServerDao().create({ name, ...config });
686
660
  }
687
661
  const action = exists ? 'updated' : 'added';
688
662
  return { success: true, message: `Server ${action} successfully` };
@@ -711,7 +685,7 @@ function closeServer(name) {
711
685
  // Toggle server enabled status
712
686
  export const toggleServerStatus = async (name, enabled) => {
713
687
  try {
714
- await serverDao.setEnabled(name, enabled);
688
+ await getServerDao().setEnabled(name, enabled);
715
689
  // If disabling, disconnect the server and remove from active servers
716
690
  if (!enabled) {
717
691
  closeServer(name);
@@ -745,7 +719,7 @@ export const handleListToolsRequest = async (_, extra) => {
745
719
  let availableServers = serverInfos.filter((server) => server.status === 'connected' && server.enabled !== false);
746
720
  // If a target group is specified, filter servers to only those in the group
747
721
  if (targetGroup) {
748
- const serversInGroup = getServersInGroup(targetGroup);
722
+ const serversInGroup = await getServersInGroup(targetGroup);
749
723
  if (serversInGroup && serversInGroup.length > 0) {
750
724
  availableServers = availableServers.filter((server) => serversInGroup.includes(server.name));
751
725
  }
@@ -807,26 +781,33 @@ Available servers: ${serversList}`,
807
781
  ],
808
782
  };
809
783
  }
810
- const allServerInfos = getDataService()
811
- .filterData(serverInfos)
812
- .filter((serverInfo) => {
784
+ // Need to filter servers based on group asynchronously
785
+ const filteredServerInfos = [];
786
+ for (const serverInfo of getDataService().filterData(serverInfos)) {
813
787
  if (serverInfo.enabled === false)
814
- return false;
815
- if (!group)
816
- return true;
817
- const serversInGroup = getServersInGroup(group);
818
- if (!serversInGroup || serversInGroup.length === 0)
819
- return serverInfo.name === group;
820
- return serversInGroup.includes(serverInfo.name);
821
- });
788
+ continue;
789
+ if (!group) {
790
+ filteredServerInfos.push(serverInfo);
791
+ continue;
792
+ }
793
+ const serversInGroup = await getServersInGroup(group);
794
+ if (!serversInGroup || serversInGroup.length === 0) {
795
+ if (serverInfo.name === group)
796
+ filteredServerInfos.push(serverInfo);
797
+ continue;
798
+ }
799
+ if (serversInGroup.includes(serverInfo.name)) {
800
+ filteredServerInfos.push(serverInfo);
801
+ }
802
+ }
822
803
  const allTools = [];
823
- for (const serverInfo of allServerInfos) {
804
+ for (const serverInfo of filteredServerInfos) {
824
805
  if (serverInfo.tools && serverInfo.tools.length > 0) {
825
806
  // Filter tools based on server configuration
826
807
  let enabledTools = await filterToolsByConfig(serverInfo.name, serverInfo.tools);
827
808
  // If this is a group request, apply group-level tool filtering
828
809
  if (group) {
829
- const serverConfig = getServerConfigInGroup(group, serverInfo.name);
810
+ const serverConfig = await getServerConfigInGroup(group, serverInfo.name);
830
811
  if (serverConfig && serverConfig.tools !== 'all' && Array.isArray(serverConfig.tools)) {
831
812
  // Filter tools based on group configuration
832
813
  const allowedToolNames = serverConfig.tools.map((toolName) => `${serverInfo.name}${getNameSeparator()}${toolName}`);
@@ -834,7 +815,7 @@ Available servers: ${serversList}`,
834
815
  }
835
816
  }
836
817
  // Apply custom descriptions from server configuration
837
- const serverConfig = await serverDao.findById(serverInfo.name);
818
+ const serverConfig = await getServerDao().findById(serverInfo.name);
838
819
  const toolsWithCustomDescriptions = enabledTools.map((tool) => {
839
820
  const toolConfig = serverConfig?.tools?.[tool.name];
840
821
  return {
@@ -877,10 +858,10 @@ export const handleCallToolRequest = async (request, extra) => {
877
858
  // If group is in format $smart/{group}, filter servers to that group
878
859
  if (group?.startsWith('$smart/')) {
879
860
  const targetGroup = group.substring(7);
880
- const serversInGroup = getServersInGroup(targetGroup);
861
+ const serversInGroup = await getServersInGroup(targetGroup);
881
862
  if (serversInGroup !== undefined && serversInGroup !== null) {
882
863
  servers = serversInGroup;
883
- if (servers.length > 0) {
864
+ if (servers && servers.length > 0) {
884
865
  console.log(`Filtering search to servers in group "${targetGroup}": ${servers.join(', ')}`);
885
866
  }
886
867
  else {
@@ -905,7 +886,7 @@ export const handleCallToolRequest = async (request, extra) => {
905
886
  const enabledTools = await filterToolsByConfig(server.name, [actualTool]);
906
887
  if (enabledTools.length > 0) {
907
888
  // Apply custom description from configuration
908
- const serverConfig = await serverDao.findById(server.name);
889
+ const serverConfig = await getServerDao().findById(server.name);
909
890
  const toolConfig = serverConfig?.tools?.[actualTool.name];
910
891
  // Return the actual tool info from serverInfos with custom description
911
892
  return {
@@ -1180,23 +1161,30 @@ export const handleListPromptsRequest = async (_, extra) => {
1180
1161
  const sessionId = extra.sessionId || '';
1181
1162
  const group = getGroup(sessionId);
1182
1163
  console.log(`Handling ListPromptsRequest for group: ${group}`);
1183
- const allServerInfos = getDataService()
1184
- .filterData(serverInfos)
1185
- .filter((serverInfo) => {
1164
+ // Need to filter servers based on group asynchronously
1165
+ const filteredServerInfos = [];
1166
+ for (const serverInfo of getDataService().filterData(serverInfos)) {
1186
1167
  if (serverInfo.enabled === false)
1187
- return false;
1188
- if (!group)
1189
- return true;
1190
- const serversInGroup = getServersInGroup(group);
1191
- if (!serversInGroup || serversInGroup.length === 0)
1192
- return serverInfo.name === group;
1193
- return serversInGroup.includes(serverInfo.name);
1194
- });
1168
+ continue;
1169
+ if (!group) {
1170
+ filteredServerInfos.push(serverInfo);
1171
+ continue;
1172
+ }
1173
+ const serversInGroup = await getServersInGroup(group);
1174
+ if (!serversInGroup || serversInGroup.length === 0) {
1175
+ if (serverInfo.name === group)
1176
+ filteredServerInfos.push(serverInfo);
1177
+ continue;
1178
+ }
1179
+ if (serversInGroup.includes(serverInfo.name)) {
1180
+ filteredServerInfos.push(serverInfo);
1181
+ }
1182
+ }
1195
1183
  const allPrompts = [];
1196
- for (const serverInfo of allServerInfos) {
1184
+ for (const serverInfo of filteredServerInfos) {
1197
1185
  if (serverInfo.prompts && serverInfo.prompts.length > 0) {
1198
1186
  // Filter prompts based on server configuration
1199
- const serverConfig = await serverDao.findById(serverInfo.name);
1187
+ const serverConfig = await getServerDao().findById(serverInfo.name);
1200
1188
  let enabledPrompts = serverInfo.prompts;
1201
1189
  if (serverConfig && serverConfig.prompts) {
1202
1190
  enabledPrompts = serverInfo.prompts.filter((prompt) => {
@@ -1207,7 +1195,7 @@ export const handleListPromptsRequest = async (_, extra) => {
1207
1195
  }
1208
1196
  // If this is a group request, apply group-level prompt filtering
1209
1197
  if (group) {
1210
- const serverConfigInGroup = getServerConfigInGroup(group, serverInfo.name);
1198
+ const serverConfigInGroup = await getServerConfigInGroup(group, serverInfo.name);
1211
1199
  if (serverConfigInGroup &&
1212
1200
  serverConfigInGroup.tools !== 'all' &&
1213
1201
  Array.isArray(serverConfigInGroup.tools)) {
@@ -1235,16 +1223,9 @@ export const createMcpServer = (name, version, group) => {
1235
1223
  // Determine server name based on routing type
1236
1224
  let serverName = name;
1237
1225
  if (group) {
1238
- // Check if it's a group or a single server
1239
- const serversInGroup = getServersInGroup(group);
1240
- if (!serversInGroup || serversInGroup.length === 0) {
1241
- // Single server routing
1242
- serverName = `${name}_${group}`;
1243
- }
1244
- else {
1245
- // Group routing
1246
- serverName = `${name}_${group}_group`;
1247
- }
1226
+ // For createMcpServer we use sync approach since it's called synchronously
1227
+ // The actual group validation happens at request time
1228
+ serverName = `${name}_${group}_group`;
1248
1229
  }
1249
1230
  // If no group, use default name (global routing)
1250
1231
  const server = new Server({ name: serverName, version }, { capabilities: { tools: {}, prompts: {}, resources: {} } });