@loop_ouroboros/mcp-hub-lite 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +410 -331
- package/dist/client/assets/{HomeView-Bi2bkUKf.js → HomeView-DplI3V-h.js} +1 -1
- package/dist/client/assets/{ResourceDetailView-DyuSovH9.js → ResourceDetailView-CeHPn99Y.js} +1 -1
- package/dist/client/assets/ResourcesView-C1ObRhYS.js +1 -0
- package/dist/client/assets/{ServerDashboard-BGyyZAti.js → ServerDashboard-D7wG4Gvt.js} +1 -1
- package/dist/client/assets/ServerDetail-G23phOcJ.js +2 -0
- package/dist/client/assets/{ServerListView-yQPVJFHG.js → ServerListView-BFiZLtPO.js} +1 -1
- package/dist/client/assets/{ServerStatusTags.vue_vue_type_script_setup_true_lang-C8gQlxGE.js → ServerStatusTags.vue_vue_type_script_setup_true_lang-Deb_SbFw.js} +1 -1
- package/dist/client/assets/SettingsView-QBFLZ6fP.js +1 -0
- package/dist/client/assets/ToolCallDialog-DYS-ADCL.js +1 -0
- package/dist/client/assets/ToolsView-DYwgtm7W.js +1 -0
- package/dist/client/assets/_baseClone-DQno9YO3.js +1 -0
- package/dist/client/assets/{el-form-item-DfWq_kSy.js → el-form-item-DF0zzQdH.js} +2 -2
- package/dist/client/assets/el-input-C_p2Qw42.js +1 -0
- package/dist/client/assets/el-loading-BaenpNzU.js +1 -0
- package/dist/client/assets/el-overlay-MbIUXSQ7.js +1 -0
- package/dist/client/assets/el-radio-group-COnCjCcz.js +1 -0
- package/dist/client/assets/el-skeleton-item-qj0eQP4s.js +1 -0
- package/dist/client/assets/el-switch-BZbXqB3_.js +1 -0
- package/dist/client/assets/el-tab-pane-w7RltRLd.js +1 -0
- package/dist/client/assets/el-table-column-OD8zhFcD.js +1 -0
- package/dist/client/assets/index-DwhULJXZ.js +2 -0
- package/dist/client/assets/{index-Bzz3tYbS.css → index-UtsV0Cvh.css} +1 -1
- package/dist/client/assets/{omit-BIIebEYo.js → omit-BAJQlviJ.js} +1 -1
- package/dist/client/assets/raf-B1Ry7ruA.js +1 -0
- package/dist/client/assets/{vue-vendor-Dwcr0jep.js → vue-vendor-ClSvefnQ.js} +1 -1
- package/dist/client/index.html +3 -3
- package/dist/server/shared/models/constants.d.ts +5 -0
- package/dist/server/shared/models/constants.d.ts.map +1 -1
- package/dist/server/shared/models/constants.js +4 -0
- package/dist/server/shared/models/server.model.d.ts +14 -0
- package/dist/server/shared/models/server.model.d.ts.map +1 -1
- package/dist/server/shared/models/server.model.js +27 -4
- package/dist/server/src/api/mcp/gateway.d.ts +10 -6
- package/dist/server/src/api/mcp/gateway.d.ts.map +1 -1
- package/dist/server/src/api/mcp/gateway.js +235 -69
- package/dist/server/src/api/web/hub-tools.d.ts.map +1 -1
- package/dist/server/src/api/web/hub-tools.js +2 -2
- package/dist/server/src/api/web/search.d.ts +1 -1
- package/dist/server/src/api/web/search.d.ts.map +1 -1
- package/dist/server/src/api/web/search.js +18 -16
- package/dist/server/src/api/web/sessions.d.ts +1 -27
- package/dist/server/src/api/web/sessions.d.ts.map +1 -1
- package/dist/server/src/api/web/sessions.js +8 -97
- package/dist/server/src/app.d.ts.map +1 -1
- package/dist/server/src/app.js +5 -0
- package/dist/server/src/cli/commands/status.js +39 -1
- package/dist/server/src/cli/commands/use-guide.d.ts +0 -8
- package/dist/server/src/cli/commands/use-guide.d.ts.map +1 -1
- package/dist/server/src/cli/commands/use-guide.js +28 -170
- package/dist/server/src/cli/server.d.ts +10 -0
- package/dist/server/src/cli/server.d.ts.map +1 -1
- package/dist/server/src/cli/server.js +31 -1
- package/dist/server/src/models/system-tools.constants.d.ts +1 -0
- package/dist/server/src/models/system-tools.constants.d.ts.map +1 -1
- package/dist/server/src/server/dev-server.js +2 -0
- package/dist/server/src/server/runner.d.ts.map +1 -1
- package/dist/server/src/server/runner.js +2 -0
- package/dist/server/src/services/connection/connection-manager.d.ts +2 -0
- package/dist/server/src/services/connection/connection-manager.d.ts.map +1 -1
- package/dist/server/src/services/connection/connection-manager.js +14 -7
- package/dist/server/src/services/gateway/gateway.service.d.ts +13 -0
- package/dist/server/src/services/gateway/gateway.service.d.ts.map +1 -1
- package/dist/server/src/services/gateway/gateway.service.js +72 -0
- package/dist/server/src/services/gateway/global-transport.d.ts +20 -10
- package/dist/server/src/services/gateway/global-transport.d.ts.map +1 -1
- package/dist/server/src/services/gateway/global-transport.js +50 -34
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/initialize-handler.js +22 -6
- package/dist/server/src/services/gateway/request-handlers/resources-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/resources-handler.js +5 -1
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.d.ts.map +1 -1
- package/dist/server/src/services/gateway/request-handlers/system-tools-handler.js +3 -2
- package/dist/server/src/services/gateway/session-manager.d.ts +101 -0
- package/dist/server/src/services/gateway/session-manager.d.ts.map +1 -0
- package/dist/server/src/services/gateway/session-manager.js +256 -0
- package/dist/server/src/services/hub-tools/resource-generator.d.ts +1 -1
- package/dist/server/src/services/hub-tools/resource-generator.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/resource-generator.js +11 -9
- package/dist/server/src/services/hub-tools/system-tool-definitions.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools/system-tool-definitions.js +7 -0
- package/dist/server/src/services/hub-tools.service.d.ts +1 -1
- package/dist/server/src/services/hub-tools.service.d.ts.map +1 -1
- package/dist/server/src/services/hub-tools.service.js +23 -15
- package/dist/server/src/services/system-tool-handler.js +1 -1
- package/dist/server/src/utils/json-utils.d.ts +9 -0
- package/dist/server/src/utils/json-utils.d.ts.map +1 -1
- package/dist/server/src/utils/json-utils.js +19 -0
- package/dist/server/src/utils/logger/index.d.ts +1 -1
- package/dist/server/src/utils/logger/index.d.ts.map +1 -1
- package/dist/server/src/utils/logger/index.js +1 -1
- package/dist/server/src/utils/logger/log-context.d.ts +1 -0
- package/dist/server/src/utils/logger/log-context.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-formatter.js +25 -11
- package/dist/server/src/utils/logger/log-output.d.ts +17 -1
- package/dist/server/src/utils/logger/log-output.d.ts.map +1 -1
- package/dist/server/src/utils/logger/log-output.js +46 -40
- package/dist/server/src/utils/logger/logger.d.ts.map +1 -1
- package/dist/server/src/utils/logger/logger.js +18 -2
- package/dist/server/src/utils/request-context.d.ts +8 -70
- package/dist/server/src/utils/request-context.d.ts.map +1 -1
- package/dist/server/src/utils/request-context.js +11 -70
- package/dist/server/src/utils/search-matcher.d.ts +6 -0
- package/dist/server/src/utils/search-matcher.d.ts.map +1 -0
- package/dist/server/src/utils/search-matcher.js +24 -0
- package/dist/server/tests/unit/config/config.schema.test.js +2 -1
- package/dist/server/tests/unit/server/runner.test.js +14 -7
- package/dist/server/tests/unit/services/gateway-session-mode.test.d.ts +2 -0
- package/dist/server/tests/unit/services/gateway-session-mode.test.d.ts.map +1 -0
- package/dist/server/tests/unit/services/gateway-session-mode.test.js +174 -0
- package/dist/server/tests/unit/services/hub-tools.service.test.js +299 -4
- package/dist/server/tests/unit/utils/config.test.js +14 -7
- package/dist/server/tests/unit/utils/log-output.test.d.ts +2 -0
- package/dist/server/tests/unit/utils/log-output.test.d.ts.map +1 -0
- package/dist/server/tests/unit/utils/log-output.test.js +198 -0
- package/dist/server/vitest.config.d.ts.map +1 -1
- package/dist/server/vitest.config.js +0 -2
- package/package.json +1 -1
- package/dist/client/assets/ResourcesView-CU0VbNy5.js +0 -1
- package/dist/client/assets/ServerDetail-bcQ8BVXR.js +0 -2
- package/dist/client/assets/SettingsView-B1DxbFP3.js +0 -1
- package/dist/client/assets/ToolCallDialog-DEapCO06.js +0 -1
- package/dist/client/assets/ToolsView-DA0u_bCw.js +0 -1
- package/dist/client/assets/_baseClone-B991Lvrt.js +0 -1
- package/dist/client/assets/el-input-5YzZrwir.js +0 -1
- package/dist/client/assets/el-loading-DE3FcxNH.js +0 -1
- package/dist/client/assets/el-overlay-BTeTueuN.js +0 -1
- package/dist/client/assets/el-radio-group-Y1E2bxIW.js +0 -1
- package/dist/client/assets/el-skeleton-item-DhgR50Jx.js +0 -1
- package/dist/client/assets/el-switch-fF--nMSD.js +0 -1
- package/dist/client/assets/el-tab-pane-rvS_KTwP.js +0 -1
- package/dist/client/assets/el-table-column-B1O8mY47.js +0 -1
- package/dist/client/assets/index-DkqV9kH4.js +0 -2
- package/dist/client/assets/raf-Cj-gATZv.js +0 -1
|
@@ -1,29 +1,3 @@
|
|
|
1
1
|
import { FastifyInstance } from 'fastify';
|
|
2
|
-
|
|
3
|
-
* Session Management API Routes
|
|
4
|
-
*
|
|
5
|
-
* Provides comprehensive session management endpoints for the MCP Hub Lite system's persistent session storage.
|
|
6
|
-
* This module enables administrators and clients to monitor, inspect, and manage active and persisted sessions
|
|
7
|
-
* that maintain client connection state across service restarts.
|
|
8
|
-
*
|
|
9
|
-
* Sessions store critical client context including connection metadata, working directories, project information,
|
|
10
|
-
* and other state that enables seamless reconnection and continuity of operations. The session persistence
|
|
11
|
-
* feature ensures that client connections can be restored even after service interruptions.
|
|
12
|
-
*
|
|
13
|
-
* Key features include:
|
|
14
|
-
* - Listing all persisted sessions with metadata
|
|
15
|
-
* - Detailed session inspection by session ID
|
|
16
|
-
* - Session deletion for cleanup and maintenance
|
|
17
|
-
* - Integration with the MCP session manager for consistency
|
|
18
|
-
*
|
|
19
|
-
* @param fastify - The Fastify instance to register routes on
|
|
20
|
-
* @returns Promise that resolves when all routes are registered
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* // Register session management routes
|
|
25
|
-
* await webSessionRoutes(app);
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export declare function webSessionRoutes(fastify: FastifyInstance): Promise<void>;
|
|
2
|
+
export declare function webSessionsRoutes(fastify: FastifyInstance): Promise<void>;
|
|
29
3
|
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../../../src/api/web/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK1C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,eAAe,iBAU/D"}
|
|
@@ -1,104 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* Provides comprehensive session management endpoints for the MCP Hub Lite system's persistent session storage.
|
|
7
|
-
* This module enables administrators and clients to monitor, inspect, and manage active and persisted sessions
|
|
8
|
-
* that maintain client connection state across service restarts.
|
|
9
|
-
*
|
|
10
|
-
* Sessions store critical client context including connection metadata, working directories, project information,
|
|
11
|
-
* and other state that enables seamless reconnection and continuity of operations. The session persistence
|
|
12
|
-
* feature ensures that client connections can be restored even after service interruptions.
|
|
13
|
-
*
|
|
14
|
-
* Key features include:
|
|
15
|
-
* - Listing all persisted sessions with metadata
|
|
16
|
-
* - Detailed session inspection by session ID
|
|
17
|
-
* - Session deletion for cleanup and maintenance
|
|
18
|
-
* - Integration with the MCP session manager for consistency
|
|
19
|
-
*
|
|
20
|
-
* @param fastify - The Fastify instance to register routes on
|
|
21
|
-
* @returns Promise that resolves when all routes are registered
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```typescript
|
|
25
|
-
* // Register session management routes
|
|
26
|
-
* await webSessionRoutes(app);
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export async function webSessionRoutes(fastify) {
|
|
30
|
-
/**
|
|
31
|
-
* List all persisted sessions
|
|
32
|
-
*/
|
|
1
|
+
import { logger } from '../../utils/logger/index.js';
|
|
2
|
+
import { LOG_MODULES } from '../../utils/logger/log-modules.js';
|
|
3
|
+
import { sessionManager } from '../../services/gateway/session-manager.js';
|
|
4
|
+
export async function webSessionsRoutes(fastify) {
|
|
33
5
|
fastify.get('/web/sessions', async (_request, reply) => {
|
|
34
6
|
try {
|
|
35
|
-
const sessions =
|
|
36
|
-
return
|
|
37
|
-
success: true,
|
|
38
|
-
data: sessions,
|
|
39
|
-
count: sessions.length
|
|
40
|
-
});
|
|
7
|
+
const sessions = sessionManager.getAllSessions();
|
|
8
|
+
return { sessions };
|
|
41
9
|
}
|
|
42
10
|
catch (error) {
|
|
43
|
-
logger.error('Failed to
|
|
44
|
-
return reply.code(500).send({
|
|
45
|
-
success: false,
|
|
46
|
-
error: 'Failed to get sessions'
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
/**
|
|
51
|
-
* Get a specific session by ID
|
|
52
|
-
*/
|
|
53
|
-
fastify.get('/web/sessions/:sessionId', async (request, reply) => {
|
|
54
|
-
try {
|
|
55
|
-
const { sessionId } = request.params;
|
|
56
|
-
const session = mcpSessionManager.getSessionState(sessionId);
|
|
57
|
-
if (!session) {
|
|
58
|
-
return reply.code(404).send({
|
|
59
|
-
success: false,
|
|
60
|
-
error: 'Session not found'
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
return reply.send({
|
|
64
|
-
success: true,
|
|
65
|
-
data: session
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
logger.error('Failed to get session:', error, LOG_MODULES.SESSION_API);
|
|
70
|
-
return reply.code(500).send({
|
|
71
|
-
success: false,
|
|
72
|
-
error: 'Failed to get session'
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
/**
|
|
77
|
-
* Delete a session
|
|
78
|
-
*/
|
|
79
|
-
fastify.delete('/web/sessions/:sessionId', async (request, reply) => {
|
|
80
|
-
try {
|
|
81
|
-
const { sessionId } = request.params;
|
|
82
|
-
logger.info(`Deleting session: ${sessionId}`, LOG_MODULES.SESSION_API);
|
|
83
|
-
const existed = await mcpSessionManager.deleteSession(sessionId);
|
|
84
|
-
if (!existed) {
|
|
85
|
-
return reply.code(404).send({
|
|
86
|
-
success: false,
|
|
87
|
-
error: 'Session not found'
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
logger.info(`Session deleted successfully: ${sessionId}`, LOG_MODULES.SESSION_API);
|
|
91
|
-
return reply.send({
|
|
92
|
-
success: true,
|
|
93
|
-
message: 'Session deleted successfully'
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
logger.error('Failed to delete session:', error, LOG_MODULES.SESSION_API);
|
|
98
|
-
return reply.code(500).send({
|
|
99
|
-
success: false,
|
|
100
|
-
error: 'Failed to delete session'
|
|
101
|
-
});
|
|
11
|
+
logger.error('Failed to retrieve sessions:', error, LOG_MODULES.GATEWAY);
|
|
12
|
+
return reply.code(500).send({ error: 'Internal Server Error' });
|
|
102
13
|
}
|
|
103
14
|
});
|
|
104
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app.ts"],"names":[],"mappings":"AAqCA,uDAAuD;AACvD,wBAAgB,kBAAkB;;;;;EAQjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,QAAQ,mWA6J7B"}
|
package/dist/server/src/app.js
CHANGED
|
@@ -6,6 +6,7 @@ import { configManager } from './config/config-manager.js';
|
|
|
6
6
|
import { setJsonPrettyConfigGetter } from './utils/json-utils.js';
|
|
7
7
|
import { isIpAllowed } from './utils/network-security.js';
|
|
8
8
|
import { logger, LOG_MODULES } from './utils/logger/index.js';
|
|
9
|
+
import { initGlobalTransport } from './services/gateway/global-transport.js';
|
|
9
10
|
// MCP Protocol Routes
|
|
10
11
|
import { mcpGatewayRoutes } from './api/mcp/gateway.js';
|
|
11
12
|
// Web API Routes
|
|
@@ -17,6 +18,7 @@ import { configRoutes } from './api/web/config.js';
|
|
|
17
18
|
import { webLogRoutes } from './api/web/logs.js';
|
|
18
19
|
import { webHubToolsRoutes } from './api/web/hub-tools.js';
|
|
19
20
|
import { webResourceRoutes } from './api/web/resources.js';
|
|
21
|
+
import { webSessionsRoutes } from './api/web/sessions.js';
|
|
20
22
|
// WebSocket Routes
|
|
21
23
|
import { webSocketRoutes } from './api/ws/events.js';
|
|
22
24
|
// Get __dirname equivalent in ESM
|
|
@@ -153,6 +155,8 @@ export async function buildApp() {
|
|
|
153
155
|
}
|
|
154
156
|
done();
|
|
155
157
|
});
|
|
158
|
+
// Initialize singleton MCP transport before registering routes
|
|
159
|
+
await initGlobalTransport();
|
|
156
160
|
// Register API routes first (before static files)
|
|
157
161
|
fastify.register(mcpGatewayRoutes);
|
|
158
162
|
fastify.register(webServerRoutes);
|
|
@@ -163,6 +167,7 @@ export async function buildApp() {
|
|
|
163
167
|
fastify.register(webLogRoutes);
|
|
164
168
|
fastify.register(webHubToolsRoutes);
|
|
165
169
|
fastify.register(webResourceRoutes);
|
|
170
|
+
fastify.register(webSessionsRoutes);
|
|
166
171
|
fastify.register(webSocketRoutes);
|
|
167
172
|
// Serve static files from dist/client (frontend build output)
|
|
168
173
|
const clientPath = path.join(__dirname, '../../client');
|
|
@@ -136,6 +136,39 @@ function printFormattedStatus(status) {
|
|
|
136
136
|
// Then display disconnected servers
|
|
137
137
|
displayServerList(disconnectedServers, 'MCP Servers (Disconnected):', red);
|
|
138
138
|
}
|
|
139
|
+
// Sessions section
|
|
140
|
+
if (status.sessions !== undefined) {
|
|
141
|
+
console.log('');
|
|
142
|
+
console.log(`${yellow}👥 Active MCP Sessions:${reset}`);
|
|
143
|
+
console.log(`${dim}══════════════════════════════${reset}`);
|
|
144
|
+
if (status.sessions.length === 0) {
|
|
145
|
+
console.log(`${dim} No active sessions${reset}`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
let maxSidLen = 'Session ID'.length;
|
|
149
|
+
let maxClientLen = 'Client'.length;
|
|
150
|
+
let maxVerLen = 'Version'.length;
|
|
151
|
+
for (const s of status.sessions) {
|
|
152
|
+
maxSidLen = Math.max(maxSidLen, (s.sessionId || '').length);
|
|
153
|
+
maxClientLen = Math.max(maxClientLen, (s.clientName || '').length);
|
|
154
|
+
const ver = s.protocolVersion || '';
|
|
155
|
+
maxVerLen = Math.max(maxVerLen, ver.length);
|
|
156
|
+
}
|
|
157
|
+
const headerSid = 'Session ID'.padEnd(maxSidLen);
|
|
158
|
+
const headerClient = 'Client'.padEnd(maxClientLen);
|
|
159
|
+
const headerVer = 'Version'.padEnd(maxVerLen);
|
|
160
|
+
console.log(`${cyan}${headerSid} ${headerClient} ${headerVer} SSE${reset}`);
|
|
161
|
+
console.log(`${dim}${'─'.repeat(maxSidLen + maxClientLen + maxVerLen + 10)}${reset}`);
|
|
162
|
+
for (const s of status.sessions) {
|
|
163
|
+
const sid = (s.sessionId || '').padEnd(maxSidLen);
|
|
164
|
+
const client = (s.clientName || '').padEnd(maxClientLen);
|
|
165
|
+
const ver = (s.protocolVersion || '').padEnd(maxVerLen);
|
|
166
|
+
const sse = s.activeSseCount.toString().padStart(3);
|
|
167
|
+
console.log(`${sid} ${client} ${ver} ${sse}`);
|
|
168
|
+
}
|
|
169
|
+
console.log(`${dim} Total: ${status.sessions.length} active session(s)${reset}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
139
172
|
// MCP Client Configuration
|
|
140
173
|
console.log('');
|
|
141
174
|
console.log(`${yellow}🔌 MCP Client Configuration:${reset}`);
|
|
@@ -145,10 +178,15 @@ function printFormattedStatus(status) {
|
|
|
145
178
|
console.log(`${dim}{${reset}`);
|
|
146
179
|
console.log(`${dim} "mcpServers": {${reset}`);
|
|
147
180
|
console.log(`${dim} "mcp-hub-lite": {${reset}`);
|
|
148
|
-
console.log(`${dim} "url": "${cyan}${mcpEndpoint}${dim}"
|
|
181
|
+
console.log(`${dim} "url": "${cyan}${mcpEndpoint}${dim}",${reset}`);
|
|
182
|
+
console.log(`${dim} "headers": {${reset}`);
|
|
183
|
+
console.log(`${dim} "x-mcp-session-mode": "${cyan}stateful${dim}"${reset}`);
|
|
184
|
+
console.log(`${dim} }${reset}`);
|
|
149
185
|
console.log(`${dim} }${reset}`);
|
|
150
186
|
console.log(`${dim} }${reset}`);
|
|
151
187
|
console.log(`${dim}}${reset}`);
|
|
188
|
+
console.log('');
|
|
189
|
+
console.log(`${dim}💡 Use ${cyan}"stateful"${dim} for session persistence / SSE, ${cyan}"stateless"${dim} for per-request mode${reset}`);
|
|
152
190
|
// Quick Commands
|
|
153
191
|
console.log('');
|
|
154
192
|
console.log(`${yellow}💡 Quick Commands:${reset}`);
|
|
@@ -1,11 +1,3 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
/**
|
|
3
|
-
* CLI command for displaying the use guide in Markdown format.
|
|
4
|
-
*
|
|
5
|
-
* This command outputs the CLI usage guide, similar to how MCP Hub Lite
|
|
6
|
-
* provides a use-guide resource for MCP protocol usage.
|
|
7
|
-
*
|
|
8
|
-
* @returns {Command} The configured use-guide command instance for registration with Commander.js
|
|
9
|
-
*/
|
|
10
2
|
export declare const useGuideCommand: Command;
|
|
11
3
|
//# sourceMappingURL=use-guide.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-guide.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/use-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"use-guide.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/use-guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,eAAO,MAAM,eAAe,SAKxB,CAAC"}
|
|
@@ -1,175 +1,33 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
### stop
|
|
29
|
-
|
|
30
|
-
Stop the running MCP Hub Lite server.
|
|
31
|
-
|
|
32
|
-
\`\`\`bash
|
|
33
|
-
mcp-hub-lite stop
|
|
34
|
-
\`\`\`
|
|
35
|
-
|
|
36
|
-
### status
|
|
37
|
-
|
|
38
|
-
Display server status and connected MCP servers.
|
|
39
|
-
|
|
40
|
-
\`\`\`bash
|
|
41
|
-
mcp-hub-lite status
|
|
42
|
-
\`\`\`
|
|
43
|
-
|
|
44
|
-
### ui
|
|
45
|
-
|
|
46
|
-
Open the web UI in default browser.
|
|
47
|
-
|
|
48
|
-
\`\`\`bash
|
|
49
|
-
mcp-hub-lite ui
|
|
50
|
-
\`\`\`
|
|
51
|
-
|
|
52
|
-
### list
|
|
53
|
-
|
|
54
|
-
List all configured MCP servers.
|
|
55
|
-
|
|
56
|
-
\`\`\`bash
|
|
57
|
-
mcp-hub-lite list
|
|
58
|
-
\`\`\`
|
|
59
|
-
|
|
60
|
-
### restart
|
|
61
|
-
|
|
62
|
-
Restart the MCP Hub Lite server.
|
|
63
|
-
|
|
64
|
-
\`\`\`bash
|
|
65
|
-
mcp-hub-lite restart
|
|
66
|
-
\`\`\`
|
|
67
|
-
|
|
68
|
-
### install
|
|
69
|
-
|
|
70
|
-
Add a new MCP server to MCP Hub Lite.
|
|
71
|
-
|
|
72
|
-
**Parametric Mode:**
|
|
73
|
-
|
|
74
|
-
\`\`\`bash
|
|
75
|
-
# stdio server
|
|
76
|
-
mcp-hub-lite install github-mcp "npx github-mcp" --env API_KEY=xxx
|
|
77
|
-
|
|
78
|
-
# HTTP server
|
|
79
|
-
mcp-hub-lite install api-server https://api.example.com/mcp -t streamable-http -H "Authorization: Bearer xxx"
|
|
80
|
-
\`\`\`
|
|
81
|
-
|
|
82
|
-
**JSON Mode:**
|
|
83
|
-
|
|
84
|
-
\`\`\`bash
|
|
85
|
-
# stdio server
|
|
86
|
-
mcp-hub-lite install --json '{"name":"github-mcp","type":"stdio","command":"npx github-mcp","env":{"API_KEY":"xxx"}}'
|
|
87
|
-
|
|
88
|
-
# HTTP server
|
|
89
|
-
mcp-hub-lite install --json '{"name":"api-server","type":"streamable-http","url":"https://api.example.com/mcp","headers":{"Authorization":"Bearer xxx"}}'
|
|
90
|
-
\`\`\`
|
|
91
|
-
|
|
92
|
-
**Options:**
|
|
93
|
-
|
|
94
|
-
| Option | Description |
|
|
95
|
-
| -------------------------- | ------------------------------------------------------------ |
|
|
96
|
-
| \`-t, --transport <type>\` | Transport type: stdio, sse, streamable-http (default: stdio) |
|
|
97
|
-
| \`-e, --env <env...>\` | Environment variables (KEY=VALUE) |
|
|
98
|
-
| \`-H, --header <header...>\` | HTTP headers (Header-Key: Value) |
|
|
99
|
-
| \`--timeout <seconds>\` | Timeout in seconds (default: 60) |
|
|
100
|
-
| \`--strategy <strategy>\` | Instance selection: random, round-robin, tag-match-unique |
|
|
101
|
-
| \`-a, --auto-start\` | Auto-start server (default: true) |
|
|
102
|
-
| \`--no-auto-start\` | Disable auto-start |
|
|
103
|
-
| \`-d, --description <desc>\` | Server description |
|
|
104
|
-
|
|
105
|
-
**JSON Config Fields:**
|
|
106
|
-
|
|
107
|
-
| Field | Required | Description |
|
|
108
|
-
| --------------------------- | ----------- | ------------------------------- |
|
|
109
|
-
| \`name\` | Yes | Server name |
|
|
110
|
-
| \`type\` | No | Transport type (default: stdio) |
|
|
111
|
-
| \`command\` | Yes (stdio) | Command to execute |
|
|
112
|
-
| \`url\` | Yes (HTTP) | Server URL |
|
|
113
|
-
| \`args\` | No | Command arguments |
|
|
114
|
-
| \`env\` | No | Environment variables object |
|
|
115
|
-
| \`headers\` | No | HTTP headers object |
|
|
116
|
-
| \`timeout\` | No | Timeout in seconds |
|
|
117
|
-
| \`enabled\` | No | Auto-start enabled |
|
|
118
|
-
| \`description\` | No | Server description |
|
|
119
|
-
| \`instanceSelectionStrategy\` | No | Instance selection strategy |
|
|
120
|
-
|
|
121
|
-
### tool-use
|
|
122
|
-
|
|
123
|
-
Manage MCP server tools via API.
|
|
124
|
-
|
|
125
|
-
\`\`\`bash
|
|
126
|
-
# List all connected servers
|
|
127
|
-
mcp-hub-lite tool-use list-servers
|
|
128
|
-
|
|
129
|
-
# List system tools
|
|
130
|
-
mcp-hub-lite tool-use list-tools
|
|
131
|
-
|
|
132
|
-
# List tools from specific server
|
|
133
|
-
mcp-hub-lite tool-use list-tools --server baidu-search
|
|
134
|
-
|
|
135
|
-
# Get tool schema
|
|
136
|
-
mcp-hub-lite tool-use get-tool --tool list_tools
|
|
137
|
-
|
|
138
|
-
# Call a tool
|
|
139
|
-
mcp-hub-lite tool-use call-tool --tool search --server baidu-search --args '{"query":"天气"}'
|
|
140
|
-
\`\`\`
|
|
141
|
-
|
|
142
|
-
**Options:**
|
|
143
|
-
|
|
144
|
-
| Option | Description |
|
|
145
|
-
| ----------------- | ------------------------------------------- |
|
|
146
|
-
| \`--server <name>\` | Server name (default: mcp-hub-lite) |
|
|
147
|
-
| \`--tool <name>\` | Tool name (required for get-tool/call-tool) |
|
|
148
|
-
| \`--args <json>\` | Tool arguments JSON |
|
|
149
|
-
| \`--tags <json>\` | Instance selection tags |
|
|
150
|
-
|
|
151
|
-
**JSON Merge Form:**
|
|
152
|
-
|
|
153
|
-
\`\`\`bash
|
|
154
|
-
# All parameters in one JSON
|
|
155
|
-
mcp-hub-lite tool-use call-tool --args '{"server":"baidu-search","tool":"search","query":"天气"}'
|
|
156
|
-
\`\`\`
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
_Last updated: 2026-04-20_
|
|
161
|
-
`;
|
|
162
|
-
/**
|
|
163
|
-
* CLI command for displaying the use guide in Markdown format.
|
|
164
|
-
*
|
|
165
|
-
* This command outputs the CLI usage guide, similar to how MCP Hub Lite
|
|
166
|
-
* provides a use-guide resource for MCP protocol usage.
|
|
167
|
-
*
|
|
168
|
-
* @returns {Command} The configured use-guide command instance for registration with Commander.js
|
|
169
|
-
*/
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
import fs from 'fs';
|
|
5
|
+
import { getConfigManager } from '../../config/config-manager.js';
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = dirname(__filename);
|
|
8
|
+
const USE_GUIDE_PATH_ZH = join(__dirname, '../../services/hub-tools/use-guide-zh.md');
|
|
9
|
+
const USE_GUIDE_PATH_EN = join(__dirname, '../../services/hub-tools/use-guide-en.md');
|
|
10
|
+
function loadUseGuideContent() {
|
|
11
|
+
let language = 'en';
|
|
12
|
+
try {
|
|
13
|
+
const configManager = getConfigManager();
|
|
14
|
+
const config = configManager.getConfig();
|
|
15
|
+
language = config.system.language;
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
// Config not available, use default English
|
|
19
|
+
}
|
|
20
|
+
const path = language === 'zh' ? USE_GUIDE_PATH_ZH : USE_GUIDE_PATH_EN;
|
|
21
|
+
try {
|
|
22
|
+
return fs.readFileSync(path, 'utf-8');
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return '# MCP Hub Lite Use Guide\n\nThe use guide is currently unavailable.\n';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
170
28
|
export const useGuideCommand = new Command('use-guide')
|
|
171
|
-
.description('Output
|
|
29
|
+
.description('Output usage guide in Markdown format')
|
|
172
30
|
.action(() => {
|
|
173
|
-
process.stdout.write(
|
|
31
|
+
process.stdout.write(loadUseGuideContent());
|
|
174
32
|
process.exit(0);
|
|
175
33
|
});
|
|
@@ -17,6 +17,15 @@ interface McpServerStatus {
|
|
|
17
17
|
resourcesCount: number;
|
|
18
18
|
error?: string;
|
|
19
19
|
}
|
|
20
|
+
export interface SessionInfo {
|
|
21
|
+
sessionId: string;
|
|
22
|
+
clientName?: string;
|
|
23
|
+
clientVersion?: string;
|
|
24
|
+
protocolVersion?: string;
|
|
25
|
+
createdAt: string;
|
|
26
|
+
lastAccessedAt: string;
|
|
27
|
+
activeSseCount: number;
|
|
28
|
+
}
|
|
20
29
|
export interface EnhancedServerStatus {
|
|
21
30
|
running: boolean;
|
|
22
31
|
pid?: string;
|
|
@@ -25,6 +34,7 @@ export interface EnhancedServerStatus {
|
|
|
25
34
|
message?: string;
|
|
26
35
|
pidFilePath: string;
|
|
27
36
|
mcpServers?: McpServerStatus[];
|
|
37
|
+
sessions?: SessionInfo[];
|
|
28
38
|
}
|
|
29
39
|
/**
|
|
30
40
|
* Starts the MCP Hub Lite server with the specified configuration options.
|
|
@@ -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,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;
|
|
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,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;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;IAC/B,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;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,CA4CjF;AAoGD;;;;;;;;;;;;;;;;;;;;;;;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"}
|
|
@@ -123,13 +123,15 @@ export async function getServerStatus(pid) {
|
|
|
123
123
|
process.kill(parseInt(actualPid), 0); // Signal 0 just checks if process exists
|
|
124
124
|
// Try to fetch runtime status via HTTP API
|
|
125
125
|
const mcpServers = await fetchRuntimeStatus(host, port);
|
|
126
|
+
const sessions = await fetchSessionStatus(host, port);
|
|
126
127
|
return {
|
|
127
128
|
running: true,
|
|
128
129
|
pid: actualPid,
|
|
129
130
|
host,
|
|
130
131
|
port,
|
|
131
132
|
pidFilePath,
|
|
132
|
-
mcpServers
|
|
133
|
+
mcpServers,
|
|
134
|
+
sessions
|
|
133
135
|
};
|
|
134
136
|
}
|
|
135
137
|
catch {
|
|
@@ -187,6 +189,34 @@ async function fetchRuntimeStatus(host, port) {
|
|
|
187
189
|
return undefined;
|
|
188
190
|
}
|
|
189
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Fetches active session information from the running server via HTTP API.
|
|
194
|
+
*
|
|
195
|
+
* @param host - The host address to connect to
|
|
196
|
+
* @param port - The port number to connect to
|
|
197
|
+
* @returns Promise with array of session info, or undefined if API call fails
|
|
198
|
+
*/
|
|
199
|
+
async function fetchSessionStatus(host, port) {
|
|
200
|
+
try {
|
|
201
|
+
const controller = new AbortController();
|
|
202
|
+
const timeoutId = setTimeout(() => controller.abort(), 500);
|
|
203
|
+
const response = await fetch(`http://${host}:${port}/web/sessions`, {
|
|
204
|
+
signal: controller.signal,
|
|
205
|
+
headers: {
|
|
206
|
+
Accept: 'application/json'
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
clearTimeout(timeoutId);
|
|
210
|
+
if (!response.ok) {
|
|
211
|
+
return undefined;
|
|
212
|
+
}
|
|
213
|
+
const data = (await response.json());
|
|
214
|
+
return data.sessions;
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return undefined;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
190
220
|
/**
|
|
191
221
|
* Restarts the MCP Hub Lite server with the same configuration options.
|
|
192
222
|
*
|
|
@@ -37,6 +37,7 @@ export interface ListTagsParams {
|
|
|
37
37
|
}
|
|
38
38
|
export interface SearchToolsParams {
|
|
39
39
|
query: string;
|
|
40
|
+
limit?: number;
|
|
40
41
|
}
|
|
41
42
|
export type SystemToolArgs = ListServersParams | ListToolsInServerParams | GetToolParams | CallToolParams | UpdateServerDescriptionParams | ListTagsParams | SearchToolsParams;
|
|
42
43
|
export declare const LIST_SERVERS_TOOL = "list_servers";
|
|
@@ -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;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,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;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,uBAAuB,GACvB,aAAa,GACb,cAAc,GACd,6BAA6B,GAC7B,cAAc,GACd,iBAAiB,CAAC;AAGtB,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;AAC1C,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,4HAQpB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGhE;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { buildApp } from '../app.js';
|
|
|
2
2
|
import { configManager } from '../config/config-manager.js';
|
|
3
3
|
import { logger, LOG_MODULES } from '../utils/logger/index.js';
|
|
4
4
|
import { mcpConnectionManager } from '../services/connection/index.js';
|
|
5
|
+
import { sessionManager } from '../services/gateway/session-manager.js';
|
|
5
6
|
import { PidManager } from '../pid/manager.js';
|
|
6
7
|
import { collectConnectTasks, executeConnectTasks, ensureServerInstances } from './startup.js';
|
|
7
8
|
// Set log level to debug for development server
|
|
@@ -130,6 +131,7 @@ async function startDevServer() {
|
|
|
130
131
|
const shutdown = async (signal) => {
|
|
131
132
|
logger.info(`Received ${signal}, shutting down gracefully...`, LOG_MODULES.DEV_SERVER);
|
|
132
133
|
try {
|
|
134
|
+
sessionManager.shutdownAll();
|
|
133
135
|
await mcpConnectionManager.disconnectAll();
|
|
134
136
|
if (app) {
|
|
135
137
|
await app.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/server/runner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../../src/server/runner.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,iBAwD7E"}
|
|
@@ -4,6 +4,7 @@ import { logger } from '../utils/logger/index.js';
|
|
|
4
4
|
import { LOG_MODULES } from '../utils/logger/log-modules.js';
|
|
5
5
|
import { setJsonPrettyConfigGetter } from '../utils/json-utils.js';
|
|
6
6
|
import { mcpConnectionManager } from '../services/connection/index.js';
|
|
7
|
+
import { sessionManager } from '../services/gateway/session-manager.js';
|
|
7
8
|
import { PidManager } from '../pid/manager.js';
|
|
8
9
|
import { checkPortWithExit } from '../utils/port-checker.js';
|
|
9
10
|
import { collectConnectTasks, executeConnectTasks, ensureServerInstances } from './startup.js';
|
|
@@ -62,6 +63,7 @@ export async function runServer(options = {}) {
|
|
|
62
63
|
const shutdown = async (signal) => {
|
|
63
64
|
logger.info(`Received ${signal}, shutting down...`, LOG_MODULES.SERVER);
|
|
64
65
|
try {
|
|
66
|
+
sessionManager.shutdownAll();
|
|
65
67
|
await mcpConnectionManager.disconnectAll();
|
|
66
68
|
if (app) {
|
|
67
69
|
await app.close();
|
|
@@ -115,6 +115,8 @@ export declare class McpConnectionManager {
|
|
|
115
115
|
private publishConnectionEvents;
|
|
116
116
|
/**
|
|
117
117
|
* Refreshes server tools and resources (only for bidirectional transports).
|
|
118
|
+
*
|
|
119
|
+
* @param skipResources - Skip resources/list request when server doesn't support resources capability
|
|
118
120
|
*/
|
|
119
121
|
private refreshServerResources;
|
|
120
122
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAanE,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAKjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAqC;IACvD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,aAAa,CAAsC;IAE3D,OAAO,CAAC,yBAAyB,CAAuC;;IAuBxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACU,OAAO,CAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,GAC1D,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../../../../src/services/connection/connection-manager.ts"],"names":[],"mappings":"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"}
|