@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
package/README.md
CHANGED
|
@@ -1,331 +1,410 @@
|
|
|
1
|
-
# MCP-HUB-LITE
|
|
2
|
-
|
|
3
|
-
[](./LICENSE)
|
|
4
|
-
[](https://nodejs.org/)
|
|
5
|
-
[](https://www.typescriptlang.org/)
|
|
6
|
-
[](https://vitest.dev/)
|
|
7
|
-
[](https://fastify.io/)
|
|
8
|
-
[](https://vuejs.org/)
|
|
9
|
-
[](https://claude.ai/code)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
[中文文档](./README_zh.md)
|
|
14
|
-
|
|
15
|
-
A lightweight MCP management platform designed for independent developers, providing MCP server gateway, grouping, fuzzy search, and MCP HttpStream protocol interface.
|
|
16
|
-
|
|
17
|
-
## Overview
|
|
18
|
-
|
|
19
|
-
MCP-HUB-LITE is an MCP server gateway designed specifically for independent developers. It acts as a proxy between your frontend and multiple backend MCP servers, providing a unified access interface with support for the MCP JSON-RPC 2.0 protocol.
|
|
20
|
-
|
|
21
|
-
### Core Features
|
|
22
|
-
|
|
23
|
-
- **MCP Gateway Service**: Unified proxy interface for multiple backend MCP servers
|
|
24
|
-
- **MCP CLI Tool**: Command-line tool for listing and calling MCP tools across servers
|
|
25
|
-
- **Server Management**: Manage multiple MCP servers through a web interface
|
|
26
|
-
- **Tool Search**: Search and tool discovery across all servers with aggregation
|
|
27
|
-
- **Process Management**: Launch and manage MCP server processes via npx/uvx
|
|
28
|
-
- **Session
|
|
29
|
-
- **
|
|
30
|
-
- **Instance
|
|
31
|
-
- **
|
|
32
|
-
- **
|
|
33
|
-
- **
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
mcp-hub-lite tool-use list-tools
|
|
152
|
-
|
|
153
|
-
# List tools from a specific server
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
mcp-hub-lite tool-use call-tool --tool
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
"
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
"
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
|
|
190
|
-
"
|
|
191
|
-
"
|
|
192
|
-
"
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
"
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
"
|
|
199
|
-
"
|
|
200
|
-
"
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
"
|
|
206
|
-
"
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
1
|
+
# MCP-HUB-LITE
|
|
2
|
+
|
|
3
|
+
[](./LICENSE)
|
|
4
|
+
[](https://nodejs.org/)
|
|
5
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://vitest.dev/)
|
|
7
|
+
[](https://fastify.io/)
|
|
8
|
+
[](https://vuejs.org/)
|
|
9
|
+
[](https://claude.ai/code)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
[中文文档](./README_zh.md)
|
|
14
|
+
|
|
15
|
+
A lightweight MCP management platform designed for independent developers, providing MCP server gateway, grouping, fuzzy search, and MCP HttpStream protocol interface.
|
|
16
|
+
|
|
17
|
+
## Overview
|
|
18
|
+
|
|
19
|
+
MCP-HUB-LITE is an MCP server gateway designed specifically for independent developers. It acts as a proxy between your frontend and multiple backend MCP servers, providing a unified access interface with support for the MCP JSON-RPC 2.0 protocol.
|
|
20
|
+
|
|
21
|
+
### Core Features
|
|
22
|
+
|
|
23
|
+
- **MCP Gateway Service**: Unified proxy interface for multiple backend MCP servers
|
|
24
|
+
- **MCP CLI Tool**: Command-line tool for listing and calling MCP tools across servers
|
|
25
|
+
- **Server Management**: Manage multiple MCP servers through a web interface
|
|
26
|
+
- **Tool Search**: Search and tool discovery across all servers with aggregation
|
|
27
|
+
- **Process Management**: Launch and manage MCP server processes via npx/uvx
|
|
28
|
+
- **Dual-Mode Session**: Stateful (session persistence, SSE, notifications) and stateless (per-request) modes, with UA / header / config priority switching
|
|
29
|
+
- **MCP Notification Push**: Push `notifications/tools/list_changed` and `notifications/resources/list_changed` to connected clients
|
|
30
|
+
- **Multi-Instance Support**: Run multiple instances of the same MCP server with load balancing
|
|
31
|
+
- **Instance Selection Strategies**: Support random, round-robin, and unique-by-tag selection
|
|
32
|
+
- **Tag System**: Organize multiple MCP servers by environment, category, function, etc.
|
|
33
|
+
- **Fault Tolerance**: System continues to operate when individual servers fail
|
|
34
|
+
- **Bilingual Interface**: Support for Chinese/English interface switching
|
|
35
|
+
- **Configuration Management**: Support for hot-reloading and maintenance of `.mcp-hub.json`
|
|
36
|
+
- **MCP Native Resources**: Forward resource calls to backend MCP servers
|
|
37
|
+
- **Security**: Mask sensitive values in config change logs
|
|
38
|
+
|
|
39
|
+
## Quick Start
|
|
40
|
+
|
|
41
|
+
### System Requirements
|
|
42
|
+
|
|
43
|
+
- Node.js 22.x or higher
|
|
44
|
+
- npm or yarn
|
|
45
|
+
- Windows, macOS, or Linux
|
|
46
|
+
|
|
47
|
+
### Installation
|
|
48
|
+
|
|
49
|
+
#### Install from npm
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# Install from npm
|
|
53
|
+
npm install -g @loop_ouroboros/mcp-hub-lite
|
|
54
|
+
|
|
55
|
+
# Start the service
|
|
56
|
+
mcp-hub-lite start
|
|
57
|
+
|
|
58
|
+
# Open UI
|
|
59
|
+
mcp-hub-lite ui
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
#### Build from source
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Install dependencies
|
|
66
|
+
npm install
|
|
67
|
+
|
|
68
|
+
# Run in development mode (frontend and backend hot reload)
|
|
69
|
+
npm run dev
|
|
70
|
+
|
|
71
|
+
# Build production version
|
|
72
|
+
npm run build
|
|
73
|
+
|
|
74
|
+
# Full check (build + tests + code check)
|
|
75
|
+
npm run full:check
|
|
76
|
+
|
|
77
|
+
# Run production version
|
|
78
|
+
npm start
|
|
79
|
+
|
|
80
|
+
# Check status
|
|
81
|
+
mcp-hub-lite status
|
|
82
|
+
|
|
83
|
+
# Open UI interface
|
|
84
|
+
mcp-hub-lite ui
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The server will start at <http://localhost:7788>.
|
|
88
|
+
|
|
89
|
+
## Server Management
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+
Manage all your MCP servers in one place. Add, edit, delete, connect, and disconnect servers through the intuitive web interface.
|
|
94
|
+
|
|
95
|
+
## Gateway & Tools
|
|
96
|
+
|
|
97
|
+

|
|
98
|
+
|
|
99
|
+

|
|
100
|
+
|
|
101
|
+
Discover and call tools from all connected MCP servers through the unified gateway interface. The aggregated tools view provides a single place to search and use all available tools.
|
|
102
|
+
|
|
103
|
+
## Resources
|
|
104
|
+
|
|
105
|
+

|
|
106
|
+
|
|
107
|
+
Browse and manage MCP resources from all connected servers.
|
|
108
|
+
|
|
109
|
+
### Testing
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Run all tests
|
|
113
|
+
npm test
|
|
114
|
+
|
|
115
|
+
# Backend tests
|
|
116
|
+
npm run test:backend
|
|
117
|
+
|
|
118
|
+
# Frontend tests
|
|
119
|
+
npm run test:frontend
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## CLI Commands
|
|
123
|
+
|
|
124
|
+
MCP-HUB-LITE provides a command-line interface for managing the service.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Start the service
|
|
128
|
+
npm start
|
|
129
|
+
# or
|
|
130
|
+
mcp-hub-lite start
|
|
131
|
+
|
|
132
|
+
# Check status
|
|
133
|
+
mcp-hub-lite status
|
|
134
|
+
|
|
135
|
+
# List all servers
|
|
136
|
+
mcp-hub-lite list
|
|
137
|
+
|
|
138
|
+
# Open web interface
|
|
139
|
+
mcp-hub-lite ui
|
|
140
|
+
|
|
141
|
+
# Help
|
|
142
|
+
mcp-hub-lite --help
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Tool Use Command
|
|
146
|
+
|
|
147
|
+
The `tool-use` command provides MCP server tool operations:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# List system tools (default server: mcp-hub-lite)
|
|
151
|
+
mcp-hub-lite tool-use list-tools
|
|
152
|
+
|
|
153
|
+
# List tools from a specific server
|
|
154
|
+
mcp-hub-lite tool-use list-tools --server baidu-search
|
|
155
|
+
|
|
156
|
+
# Get tool schema
|
|
157
|
+
mcp-hub-lite tool-use get-tool --tool list_tools
|
|
158
|
+
|
|
159
|
+
# Call a system tool
|
|
160
|
+
mcp-hub-lite tool-use call-tool --tool list_tools --args '{}'
|
|
161
|
+
|
|
162
|
+
# Call a server tool
|
|
163
|
+
mcp-hub-lite tool-use call-tool --server baidu-search --tool search --args '{"query":"hello"}'
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Configuration
|
|
167
|
+
|
|
168
|
+
MCP-HUB-LITE uses a `.mcp-hub.json` file for configuration. Configuration lookup priority:
|
|
169
|
+
|
|
170
|
+
1. Environment variable `MCP_HUB_CONFIG_PATH`
|
|
171
|
+
2. `~/.mcp-hub-lite/config/.mcp-hub.json` (hidden folder in user home directory)
|
|
172
|
+
|
|
173
|
+
### Configuration Example
|
|
174
|
+
|
|
175
|
+
<details>
|
|
176
|
+
<summary>Click to expand full <code>.mcp-hub.json</code> example</summary>
|
|
177
|
+
|
|
178
|
+
```json
|
|
179
|
+
{
|
|
180
|
+
"version": "1.1.0",
|
|
181
|
+
"servers": [
|
|
182
|
+
{
|
|
183
|
+
"id": "server-1",
|
|
184
|
+
"name": "My MCP Server",
|
|
185
|
+
"description": "Example server",
|
|
186
|
+
"transport": "streamable-http",
|
|
187
|
+
"endpoint": "http://localhost:8080",
|
|
188
|
+
"tags": {
|
|
189
|
+
"env": "development",
|
|
190
|
+
"category": "api-server",
|
|
191
|
+
"function": "http-api",
|
|
192
|
+
"priority": "medium"
|
|
193
|
+
},
|
|
194
|
+
"allowedTools": [],
|
|
195
|
+
"instances": [
|
|
196
|
+
{
|
|
197
|
+
"index": 0,
|
|
198
|
+
"displayName": "Instance 1",
|
|
199
|
+
"enabled": true,
|
|
200
|
+
"env": {}
|
|
201
|
+
}
|
|
202
|
+
],
|
|
203
|
+
"managedProcess": {
|
|
204
|
+
"command": "npx my-mcp-server",
|
|
205
|
+
"managedMode": "npx",
|
|
206
|
+
"processType": "streamable-http"
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
"settings": {
|
|
211
|
+
"language": {
|
|
212
|
+
"current": "en-US",
|
|
213
|
+
"autoDetect": true,
|
|
214
|
+
"fallback": "en-US"
|
|
215
|
+
},
|
|
216
|
+
"logging": {
|
|
217
|
+
"level": "info"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"system": {
|
|
221
|
+
"session": {
|
|
222
|
+
"defaultSessionMode": "stateful",
|
|
223
|
+
"sessionModeRules": {
|
|
224
|
+
"stateful": ["Claude"],
|
|
225
|
+
"stateless": ["CherryStudio"]
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
"gateway": {
|
|
230
|
+
"proxyTimeout": 30000,
|
|
231
|
+
"rateLimit": {
|
|
232
|
+
"enabled": true,
|
|
233
|
+
"maxRequests": 100,
|
|
234
|
+
"windowMs": 60000
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
</details>
|
|
241
|
+
|
|
242
|
+
### Client Configuration
|
|
243
|
+
|
|
244
|
+
To connect your MCP client to MCP-HUB-LITE, add the following to your client's MCP configuration:
|
|
245
|
+
|
|
246
|
+
<details>
|
|
247
|
+
<summary>Claude Code / Claude Desktop (stateful mode — default)</summary>
|
|
248
|
+
|
|
249
|
+
```json
|
|
250
|
+
{
|
|
251
|
+
"mcpServers": {
|
|
252
|
+
"mcp-hub-lite": {
|
|
253
|
+
"type": "http",
|
|
254
|
+
"url": "http://localhost:7788/mcp"
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Stateful mode provides session persistence, SSE streaming, and real-time notifications. UA matching is NOT automatic — it requires manually adding `"ClaudeCode"` to `system.session.sessionModeRules.stateful` in `.mcp-hub.json`. Standard MCP clients like Claude Code work with the default stateful mode without extra configuration.
|
|
261
|
+
|
|
262
|
+
</details>
|
|
263
|
+
|
|
264
|
+
<details>
|
|
265
|
+
<summary>CherryStudio (stateless mode)</summary>
|
|
266
|
+
|
|
267
|
+
```json
|
|
268
|
+
{
|
|
269
|
+
"mcpServers": {
|
|
270
|
+
"mcp-hub-lite": {
|
|
271
|
+
"type": "http",
|
|
272
|
+
"url": "http://localhost:7788/mcp",
|
|
273
|
+
"headers": {
|
|
274
|
+
"x-mcp-session-mode": "stateless"
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
CherryStudio requires the `x-mcp-session-mode: stateless` header to use stateless mode. UA matching is NOT automatic — it requires manually adding `"CherryStudio"` to `system.session.sessionModeRules.stateless` in `.mcp-hub.json`. The header approach is the recommended way and takes highest priority.
|
|
282
|
+
|
|
283
|
+
Stateless mode uses per-request transport — each POST creates an independent transport, no session persistence, GET returns 405.
|
|
284
|
+
|
|
285
|
+
</details>
|
|
286
|
+
|
|
287
|
+
<details>
|
|
288
|
+
<summary>Manual session mode override</summary>
|
|
289
|
+
|
|
290
|
+
Add the `x-mcp-session-mode` header to force a specific mode:
|
|
291
|
+
|
|
292
|
+
```json
|
|
293
|
+
{
|
|
294
|
+
"mcpServers": {
|
|
295
|
+
"mcp-hub-lite": {
|
|
296
|
+
"type": "http",
|
|
297
|
+
"url": "http://localhost:7788/mcp",
|
|
298
|
+
"headers": {
|
|
299
|
+
"x-mcp-session-mode": "stateful"
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
Valid values: `"stateful"` or `"stateless"`. Header takes highest priority over UA matching and config defaults.
|
|
307
|
+
|
|
308
|
+
</details>
|
|
309
|
+
|
|
310
|
+
## Usage Guide
|
|
311
|
+
|
|
312
|
+
### Adding MCP Servers
|
|
313
|
+
|
|
314
|
+
Through the web interface:
|
|
315
|
+
|
|
316
|
+
1. Open <http://localhost:7788>
|
|
317
|
+
2. Navigate to the "Servers" page
|
|
318
|
+
3. Click "Add Server"
|
|
319
|
+
4. Fill in server details and save
|
|
320
|
+
|
|
321
|
+
## Process Management
|
|
322
|
+
|
|
323
|
+
MCP-HUB-LITE supports launching and managing MCP servers using your local environment:
|
|
324
|
+
|
|
325
|
+
### Supported Launch Methods
|
|
326
|
+
|
|
327
|
+
- **Node.js (npx)**: `npx package-name`
|
|
328
|
+
- **Python (uvx)**: `uvx package-name`
|
|
329
|
+
- **Direct Command**: Custom startup command
|
|
330
|
+
|
|
331
|
+
### Process Management Features
|
|
332
|
+
|
|
333
|
+
- Start/stop/restart MCP servers
|
|
334
|
+
- Monitor CPU and memory usage
|
|
335
|
+
- Crash detection and automatic restart
|
|
336
|
+
- PID tracking and health checks
|
|
337
|
+
|
|
338
|
+
## Development Guide
|
|
339
|
+
|
|
340
|
+
### Project Structure
|
|
341
|
+
|
|
342
|
+
```
|
|
343
|
+
src/
|
|
344
|
+
├── api/ # API implementations
|
|
345
|
+
│ ├── mcp/ # MCP protocol handlers
|
|
346
|
+
│ ├── web/ # Web API routes (includes sessions.ts)
|
|
347
|
+
│ └── ws/ # WebSocket routes
|
|
348
|
+
├── models/ # Data models
|
|
349
|
+
├── services/ # Core business logic
|
|
350
|
+
│ ├── gateway/ # MCP gateway service
|
|
351
|
+
│ ├── connection/ # Connection management
|
|
352
|
+
│ └── hub-tools/ # Hub tools service
|
|
353
|
+
├── utils/ # Utility functions
|
|
354
|
+
│ ├── logger/ # Logging utilities
|
|
355
|
+
│ └── transports/ # MCP transport implementations
|
|
356
|
+
├── config/ # Configuration
|
|
357
|
+
├── cli/ # CLI commands
|
|
358
|
+
│ └── commands/ # CLI command implementations
|
|
359
|
+
├── pid/ # Process ID management
|
|
360
|
+
└── server/ # Server runtime
|
|
361
|
+
|
|
362
|
+
frontend/
|
|
363
|
+
├── src/
|
|
364
|
+
│ ├── components/ # Reusable UI components
|
|
365
|
+
│ ├── views/ # Page view components
|
|
366
|
+
│ ├── stores/ # Pinia state management
|
|
367
|
+
│ ├── composables/ # Vue composables
|
|
368
|
+
│ ├── router/ # Vue Router configuration
|
|
369
|
+
│ ├── i18n/ # Internationalization
|
|
370
|
+
│ └── types/ # Frontend type definitions
|
|
371
|
+
|
|
372
|
+
shared/
|
|
373
|
+
├── models/ # Shared models
|
|
374
|
+
└── types/ # Shared types
|
|
375
|
+
|
|
376
|
+
tests/
|
|
377
|
+
├── unit/ # Unit tests
|
|
378
|
+
├── integration/ # Integration tests
|
|
379
|
+
├── contract/ # Contract tests
|
|
380
|
+
├── helpers/ # Test helpers
|
|
381
|
+
└── types/ # Test types
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Adding New Features
|
|
385
|
+
|
|
386
|
+
1. Create models (models/)
|
|
387
|
+
2. Implement services (services/)
|
|
388
|
+
3. Add API routes (api/)
|
|
389
|
+
4. Write tests (tests/)
|
|
390
|
+
5. Update configuration files
|
|
391
|
+
|
|
392
|
+
## Detailed Technical Documentation
|
|
393
|
+
|
|
394
|
+
Complete project architecture, constraints, and design decisions can be found in:
|
|
395
|
+
|
|
396
|
+
- [CLAUDE.md](./CLAUDE.md) - Project AI context and module documentation
|
|
397
|
+
|
|
398
|
+
## License
|
|
399
|
+
|
|
400
|
+
MIT
|
|
401
|
+
|
|
402
|
+
## Contributing
|
|
403
|
+
|
|
404
|
+
Pull Requests and Issues are welcome!
|
|
405
|
+
|
|
406
|
+
## Community
|
|
407
|
+
|
|
408
|
+
Thanks to the LinuxDo (linux.do) community for the discussions, sharing, and feedback.
|
|
409
|
+
|
|
410
|
+
<!-- Badges -->
|