@loop_ouroboros/mcp-hub-lite 1.2.4 → 1.2.6

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 (41) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
  3. package/dist/server/src/api/web/hub-tools.js +15 -0
  4. package/dist/server/src/api/web/mcp-status.d.ts.map +1 -1
  5. package/dist/server/src/api/web/mcp-status.js +4 -0
  6. package/dist/server/src/cli/commands/status.js +13 -3
  7. package/dist/server/src/cli/commands/tool-use.d.ts +5 -1
  8. package/dist/server/src/cli/commands/tool-use.d.ts.map +1 -1
  9. package/dist/server/src/cli/commands/tool-use.js +27 -4
  10. package/dist/server/src/cli/server.d.ts +2 -0
  11. package/dist/server/src/cli/server.d.ts.map +1 -1
  12. package/dist/server/src/cli/server.js +2 -0
  13. package/dist/server/src/models/system-tools.constants.d.ts +6 -2
  14. package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
  15. package/dist/server/src/models/system-tools.constants.js +3 -1
  16. package/dist/server/src/services/connection/connection-manager.d.ts +6 -0
  17. package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
  18. package/dist/server/src/services/connection/connection-manager.js +23 -0
  19. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
  20. package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +28 -1
  21. package/dist/server/src/services/gateway/tool-list-generator.js +1 -1
  22. package/dist/server/src/services/hub-tools/instance-selector.d.ts +8 -1
  23. package/dist/server/src/services/hub-tools/instance-selector.d.ts.map +1 -1
  24. package/dist/server/src/services/hub-tools/instance-selector.js +24 -10
  25. package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
  26. package/dist/server/src/services/hub-tools/resource-generator.js +17 -13
  27. package/dist/server/src/services/hub-tools/server-selector.d.ts +2 -2
  28. package/dist/server/src/services/hub-tools/server-selector.d.ts.map +1 -1
  29. package/dist/server/src/services/hub-tools/server-selector.js +4 -3
  30. package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
  31. package/dist/server/src/services/hub-tools/system-tool-definitions.js +23 -3
  32. package/dist/server/src/services/hub-tools.service.d.ts +29 -7
  33. package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
  34. package/dist/server/src/services/hub-tools.service.js +96 -36
  35. package/dist/server/src/services/system-tool-handler.d.ts.map +1 -1
  36. package/dist/server/src/services/system-tool-handler.js +21 -8
  37. package/dist/server/src/utils/name-converter.d.ts.map +1 -1
  38. package/dist/server/src/utils/name-converter.js +2 -0
  39. package/dist/server/tests/unit/services/hub-tools/instance-selector.test.js +21 -16
  40. package/dist/server/tests/unit/services/hub-tools.service.test.js +42 -40
  41. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [1.2.6] - 2026-04-29
6
+
7
+ ### Hub Tools
8
+
9
+ - use runtime connected status for instance selection
10
+ - clarify instance filtering comment
11
+ - fix listMcpResources returning incomplete server resources by using two-pass approach to check all instances connection status
12
+
13
+ ### Utils
14
+
15
+ - add null check to normalizeToolName
16
+
17
+ ---
18
+
19
+ ## [1.2.5] - 2026-04-28
20
+
21
+ ### Hub Tools
22
+
23
+ - enhance hub-tools system with improved tool handling
24
+ - add list_tags tool constants and update CLAUDE.md docs
25
+ - add comprehensive use guide documentation
26
+ - improve default server description text
27
+ - remove stale cache in listResources
28
+ - clarify instance filtering comment
29
+ - fix listMcpResources returning incomplete server resources by using two-pass approach to check all instances connection status
30
+ - align resource generation logic with /web/mcp/status API behavior
31
+
32
+ ### Utils
33
+
34
+ - add null check to normalizeToolName
35
+
36
+ ---
37
+
5
38
  ## [1.2.4] - 2026-04-25
6
39
 
7
40
  ### Frontend
@@ -1 +1 @@
1
- {"version":3,"file":"hub-tools.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/hub-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAoB1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAsJ/D"}
1
+ {"version":3,"file":"hub-tools.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/hub-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAqB1C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAuK/D"}
@@ -77,6 +77,21 @@ export async function webHubToolsRoutes(fastify) {
77
77
  });
78
78
  }
79
79
  });
80
+ // GET /web/hub-tools/servers/:serverName/tags - List all instance tags for a specific server
81
+ fastify.get('/web/hub-tools/servers/:serverName/tags', async (request, reply) => {
82
+ try {
83
+ const { serverName } = request.params;
84
+ const params = { serverName };
85
+ const result = await hubToolsService.listTags(params);
86
+ return result;
87
+ }
88
+ catch (error) {
89
+ return reply.code(404).send({
90
+ error: 'Server not found',
91
+ message: error instanceof Error ? error.message : 'Unknown error'
92
+ });
93
+ }
94
+ });
80
95
  // GET /web/hub-tools/servers/:serverName/tools/:toolName - Get specific tool details
81
96
  fastify.get('/web/hub-tools/servers/:serverName/tools/:toolName', async (request, reply) => {
82
97
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-status.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/mcp-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,iBAuKhE"}
1
+ {"version":3,"file":"mcp-status.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/mcp-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,eAAe,iBA6KhE"}
@@ -43,6 +43,8 @@ export async function webMcpStatusRoutes(fastify) {
43
43
  id: server.name,
44
44
  name: server.name,
45
45
  type: server.config.template.type,
46
+ displayName: undefined,
47
+ tags: {},
46
48
  status: {
47
49
  connected: false,
48
50
  lastCheck: Date.now(),
@@ -60,6 +62,8 @@ export async function webMcpStatusRoutes(fastify) {
60
62
  id: instance.id || '',
61
63
  name: server.name,
62
64
  type: resolvedConfig?.type || server.config.template.type,
65
+ displayName: instance.displayName,
66
+ tags: instance.tags,
63
67
  status: mcpConnectionManager.getStatus(server.name, instance.index ?? 0) || {
64
68
  connected: false,
65
69
  lastCheck: Date.now(),
@@ -97,16 +97,24 @@ function printFormattedStatus(status) {
97
97
  let maxNameLen = 'Server Name'.length;
98
98
  let maxTypeLen = 'Type'.length;
99
99
  const maxStatusLen = 'Disconnected'.length;
100
+ let maxDisplayNameLen = 'DisplayName'.length;
101
+ let maxTagsLen = 'Tags'.length;
100
102
  for (const server of servers) {
101
103
  maxNameLen = Math.max(maxNameLen, (server.name || '').length);
102
104
  maxTypeLen = Math.max(maxTypeLen, (server.type || '').length);
105
+ const displayName = server.displayName || '';
106
+ const tags = JSON.stringify(server.tags || {});
107
+ maxDisplayNameLen = Math.max(maxDisplayNameLen, displayName.length);
108
+ maxTagsLen = Math.max(maxTagsLen, tags.length);
103
109
  }
104
110
  // Simple table without complex borders
105
111
  const headerName = 'Server Name'.padEnd(maxNameLen);
106
112
  const headerType = 'Type'.padEnd(maxTypeLen);
107
113
  const headerStatus = 'Status'.padEnd(maxStatusLen);
108
- console.log(`${cyan}${headerName} ${headerType} ${headerStatus} Tools Resources${reset}`);
109
- console.log(`${dim}${''.repeat(maxNameLen + maxTypeLen + maxStatusLen + 20)}${reset}`);
114
+ const headerDisplayName = 'DisplayName'.padEnd(maxDisplayNameLen);
115
+ const headerTags = 'Tags'.padEnd(maxTagsLen);
116
+ console.log(`${cyan}${headerName} ${headerType} ${headerStatus} Tools Resources ${headerDisplayName} ${headerTags}${reset}`);
117
+ console.log(`${dim}${'─'.repeat(maxNameLen + maxTypeLen + maxStatusLen + 26 + maxDisplayNameLen + maxTagsLen)}${reset}`);
110
118
  for (const server of servers) {
111
119
  const name = (server.name || '').padEnd(maxNameLen);
112
120
  const type = (server.type || '').padEnd(maxTypeLen);
@@ -115,7 +123,9 @@ function printFormattedStatus(status) {
115
123
  : `${red}Disconnected${reset}`.padEnd(maxStatusLen + 9);
116
124
  const tools = server.toolsCount.toString().padStart(5);
117
125
  const resources = server.resourcesCount.toString().padStart(9);
118
- console.log(`${name} ${type} ${statusText} ${tools} ${resources}`);
126
+ const displayName = (server.displayName || '').padEnd(maxDisplayNameLen);
127
+ const tags = JSON.stringify(server.tags || {}).padEnd(maxTagsLen);
128
+ console.log(`${name} ${type} ${statusText} ${tools} ${resources} ${displayName} ${tags}`);
119
129
  if (server.error) {
120
130
  console.log(` ${red}Error: ${server.error}${reset}`);
121
131
  }
@@ -3,7 +3,7 @@ import { Command } from 'commander';
3
3
  * CLI command for dynamic MCP server tool operations via API.
4
4
  *
5
5
  * This command provides a simplified CLI interface for interacting with MCP server tools,
6
- * supporting four actions: list-servers, list-tools, get-tool, and call-tool. It wraps
6
+ * supporting five actions: list-servers, list-tools, list-tags, get-tool, and call-tool. It wraps
7
7
  * the HTTP API endpoints and requires the MCP Hub Lite server to be running.
8
8
  *
9
9
  * ## Command Format
@@ -21,6 +21,7 @@ import { Command } from 'commander';
21
21
  *
22
22
  * - `list-servers` - List all connected MCP servers
23
23
  * - `list-tools` - List all tools from the specified server
24
+ * - `list-tags` - List all instance tags for a specific MCP server
24
25
  * - `get-tool` - Get complete schema for a specific tool (requires --tool)
25
26
  * - `call-tool` - Call a tool on the specified server (requires --tool)
26
27
  *
@@ -55,6 +56,9 @@ import { Command } from 'commander';
55
56
  * # List third-party server tools
56
57
  * mcp-hub-lite tool-use list-tools --server baidu-search
57
58
  *
59
+ * # List instance tags for a server
60
+ * mcp-hub-lite tool-use list-tags --server chrome-devtools
61
+ *
58
62
  * # Get system tool schema
59
63
  * mcp-hub-lite tool-use get-tool --tool list_tools --server mcp-hub-lite
60
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"tool-use.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2FG;AACH,eAAO,MAAM,cAAc,SAwLvB,CAAC"}
1
+ {"version":3,"file":"tool-use.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+FG;AACH,eAAO,MAAM,cAAc,SAkNvB,CAAC"}
@@ -4,7 +4,7 @@ import { getServerStatus } from '../server.js';
4
4
  * CLI command for dynamic MCP server tool operations via API.
5
5
  *
6
6
  * This command provides a simplified CLI interface for interacting with MCP server tools,
7
- * supporting four actions: list-servers, list-tools, get-tool, and call-tool. It wraps
7
+ * supporting five actions: list-servers, list-tools, list-tags, get-tool, and call-tool. It wraps
8
8
  * the HTTP API endpoints and requires the MCP Hub Lite server to be running.
9
9
  *
10
10
  * ## Command Format
@@ -22,6 +22,7 @@ import { getServerStatus } from '../server.js';
22
22
  *
23
23
  * - `list-servers` - List all connected MCP servers
24
24
  * - `list-tools` - List all tools from the specified server
25
+ * - `list-tags` - List all instance tags for a specific MCP server
25
26
  * - `get-tool` - Get complete schema for a specific tool (requires --tool)
26
27
  * - `call-tool` - Call a tool on the specified server (requires --tool)
27
28
  *
@@ -56,6 +57,9 @@ import { getServerStatus } from '../server.js';
56
57
  * # List third-party server tools
57
58
  * mcp-hub-lite tool-use list-tools --server baidu-search
58
59
  *
60
+ * # List instance tags for a server
61
+ * mcp-hub-lite tool-use list-tags --server chrome-devtools
62
+ *
59
63
  * # Get system tool schema
60
64
  * mcp-hub-lite tool-use get-tool --tool list_tools --server mcp-hub-lite
61
65
  *
@@ -93,8 +97,8 @@ import { getServerStatus } from '../server.js';
93
97
  * @returns {Command} The configured mcp-tool-use command instance for registration with Commander.js
94
98
  */
95
99
  export const toolUseCommand = new Command('tool-use')
96
- .description('Manage MCP server tools via API (list-servers, list-tools, get-tool, call-tool)')
97
- .argument('<action>', 'Action: list-servers, list-tools, get-tool, call-tool')
100
+ .description('Manage MCP server tools via API (list-servers, list-tools, list-tags, get-tool, call-tool)')
101
+ .argument('<action>', 'Action: list-servers, list-tools, list-tags, get-tool, call-tool')
98
102
  .option('--server <serverName>', 'Server name to target (omit or empty for system tools)')
99
103
  .option('--tool <toolName>', 'Tool name (required for get-tool and call-tool actions)')
100
104
  .option('--args <json>', 'JSON string of tool arguments, or combined JSON with server/tool/args fields')
@@ -111,6 +115,9 @@ Examples:
111
115
  # List third-party server tools
112
116
  mcp-hub-lite tool-use list-tools --server baidu-search
113
117
 
118
+ # List instance tags for a server
119
+ mcp-hub-lite tool-use list-tags --server chrome-devtools
120
+
114
121
  # Get system tool schema
115
122
  mcp-hub-lite tool-use get-tool --tool list_tools
116
123
 
@@ -208,6 +215,22 @@ Examples:
208
215
  console.log(JSON.stringify(result, null, 2));
209
216
  break;
210
217
  }
218
+ case 'list-tags': {
219
+ if (!effectiveServer || effectiveServer === defaultServer) {
220
+ effectiveServer = 'mcp-hub-lite';
221
+ }
222
+ const tagsParam = options.tags ? `?tags=${encodeURIComponent(options.tags)}` : '';
223
+ const response = await fetch(`${baseUrl}/web/hub-tools/servers/${effectiveServer}/tags${tagsParam}`, {
224
+ headers: { Accept: 'application/json' }
225
+ });
226
+ if (!response.ok) {
227
+ const error = await response.json().catch(() => ({ message: response.statusText }));
228
+ throw new Error(error.message || `API error: ${response.status}`);
229
+ }
230
+ const result = await response.json();
231
+ console.log(JSON.stringify(result, null, 2));
232
+ break;
233
+ }
211
234
  case 'call-tool': {
212
235
  if (!effectiveTool) {
213
236
  console.error('Error: toolName is required for call-tool action');
@@ -242,7 +265,7 @@ Examples:
242
265
  }
243
266
  default: {
244
267
  console.error(`Unknown action: ${action}`);
245
- console.error('Valid actions: list-servers, list-tools, get-tool, call-tool');
268
+ console.error('Valid actions: list-servers, list-tools, list-tags, get-tool, call-tool');
246
269
  process.exit(1);
247
270
  }
248
271
  }
@@ -10,6 +10,8 @@ interface ServerOptions {
10
10
  interface McpServerStatus {
11
11
  name: string;
12
12
  type: string;
13
+ displayName?: string;
14
+ tags?: Record<string, string>;
13
15
  connected: boolean;
14
16
  toolsCount: number;
15
17
  resourcesCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/cli/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,iBAO5C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0CjF;AAgED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW;;;;;;;;;;;;;;;;;;;KAUhC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,yBAAyB,EAAE,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAC;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/cli/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvE;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,iBAO5C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0CjF;AAoED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,WAAW;;;;;;;;;;;;;;;;;;;KAUhC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAC/C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,yBAAyB,EAAE,QAAQ,GAAG,aAAa,GAAG,kBAAkB,CAAC;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CA0Df;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkBvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB1E"}
@@ -173,6 +173,8 @@ async function fetchRuntimeStatus(host, port) {
173
173
  const result = statusData.map((item) => ({
174
174
  name: item.name,
175
175
  type: item.type,
176
+ displayName: item.displayName,
177
+ tags: item.tags,
176
178
  connected: item.status.connected,
177
179
  toolsCount: item.status.toolsCount,
178
180
  resourcesCount: item.status.resourcesCount,
@@ -32,17 +32,21 @@ export interface UpdateServerDescriptionParams {
32
32
  serverName: string;
33
33
  description: string;
34
34
  }
35
- export type SystemToolArgs = ListServersParams | ListToolsInServerParams | GetToolParams | CallToolParams | UpdateServerDescriptionParams;
35
+ export interface ListTagsParams {
36
+ serverName: string;
37
+ }
38
+ export type SystemToolArgs = ListServersParams | ListToolsInServerParams | GetToolParams | CallToolParams | UpdateServerDescriptionParams | ListTagsParams;
36
39
  export declare const LIST_SERVERS_TOOL = "list_servers";
37
40
  export declare const LIST_TOOLS_TOOL = "list_tools";
38
41
  export declare const GET_TOOL_TOOL = "get_tool";
39
42
  export declare const CALL_TOOL_TOOL = "call_tool";
40
43
  export declare const UPDATE_SERVER_DESCRIPTION_TOOL = "update_server_description";
44
+ export declare const LIST_TAGS_TOOL = "list_tags";
41
45
  /**
42
46
  * List of all system tool names
43
47
  * This array is used to identify system tools across the application
44
48
  */
45
- export declare const SYSTEM_TOOL_NAMES: readonly ["list_servers", "list_tools", "get_tool", "call_tool", "update_server_description"];
49
+ export declare const SYSTEM_TOOL_NAMES: readonly ["list_servers", "list_tools", "get_tool", "call_tool", "update_server_description", "list_tags"];
46
50
  /**
47
51
  * Type definition for system tool names
48
52
  * Provides type safety when working with system tool names
@@ -1 +1 @@
1
- {"version":3,"file":"system-tools.constants.d.ts","sourceRoot":"","sources":["../../../../src/models/system-tools.constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,6BAA6B,CAAC;AAGlC,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,iBAAiB,+FAMpB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAC"}
1
+ {"version":3,"file":"system-tools.constants.d.ts","sourceRoot":"","sources":["../../../../src/models/system-tools.constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC;CACH;AAED,MAAM,WAAW,6BAA6B;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,6BAA6B,GAC7B,cAAc,CAAC;AAGnB,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,aAAa,aAAa,CAAC;AACxC,eAAO,MAAM,cAAc,cAAc,CAAC;AAC1C,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4GAOpB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE;;;GAGG;AACH,eAAO,MAAM,mBAAmB,iBAAiB,CAAC"}
@@ -8,6 +8,7 @@ export const LIST_TOOLS_TOOL = 'list_tools';
8
8
  export const GET_TOOL_TOOL = 'get_tool';
9
9
  export const CALL_TOOL_TOOL = 'call_tool';
10
10
  export const UPDATE_SERVER_DESCRIPTION_TOOL = 'update_server_description';
11
+ export const LIST_TAGS_TOOL = 'list_tags';
11
12
  /**
12
13
  * List of all system tool names
13
14
  * This array is used to identify system tools across the application
@@ -17,7 +18,8 @@ export const SYSTEM_TOOL_NAMES = [
17
18
  LIST_TOOLS_TOOL,
18
19
  GET_TOOL_TOOL,
19
20
  CALL_TOOL_TOOL,
20
- UPDATE_SERVER_DESCRIPTION_TOOL
21
+ UPDATE_SERVER_DESCRIPTION_TOOL,
22
+ LIST_TAGS_TOOL
21
23
  ];
22
24
  // Individual gateway server name constant
23
25
  /**
@@ -475,6 +475,12 @@ export declare class McpConnectionManager {
475
475
  * @returns ServerStatus or undefined if not connected
476
476
  */
477
477
  getStatusByName(name: string): ServerStatus | undefined;
478
+ /**
479
+ * Gets all connected instance indexes for a server.
480
+ * @param serverName - Server name
481
+ * @returns Array of connected instance indexes, empty if none connected
482
+ */
483
+ getConnectedIndexes(serverName: string): number[];
478
484
  /**
479
485
  * Gets the composite key of the first connected instance for a server name.
480
486
  * This is a backward compatibility method for code that expects getServerIdByName.
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -995,6 +995,29 @@ export class McpConnectionManager {
995
995
  }
996
996
  return undefined;
997
997
  }
998
+ /**
999
+ * Gets all connected instance indexes for a server.
1000
+ * @param serverName - Server name
1001
+ * @returns Array of connected instance indexes, empty if none connected
1002
+ */
1003
+ getConnectedIndexes(serverName) {
1004
+ // Directly iterate instances via hubManager, check each via getStatus
1005
+ // This bypasses serverNameToCompositeKeys which may have stale/missing entries
1006
+ // Note: We do NOT filter by instance.enabled here because:
1007
+ // - enabled=false means "do not auto-start" (config), not "cannot be connected" (runtime)
1008
+ // - A user can manually start an enabled=false instance, which should still appear in list_servers
1009
+ const instances = hubManager.getServerInstancesByName(serverName);
1010
+ const connectedIndexes = [];
1011
+ for (const instance of instances) {
1012
+ if (instance.index !== undefined) {
1013
+ const status = this.getStatus(serverName, instance.index);
1014
+ if (status?.connected) {
1015
+ connectedIndexes.push(instance.index);
1016
+ }
1017
+ }
1018
+ }
1019
+ return connectedIndexes;
1020
+ }
998
1021
  /**
999
1022
  * Gets the composite key of the first connected instance for a server name.
1000
1023
  * This is a backward compatibility method for code that expects getServerIdByName.
@@ -1 +1 @@
1
- {"version":3,"file":"system-tools-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/system-tools-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyLnE"}
1
+ {"version":3,"file":"system-tools-handler.d.ts","sourceRoot":"","sources":["../../../../../../src/services/gateway/request-handlers/system-tools-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmNnE"}
@@ -6,7 +6,7 @@ import { McpError } from '@modelcontextprotocol/sdk/types.js';
6
6
  import { logger } from '../../../utils/index.js';
7
7
  import { LOG_MODULES } from '../../../utils/logger/log-modules.js';
8
8
  import { hubToolsService } from '../../hub-tools.service.js';
9
- import { LIST_SERVERS_TOOL, LIST_TOOLS_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL } from '../../../models/system-tools.constants.js';
9
+ import { LIST_SERVERS_TOOL, LIST_TOOLS_TOOL, GET_TOOL_TOOL, CALL_TOOL_TOOL, UPDATE_SERVER_DESCRIPTION_TOOL, LIST_TAGS_TOOL } from '../../../models/system-tools.constants.js';
10
10
  /**
11
11
  * Register system tools handlers on the MCP server.
12
12
  *
@@ -192,4 +192,31 @@ export function registerSystemToolsHandlers(server) {
192
192
  }
193
193
  }
194
194
  });
195
+ // List tags
196
+ const ListTagsRequestSchema = z.object({
197
+ method: z.literal(LIST_TAGS_TOOL),
198
+ params: z.object({
199
+ serverName: z.string()
200
+ }),
201
+ id: z.union([z.string(), z.number()]),
202
+ jsonrpc: z.literal('2.0')
203
+ });
204
+ server.server.setRequestHandler(ListTagsRequestSchema, async (request) => {
205
+ try {
206
+ const result = await hubToolsService.listTags(request.params);
207
+ return result;
208
+ }
209
+ catch (error) {
210
+ logger.error(`List tags error:`, error, LOG_MODULES.SYSTEM_TOOLS_HANDLER);
211
+ if (error instanceof McpError) {
212
+ throw error;
213
+ }
214
+ else if (error instanceof Error) {
215
+ throw new McpError(-32802, error.message);
216
+ }
217
+ else {
218
+ throw new McpError(-32802, String(error));
219
+ }
220
+ }
221
+ });
195
222
  }
@@ -55,7 +55,7 @@ export function generateGatewayToolsList(toolMap) {
55
55
  if (!hasAggregatedTools) {
56
56
  continue;
57
57
  }
58
- if (!aggregatedTools.includes(tool.name)) {
58
+ if (!Array.isArray(aggregatedTools) || !aggregatedTools.includes(tool.name)) {
59
59
  continue;
60
60
  }
61
61
  }
@@ -17,11 +17,18 @@ export declare class InstanceSelector {
17
17
  private static roundRobinCounters;
18
18
  /**
19
19
  * Select best instance based on configured strategy
20
+ *
21
+ * @param serverName - Name of the server
22
+ * @param serverConfig - Server configuration
23
+ * @param requestOptions - Optional request options for instance selection
24
+ * @param statusChecker - Optional function to check instance connection status (for testing)
20
25
  */
21
26
  static selectInstance(serverName: string, serverConfig: ServerConfig, requestOptions?: {
22
27
  sessionId?: string;
23
28
  tags?: Record<string, string>;
24
- }): ServerInstance | undefined;
29
+ }, statusChecker?: (serverName: string, index: number) => {
30
+ connected?: boolean;
31
+ } | undefined): ServerInstance | undefined;
25
32
  private static selectRandomInstance;
26
33
  private static selectRoundRobinInstance;
27
34
  private static selectTagMatchUniqueInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"instance-selector.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/instance-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGnF;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,aAAa,EAAE,MAAM;aACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAF3D,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAA,EACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,YAAA;CAmB9E;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA6B;IAE9D;;OAEG;IACH,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,GACrE,cAAc,GAAG,SAAS;IA+B7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAKnC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAUvC,OAAO,CAAC,MAAM,CAAC,4BAA4B;CAiC5C"}
1
+ {"version":3,"file":"instance-selector.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/instance-selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAInF;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,aAAa,EAAE,MAAM;aACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;aACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAF3D,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,YAAA,EACpC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,YAAA;CAmB9E;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA6B;IAE9D;;;;;;;OAOG;IACH,MAAM,CAAC,cAAc,CACnB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EACtE,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,SAAS,GACzF,cAAc,GAAG,SAAS;IAwC7B,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAKnC,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAUvC,OAAO,CAAC,MAAM,CAAC,4BAA4B;CAiC5C"}
@@ -1,4 +1,5 @@
1
1
  import { InstanceSelectionStrategy } from '../../models/server.model.js';
2
+ import { mcpConnectionManager } from '../mcp-connection-manager.js';
2
3
  /**
3
4
  * Error thrown when tag-match-unique instance selection fails.
4
5
  * Passes raw data so the error class itself can format the message.
@@ -39,28 +40,41 @@ export class InstanceSelector {
39
40
  static roundRobinCounters = new Map();
40
41
  /**
41
42
  * Select best instance based on configured strategy
43
+ *
44
+ * @param serverName - Name of the server
45
+ * @param serverConfig - Server configuration
46
+ * @param requestOptions - Optional request options for instance selection
47
+ * @param statusChecker - Optional function to check instance connection status (for testing)
42
48
  */
43
- static selectInstance(serverName, serverConfig, requestOptions) {
49
+ static selectInstance(serverName, serverConfig, requestOptions, statusChecker) {
44
50
  const { instances } = serverConfig;
45
51
  const instanceSelectionStrategy = serverConfig.template.instanceSelectionStrategy || InstanceSelectionStrategy.RANDOM;
46
- // Filter enabled instances
47
- const enabledInstances = instances.filter((instance) => instance.enabled !== false);
48
- if (enabledInstances.length === 0) {
52
+ // Use provided statusChecker or default to mcpConnectionManager.getStatus
53
+ const checkStatus = statusChecker || ((name, idx) => mcpConnectionManager.getStatus(name, idx));
54
+ // Filter instances - use runtime connected status, NOT config enabled flag
55
+ // enabled=false means "do not auto-start" but user can manually start it
56
+ const connectedInstances = instances.filter((instance) => {
57
+ if (instance.index === undefined)
58
+ return false;
59
+ const status = checkStatus(serverName, instance.index);
60
+ return status?.connected;
61
+ });
62
+ if (connectedInstances.length === 0) {
49
63
  return undefined;
50
64
  }
51
65
  // Single instance case - return directly
52
- if (enabledInstances.length === 1) {
53
- return enabledInstances[0];
66
+ if (connectedInstances.length === 1) {
67
+ return connectedInstances[0];
54
68
  }
55
69
  switch (instanceSelectionStrategy) {
56
70
  case InstanceSelectionStrategy.RANDOM:
57
- return this.selectRandomInstance(enabledInstances);
71
+ return this.selectRandomInstance(connectedInstances);
58
72
  case InstanceSelectionStrategy.ROUND_ROBIN:
59
- return this.selectRoundRobinInstance(serverName, enabledInstances);
73
+ return this.selectRoundRobinInstance(serverName, connectedInstances);
60
74
  case InstanceSelectionStrategy.TAG_MATCH_UNIQUE:
61
- return this.selectTagMatchUniqueInstance(enabledInstances, requestOptions?.tags);
75
+ return this.selectTagMatchUniqueInstance(connectedInstances, requestOptions?.tags);
62
76
  default:
63
- return enabledInstances[0]; // Fallback to first instance
77
+ return connectedInstances[0]; // Fallback to first instance
64
78
  }
65
79
  }
66
80
  static selectRandomInstance(instances) {
@@ -1 +1 @@
1
- {"version":3,"file":"resource-generator.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/resource-generator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAUlE;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AA6ID;;GAEG;AACH,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,qBAAqB,uEACoC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,IAAI,QAAQ,EAAE,CAgErD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,GAAG,QAAQ,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAyGzD"}
1
+ {"version":3,"file":"resource-generator.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/resource-generator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAUlE;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AA6ID;;GAEG;AACH,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,qBAAqB,uEACoC,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,IAAI,QAAQ,EAAE,CAqErD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,cAAc,GAAG,QAAQ,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,CAyGzD"}
@@ -178,36 +178,40 @@ export function generateDynamicResources() {
178
178
  if (!hasValidId(server)) {
179
179
  continue;
180
180
  }
181
- // Check if any instance is enabled
182
- const hasEnabledInstance = server.config.instances.some((i) => i.enabled !== false);
183
- if (!hasEnabledInstance) {
181
+ // Check if any instances are connected using getConnectedIndexes
182
+ const connectedIndexes = mcpConnectionManager.getConnectedIndexes(server.name);
183
+ if (connectedIndexes.length === 0) {
184
184
  continue;
185
185
  }
186
- // Iterate over all instances to expose each instance's resources
186
+ // Second pass: generate resources for each connected instance
187
187
  for (const instance of server.config.instances) {
188
- if (instance.enabled === false) {
188
+ const idx = instance.index;
189
+ if (idx === undefined) {
189
190
  continue;
190
191
  }
191
- const instanceIndex = instance.index;
192
- // Server metadata resource (one per server, not per instance)
193
- if (instanceIndex === 0) {
192
+ const instanceStatus = mcpConnectionManager.getStatus(server.name, idx);
193
+ if (!instanceStatus?.connected) {
194
+ continue;
195
+ }
196
+ // Server metadata resource (one per server, using first connected instance's index)
197
+ // Only generate once when we hit the first connected instance
198
+ if (idx === connectedIndexes[0]) {
194
199
  resources.push({
195
200
  uri: `hub://servers/${server.name}`,
196
201
  name: `Server: ${server.name}`,
197
202
  description: getServerDescription(server.config, server.name),
198
203
  mimeType: 'application/json',
199
204
  serverName: server.name,
200
- serverIndex: instanceIndex
205
+ serverIndex: idx
201
206
  });
202
207
  }
203
208
  // Get MCP native resources and map to hub format
204
- const instanceIdx = instanceIndex ?? 0;
205
- const mcpResources = mcpConnectionManager.getResources(server.name, instanceIdx);
209
+ const mcpResources = mcpConnectionManager.getResources(server.name, idx);
206
210
  for (const res of mcpResources) {
207
211
  // Format: Resource: {ServerName} - {Index}: {Native Name}
208
- const displayName = `Resource:${server.name} - ${instanceIdx}:${res.name}`;
212
+ const displayName = `Resource:${server.name} - ${idx}:${res.name}`;
209
213
  resources.push({
210
- uri: mapMcpUriToHub(server.name, instanceIdx, res.uri),
214
+ uri: mapMcpUriToHub(server.name, idx, res.uri),
211
215
  name: displayName,
212
216
  description: res.description,
213
217
  mimeType: res.mimeType
@@ -1,10 +1,10 @@
1
1
  import type { RequestOptions, ServerInstanceInfo, ValidServer } from './types.js';
2
2
  /**
3
- * Gets the description for a server, using a default if none is provided.
3
+ * Gets the description for a server, using the server name as default if none is provided.
4
4
  *
5
5
  * @param serverConfig - Server configuration object (may contain description in template)
6
6
  * @param serverName - Name of the server
7
- * @returns The server description or a default one
7
+ * @returns The server description or the server name with usage note if no description is configured
8
8
  */
9
9
  export declare function getServerDescription(serverConfig: {
10
10
  template?: {
@@ -1 +1 @@
1
- {"version":3,"file":"server-selector.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/server-selector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,EACjE,UAAU,EAAE,MAAM,GACjB,MAAM,CAER;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CAMjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,cAAc,EAC/B,UAAU,GAAE,OAAc,GACzB,kBAAkB,GAAG,SAAS,CA8ChC"}
1
+ {"version":3,"file":"server-selector.d.ts","sourceRoot":"","sources":["../../../../../src/services/hub-tools/server-selector.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE;IAAE,QAAQ,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,SAAS,EACjE,UAAU,EAAE,MAAM,GACjB,MAAM,CAKR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,WAAW,CAMjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,cAAc,EAC/B,UAAU,GAAE,OAAc,GACzB,kBAAkB,GAAG,SAAS,CA8ChC"}