@samanhappy/mcphub 0.10.6 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.fr.md +36 -152
- package/README.md +34 -255
- package/README.zh.md +33 -212
- package/dist/config/DaoConfigService.js +3 -3
- package/dist/config/DaoConfigService.js.map +1 -1
- package/dist/controllers/authController.js +2 -2
- package/dist/controllers/authController.js.map +1 -1
- package/dist/controllers/groupController.js +24 -24
- package/dist/controllers/groupController.js.map +1 -1
- package/dist/controllers/openApiController.js +1 -1
- package/dist/controllers/openApiController.js.map +1 -1
- package/dist/controllers/serverController.js +95 -61
- package/dist/controllers/serverController.js.map +1 -1
- package/dist/controllers/userController.js +22 -21
- package/dist/controllers/userController.js.map +1 -1
- package/dist/dao/DaoFactory.js +19 -0
- package/dist/dao/DaoFactory.js.map +1 -1
- package/dist/dao/DatabaseDaoFactory.js +68 -0
- package/dist/dao/DatabaseDaoFactory.js.map +1 -0
- package/dist/dao/GroupDaoDbImpl.js +131 -0
- package/dist/dao/GroupDaoDbImpl.js.map +1 -0
- package/dist/dao/ServerDaoDbImpl.js +109 -0
- package/dist/dao/ServerDaoDbImpl.js.map +1 -0
- package/dist/dao/SystemConfigDaoDbImpl.js +56 -0
- package/dist/dao/SystemConfigDaoDbImpl.js.map +1 -0
- package/dist/dao/UserConfigDaoDbImpl.js +61 -0
- package/dist/dao/UserConfigDaoDbImpl.js.map +1 -0
- package/dist/dao/UserDaoDbImpl.js +90 -0
- package/dist/dao/UserDaoDbImpl.js.map +1 -0
- package/dist/dao/index.js +7 -0
- package/dist/dao/index.js.map +1 -1
- package/dist/db/entities/Group.js +49 -0
- package/dist/db/entities/Group.js.map +1 -0
- package/dist/db/entities/Server.js +93 -0
- package/dist/db/entities/Server.js.map +1 -0
- package/dist/db/entities/SystemConfig.js +66 -0
- package/dist/db/entities/SystemConfig.js.map +1 -0
- package/dist/db/entities/User.js +45 -0
- package/dist/db/entities/User.js.map +1 -0
- package/dist/db/entities/UserConfig.js +45 -0
- package/dist/db/entities/UserConfig.js.map +1 -0
- package/dist/db/entities/index.js +7 -2
- package/dist/db/entities/index.js.map +1 -1
- package/dist/db/repositories/GroupRepository.js +81 -0
- package/dist/db/repositories/GroupRepository.js.map +1 -0
- package/dist/db/repositories/ServerRepository.js +80 -0
- package/dist/db/repositories/ServerRepository.js.map +1 -0
- package/dist/db/repositories/SystemConfigRepository.js +64 -0
- package/dist/db/repositories/SystemConfigRepository.js.map +1 -0
- package/dist/db/repositories/UserConfigRepository.js +69 -0
- package/dist/db/repositories/UserConfigRepository.js.map +1 -0
- package/dist/db/repositories/UserRepository.js +68 -0
- package/dist/db/repositories/UserRepository.js.map +1 -0
- package/dist/db/repositories/index.js +6 -1
- package/dist/db/repositories/index.js.map +1 -1
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/middlewares/auth.js +1 -1
- package/dist/middlewares/auth.js.map +1 -1
- package/dist/middlewares/userContext.js +1 -1
- package/dist/middlewares/userContext.js.map +1 -1
- package/dist/models/User.js +29 -48
- package/dist/models/User.js.map +1 -1
- package/dist/routes/index.js +2 -1
- package/dist/routes/index.js.map +1 -1
- package/dist/scripts/migrate-to-database.js +5 -0
- package/dist/scripts/migrate-to-database.js.map +1 -0
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/services/groupService.js +87 -113
- package/dist/services/groupService.js.map +1 -1
- package/dist/services/keepAliveService.js +58 -0
- package/dist/services/keepAliveService.js.map +1 -0
- package/dist/services/mcpOAuthProvider.js +22 -28
- package/dist/services/mcpOAuthProvider.js.map +1 -1
- package/dist/services/mcpService.js +73 -92
- package/dist/services/mcpService.js.map +1 -1
- package/dist/services/oauthServerService.js +18 -12
- package/dist/services/oauthServerService.js.map +1 -1
- package/dist/services/oauthService.js +11 -10
- package/dist/services/oauthService.js.map +1 -1
- package/dist/services/oauthSettingsStore.js +17 -12
- package/dist/services/oauthSettingsStore.js.map +1 -1
- package/dist/services/openApiGeneratorService.js +6 -7
- package/dist/services/openApiGeneratorService.js.map +1 -1
- package/dist/services/sseService.js +20 -62
- package/dist/services/sseService.js.map +1 -1
- package/dist/services/userService.js +38 -45
- package/dist/services/userService.js.map +1 -1
- package/dist/utils/migration.js +184 -0
- package/dist/utils/migration.js.map +1 -0
- package/dist/utils/oauthBearer.js +3 -3
- package/dist/utils/oauthBearer.js.map +1 -1
- package/frontend/dist/assets/index-Dno2pywv.js +251 -0
- package/frontend/dist/assets/index-Dno2pywv.js.map +1 -0
- package/frontend/dist/index.html +1 -1
- package/mcp_settings.json +23 -1
- package/package.json +1 -1
- package/frontend/dist/assets/index-DDht0WYq.js +0 -251
- package/frontend/dist/assets/index-DDht0WYq.js.map +0 -1
package/README.zh.md
CHANGED
|
@@ -13,236 +13,74 @@ MCPHub 通过将多个 MCP(Model Context Protocol)服务器组织为灵活
|
|
|
13
13
|
|
|
14
14
|
## 🚀 功能亮点
|
|
15
15
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
- **Docker
|
|
16
|
+
- **集中式管理** - 在统一控制台中监控和管理所有 MCP 服务器
|
|
17
|
+
- **灵活路由** - 通过 HTTP/SSE 访问所有服务器、特定分组或单个服务器
|
|
18
|
+
- **智能路由** - 基于向量语义搜索的 AI 工具发现 ([了解更多](https://docs.mcphubx.com/zh/features/smart-routing))
|
|
19
|
+
- **热插拔配置** - 无需停机即可添加、移除或更新服务器
|
|
20
|
+
- **OAuth 2.0 支持** - 客户端和服务端模式,实现安全认证 ([了解更多](https://docs.mcphubx.com/zh/features/oauth))
|
|
21
|
+
- **数据库模式** - 将配置存储在 PostgreSQL 中,适用于生产环境 ([了解更多](https://docs.mcphubx.com/zh/configuration/database-configuration))
|
|
22
|
+
- **Docker 就绪** - 容器化部署,开箱即用
|
|
23
23
|
|
|
24
24
|
## 🔧 快速开始
|
|
25
25
|
|
|
26
26
|
### 配置
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
创建 `mcp_settings.json` 文件:
|
|
29
29
|
|
|
30
30
|
```json
|
|
31
31
|
{
|
|
32
32
|
"mcpServers": {
|
|
33
|
-
"
|
|
33
|
+
"time": {
|
|
34
34
|
"command": "npx",
|
|
35
|
-
"args": ["-y", "
|
|
36
|
-
"env": {
|
|
37
|
-
"AMAP_MAPS_API_KEY": "your-api-key"
|
|
38
|
-
}
|
|
39
|
-
},
|
|
40
|
-
"playwright": {
|
|
41
|
-
"command": "npx",
|
|
42
|
-
"args": ["@playwright/mcp@latest", "--headless"]
|
|
35
|
+
"args": ["-y", "time-mcp"]
|
|
43
36
|
},
|
|
44
37
|
"fetch": {
|
|
45
38
|
"command": "uvx",
|
|
46
39
|
"args": ["mcp-server-fetch"]
|
|
47
|
-
},
|
|
48
|
-
"slack": {
|
|
49
|
-
"command": "npx",
|
|
50
|
-
"args": ["-y", "@modelcontextprotocol/server-slack"],
|
|
51
|
-
"env": {
|
|
52
|
-
"SLACK_BOT_TOKEN": "your-bot-token",
|
|
53
|
-
"SLACK_TEAM_ID": "your-team-id"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
#### OAuth 配置(可选)
|
|
61
|
-
|
|
62
|
-
MCPHub 支持通过 OAuth 2.0 访问上游 MCP 服务器。完整说明请参阅[《OAuth 功能指南》](docs/zh/features/oauth.mdx)。实际使用中通常会遇到两类配置:
|
|
63
|
-
|
|
64
|
-
- **支持动态注册的服务器**(如 Vercel、Linear):会公开全部元数据,MCPHub 可自动注册并完成授权,仅需声明服务器地址。
|
|
65
|
-
- **需要手动配置客户端的服务器**(如 GitHub Copilot):需要在提供商后台创建 OAuth 应用,并将获得的 Client ID/Secret 写入 MCPHub。
|
|
66
|
-
|
|
67
|
-
动态注册示例:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"mcpServers": {
|
|
72
|
-
"vercel": {
|
|
73
|
-
"type": "sse",
|
|
74
|
-
"url": "https://mcp.vercel.com"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
手动注册示例:
|
|
81
|
-
|
|
82
|
-
```json
|
|
83
|
-
{
|
|
84
|
-
"mcpServers": {
|
|
85
|
-
"github": {
|
|
86
|
-
"type": "sse",
|
|
87
|
-
"url": "https://api.githubcopilot.com/mcp/",
|
|
88
|
-
"oauth": {
|
|
89
|
-
"clientId": "${GITHUB_OAUTH_APP_ID}",
|
|
90
|
-
"clientSecret": "${GITHUB_OAUTH_APP_SECRET}"
|
|
91
|
-
}
|
|
92
40
|
}
|
|
93
41
|
}
|
|
94
42
|
}
|
|
95
43
|
```
|
|
96
44
|
|
|
97
|
-
|
|
45
|
+
📖 查看[配置指南](https://docs.mcphubx.com/zh/configuration/mcp-settings)了解完整选项,包括 OAuth、环境变量等。
|
|
98
46
|
|
|
99
47
|
### Docker 部署
|
|
100
48
|
|
|
101
|
-
**推荐**:挂载自定义配置:
|
|
102
|
-
|
|
103
49
|
```bash
|
|
50
|
+
# 挂载自定义配置运行(推荐)
|
|
104
51
|
docker run -p 3000:3000 -v ./mcp_settings.json:/app/mcp_settings.json -v ./data:/app/data samanhappy/mcphub
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
或使用默认配置运行:
|
|
108
52
|
|
|
109
|
-
|
|
53
|
+
# 或使用默认配置运行
|
|
110
54
|
docker run -p 3000:3000 samanhappy/mcphub
|
|
111
55
|
```
|
|
112
56
|
|
|
113
57
|
### 访问控制台
|
|
114
58
|
|
|
115
|
-
打开 `http://localhost:3000
|
|
116
|
-
|
|
117
|
-
> **提示**:默认用户名/密码为 `admin` / `admin123`。
|
|
118
|
-
|
|
119
|
-
**控制台功能**:
|
|
120
|
-
|
|
121
|
-
- 实时监控所有 MCP 服务器状态
|
|
122
|
-
- 启用/禁用或重新配置服务器
|
|
123
|
-
- 分组管理,组织服务器访问
|
|
124
|
-
- 用户管理,设定权限
|
|
125
|
-
|
|
126
|
-
### 支持流式的 HTTP 端点
|
|
127
|
-
|
|
128
|
-
> 截至目前,各家 AI 客户端对流式的 HTTP 端点支持不一,如果遇到问题,可以使用 SSE 端点或者等待更新。
|
|
129
|
-
|
|
130
|
-
通过以下地址连接 AI 客户端(如 Claude Desktop、Cursor、DeepChat 等):
|
|
131
|
-
|
|
132
|
-
```
|
|
133
|
-
http://localhost:3000/mcp
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
这个端点为所有 MCP 服务器提供统一的流式 HTTP 接口。它允许您:
|
|
137
|
-
|
|
138
|
-
- 向任何配置的 MCP 服务器发送请求
|
|
139
|
-
- 实时接收响应
|
|
140
|
-
- 轻松与各种 AI 客户端和工具集成
|
|
141
|
-
- 对所有服务器使用相同的端点,简化集成过程
|
|
142
|
-
|
|
143
|
-
**智能路由(实验性功能)**:
|
|
144
|
-
|
|
145
|
-
智能路由是 MCPHub 的智能工具发现系统,使用向量语义搜索自动为任何给定任务找到最相关的工具。
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
# 在所有服务器中搜索
|
|
149
|
-
http://localhost:3000/mcp/$smart
|
|
150
|
-
|
|
151
|
-
# 在特定分组中搜索
|
|
152
|
-
http://localhost:3000/mcp/$smart/{group}
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
**工作原理:**
|
|
156
|
-
|
|
157
|
-
1. **工具索引**:所有 MCP 工具自动转换为向量嵌入并存储在 PostgreSQL 与 pgvector 中
|
|
158
|
-
2. **语义搜索**:用户查询转换为向量并使用余弦相似度与工具嵌入匹配
|
|
159
|
-
3. **智能筛选**:动态阈值确保相关结果且无噪声
|
|
160
|
-
4. **精确执行**:找到的工具可以直接执行并进行适当的参数验证
|
|
161
|
-
5. **分组限定**:可选择将搜索限制在特定分组的服务器内以获得更精确的结果
|
|
162
|
-
|
|
163
|
-
**设置要求:**
|
|
164
|
-
|
|
165
|
-

|
|
166
|
-
|
|
167
|
-
为了启用智能路由,您需要:
|
|
168
|
-
|
|
169
|
-
- 支持 pgvector 扩展的 PostgreSQL
|
|
170
|
-
- OpenAI API 密钥(或兼容的嵌入服务)
|
|
171
|
-
- 在 MCPHub 设置中启用智能路由
|
|
172
|
-
|
|
173
|
-
**分组限定的智能路由**:
|
|
174
|
-
|
|
175
|
-
您可以将智能路由与分组筛选结合使用,仅在特定服务器分组内搜索:
|
|
176
|
-
|
|
177
|
-
```
|
|
178
|
-
# 仅在生产服务器中搜索
|
|
179
|
-
http://localhost:3000/mcp/$smart/production
|
|
180
|
-
|
|
181
|
-
# 仅在开发服务器中搜索
|
|
182
|
-
http://localhost:3000/mcp/$smart/development
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
这样可以实现:
|
|
186
|
-
- **精准发现**:仅从相关服务器查找工具
|
|
187
|
-
- **环境隔离**:按环境(开发、测试、生产)分离工具发现
|
|
188
|
-
- **基于团队的访问**:将工具搜索限制在特定团队的服务器分组
|
|
189
|
-
|
|
190
|
-
**基于分组的 HTTP 端点(推荐)**:
|
|
191
|
-

|
|
192
|
-
要针对特定服务器分组进行访问,请使用基于分组的 HTTP 端点:
|
|
193
|
-
|
|
194
|
-
```
|
|
195
|
-
http://localhost:3000/mcp/{group}
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
其中 `{group}` 是您在控制面板中创建的分组 ID 或名称。这样做可以:
|
|
199
|
-
|
|
200
|
-
- 连接到按用例组织的特定 MCP 服务器子集
|
|
201
|
-
- 隔离不同的 AI 工具,使其只能访问相关服务器
|
|
202
|
-
- 为不同环境或团队实现更精细的访问控制
|
|
203
|
-
- 通过分组名称轻松识别和管理服务器
|
|
204
|
-
- 允许不同的 AI 客户端使用相同的端点,简化集成过程
|
|
205
|
-
|
|
206
|
-
**针对特定服务器的 HTTP 端点**:
|
|
207
|
-
要针对特定服务器进行访问,请使用以下格式:
|
|
59
|
+
打开 `http://localhost:3000`,使用默认账号登录:`admin` / `admin123`
|
|
208
60
|
|
|
209
|
-
|
|
210
|
-
http://localhost:3000/mcp/{server}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
其中 `{server}` 是您要连接的服务器名称。这样做可以直接访问特定的 MCP 服务器。
|
|
61
|
+
### 连接 AI 客户端
|
|
214
62
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
### SSE 端点集成 (未来可能废弃)
|
|
218
|
-
|
|
219
|
-
通过以下地址连接 AI 客户端(如 Claude Desktop、Cursor、DeepChat 等):
|
|
63
|
+
通过以下地址连接 AI 客户端(Claude Desktop、Cursor 等):
|
|
220
64
|
|
|
221
65
|
```
|
|
222
|
-
http://localhost:3000/
|
|
66
|
+
http://localhost:3000/mcp # 所有服务器
|
|
67
|
+
http://localhost:3000/mcp/{group} # 特定分组
|
|
68
|
+
http://localhost:3000/mcp/{server} # 特定服务器
|
|
69
|
+
http://localhost:3000/mcp/$smart # 智能路由
|
|
223
70
|
```
|
|
224
71
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
```
|
|
228
|
-
# 在所有服务器中搜索
|
|
229
|
-
http://localhost:3000/sse/$smart
|
|
230
|
-
|
|
231
|
-
# 在特定分组中搜索
|
|
232
|
-
http://localhost:3000/sse/$smart/{group}
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
要针对特定服务器分组进行访问,请使用基于分组的 SSE 端点:
|
|
236
|
-
|
|
237
|
-
```
|
|
238
|
-
http://localhost:3000/sse/{group}
|
|
239
|
-
```
|
|
72
|
+
📖 查看 [API 参考](https://docs.mcphubx.com/zh/api-reference)了解详细的端点文档。
|
|
240
73
|
|
|
241
|
-
|
|
74
|
+
## 📚 文档
|
|
242
75
|
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
76
|
+
| 主题 | 描述 |
|
|
77
|
+
| ------------------------------------------------------------------------------ | ---------------------------- |
|
|
78
|
+
| [快速开始](https://docs.mcphubx.com/zh/quickstart) | 5 分钟快速上手 |
|
|
79
|
+
| [配置指南](https://docs.mcphubx.com/zh/configuration/mcp-settings) | MCP 服务器配置选项 |
|
|
80
|
+
| [数据库模式](https://docs.mcphubx.com/zh/configuration/database-configuration) | PostgreSQL 生产环境配置 |
|
|
81
|
+
| [OAuth](https://docs.mcphubx.com/zh/features/oauth) | OAuth 2.0 客户端和服务端配置 |
|
|
82
|
+
| [智能路由](https://docs.mcphubx.com/zh/features/smart-routing) | AI 驱动的工具发现 |
|
|
83
|
+
| [Docker 部署](https://docs.mcphubx.com/zh/configuration/docker-setup) | Docker 部署指南 |
|
|
246
84
|
|
|
247
85
|
## 🧑💻 本地开发
|
|
248
86
|
|
|
@@ -253,19 +91,9 @@ pnpm install
|
|
|
253
91
|
pnpm dev
|
|
254
92
|
```
|
|
255
93
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
> 针对 Windows 用户,可能需要分别启动后端服务器和前端:`pnpm backend:dev`,`pnpm frontend:dev`。
|
|
259
|
-
|
|
260
|
-
## 🛠️ 常见问题
|
|
94
|
+
> Windows 用户需分别启动后端和前端:`pnpm backend:dev`,`pnpm frontend:dev`
|
|
261
95
|
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
如果您在使用 nginx 反向代理 MCPHub,请确保在 nginx 配置中添加以下内容:
|
|
265
|
-
|
|
266
|
-
```nginx
|
|
267
|
-
proxy_buffering off
|
|
268
|
-
```
|
|
96
|
+
📖 查看[开发指南](https://docs.mcphubx.com/zh/development)了解详细设置说明。
|
|
269
97
|
|
|
270
98
|
## 🔍 技术栈
|
|
271
99
|
|
|
@@ -276,13 +104,6 @@ proxy_buffering off
|
|
|
276
104
|
|
|
277
105
|
## 👥 贡献指南
|
|
278
106
|
|
|
279
|
-
期待您的贡献!
|
|
280
|
-
|
|
281
|
-
- 新功能与优化
|
|
282
|
-
- 文档完善
|
|
283
|
-
- Bug 报告与修复
|
|
284
|
-
- 翻译与建议
|
|
285
|
-
|
|
286
107
|
欢迎加入企微交流共建群,由于群人数限制,有兴趣的同学可以扫码添加管理员为好友后拉入群聊。
|
|
287
108
|
|
|
288
109
|
<img src="assets/wexin.png" width="350">
|
|
@@ -293,7 +114,7 @@ proxy_buffering off
|
|
|
293
114
|
|
|
294
115
|
## 致谢
|
|
295
116
|
|
|
296
|
-
|
|
117
|
+
感谢以下朋友的赞赏:小白、唐秀川、琛、孔、黄祥取、兰军飞、无名之辈、Kyle,以及其他匿名支持者。
|
|
297
118
|
|
|
298
119
|
## 🌟 Star 历史趋势
|
|
299
120
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getUserDao, getServerDao, getGroupDao, getSystemConfigDao, getUserConfigDao, } from '../dao/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Configuration service using DAO layer
|
|
4
4
|
*/
|
|
@@ -202,9 +202,9 @@ export class DaoConfigService {
|
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
/**
|
|
205
|
-
* Create a DaoConfigService with
|
|
205
|
+
* Create a DaoConfigService with DAO implementations from factory
|
|
206
206
|
*/
|
|
207
207
|
export function createDaoConfigService() {
|
|
208
|
-
return new DaoConfigService(
|
|
208
|
+
return new DaoConfigService(getUserDao(), getServerDao(), getGroupDao(), getSystemConfigDao(), getUserConfigDao());
|
|
209
209
|
}
|
|
210
210
|
//# sourceMappingURL=DaoConfigService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DaoConfigService.js","sourceRoot":"","sources":["../../src/config/DaoConfigService.ts"],"names":[],"mappings":"AACA,OAAO,EAOL,
|
|
1
|
+
{"version":3,"file":"DaoConfigService.js","sourceRoot":"","sources":["../../src/config/DaoConfigService.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export const login = async (req, res) => {
|
|
|
24
24
|
const { username, password } = req.body;
|
|
25
25
|
try {
|
|
26
26
|
// Find user by username
|
|
27
|
-
const user = findUserByUsername(username);
|
|
27
|
+
const user = await findUserByUsername(username);
|
|
28
28
|
if (!user) {
|
|
29
29
|
res.status(401).json({
|
|
30
30
|
success: false,
|
|
@@ -164,7 +164,7 @@ export const changePassword = async (req, res) => {
|
|
|
164
164
|
return;
|
|
165
165
|
}
|
|
166
166
|
// Find user by username
|
|
167
|
-
const user = findUserByUsername(username);
|
|
167
|
+
const user = await findUserByUsername(username);
|
|
168
168
|
if (!user) {
|
|
169
169
|
res.status(404).json({ success: false, message: 'User not found' });
|
|
170
170
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authController.js","sourceRoot":"","sources":["../../src/controllers/authController.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,GAAgB,cAAc,EAAE,CAAC;AAElD,MAAM,YAAY,GAAG,KAAK,CAAC;AAE3B,aAAa;AACb,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;IACxE,wCAAwC;IACxC,MAAM,CAAC,GAAI,GAAW,CAAC,CAAC,CAAC;IAEzB,mBAAmB;IACnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QACtB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,CAAC,CAAC,8BAA8B,CAAC;YAC1C,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE;SACvB,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IAExC,IAAI,CAAC;QACH,wBAAwB;QACxB,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"authController.js","sourceRoot":"","sources":["../../src/controllers/authController.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { getAllGroups, getGroupByIdOrName, createGroup, updateGroup, updateGroupServers, deleteGroup, addServerToGroup, removeServerFromGroup, getServerConfigInGroup, getServerConfigsInGroup, updateServerToolsInGroup, } from '../services/groupService.js';
|
|
2
2
|
// Get all groups
|
|
3
|
-
export const getGroups = (_, res) => {
|
|
3
|
+
export const getGroups = async (_, res) => {
|
|
4
4
|
try {
|
|
5
|
-
const groups = getAllGroups();
|
|
5
|
+
const groups = await getAllGroups();
|
|
6
6
|
const response = {
|
|
7
7
|
success: true,
|
|
8
8
|
data: groups,
|
|
@@ -17,7 +17,7 @@ export const getGroups = (_, res) => {
|
|
|
17
17
|
}
|
|
18
18
|
};
|
|
19
19
|
// Get a specific group by ID
|
|
20
|
-
export const getGroup = (req, res) => {
|
|
20
|
+
export const getGroup = async (req, res) => {
|
|
21
21
|
try {
|
|
22
22
|
const { id } = req.params;
|
|
23
23
|
if (!id) {
|
|
@@ -27,7 +27,7 @@ export const getGroup = (req, res) => {
|
|
|
27
27
|
});
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
const group = getGroupByIdOrName(id);
|
|
30
|
+
const group = await getGroupByIdOrName(id);
|
|
31
31
|
if (!group) {
|
|
32
32
|
res.status(404).json({
|
|
33
33
|
success: false,
|
|
@@ -49,7 +49,7 @@ export const getGroup = (req, res) => {
|
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
51
|
// Create a new group
|
|
52
|
-
export const createNewGroup = (req, res) => {
|
|
52
|
+
export const createNewGroup = async (req, res) => {
|
|
53
53
|
try {
|
|
54
54
|
const { name, description, servers } = req.body;
|
|
55
55
|
if (!name) {
|
|
@@ -63,7 +63,7 @@ export const createNewGroup = (req, res) => {
|
|
|
63
63
|
// Set owner property - use current user's username, default to 'admin'
|
|
64
64
|
const currentUser = req.user;
|
|
65
65
|
const owner = currentUser?.username || 'admin';
|
|
66
|
-
const newGroup = createGroup(name, description, serverList, owner);
|
|
66
|
+
const newGroup = await createGroup(name, description, serverList, owner);
|
|
67
67
|
if (!newGroup) {
|
|
68
68
|
res.status(400).json({
|
|
69
69
|
success: false,
|
|
@@ -86,7 +86,7 @@ export const createNewGroup = (req, res) => {
|
|
|
86
86
|
}
|
|
87
87
|
};
|
|
88
88
|
// Update an existing group
|
|
89
|
-
export const updateExistingGroup = (req, res) => {
|
|
89
|
+
export const updateExistingGroup = async (req, res) => {
|
|
90
90
|
try {
|
|
91
91
|
const { id } = req.params;
|
|
92
92
|
const { name, description, servers } = req.body;
|
|
@@ -112,7 +112,7 @@ export const updateExistingGroup = (req, res) => {
|
|
|
112
112
|
});
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
|
-
const updatedGroup = updateGroup(id, updateData);
|
|
115
|
+
const updatedGroup = await updateGroup(id, updateData);
|
|
116
116
|
if (!updatedGroup) {
|
|
117
117
|
res.status(404).json({
|
|
118
118
|
success: false,
|
|
@@ -135,7 +135,7 @@ export const updateExistingGroup = (req, res) => {
|
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
137
|
// Update servers in a group (batch update) - supports both string[] and server config format
|
|
138
|
-
export const updateGroupServersBatch = (req, res) => {
|
|
138
|
+
export const updateGroupServersBatch = async (req, res) => {
|
|
139
139
|
try {
|
|
140
140
|
const { id } = req.params;
|
|
141
141
|
const { servers } = req.body;
|
|
@@ -175,7 +175,7 @@ export const updateGroupServersBatch = (req, res) => {
|
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
const updatedGroup = updateGroupServers(id, servers);
|
|
178
|
+
const updatedGroup = await updateGroupServers(id, servers);
|
|
179
179
|
if (!updatedGroup) {
|
|
180
180
|
res.status(404).json({
|
|
181
181
|
success: false,
|
|
@@ -198,7 +198,7 @@ export const updateGroupServersBatch = (req, res) => {
|
|
|
198
198
|
}
|
|
199
199
|
};
|
|
200
200
|
// Delete a group
|
|
201
|
-
export const deleteExistingGroup = (req, res) => {
|
|
201
|
+
export const deleteExistingGroup = async (req, res) => {
|
|
202
202
|
try {
|
|
203
203
|
const { id } = req.params;
|
|
204
204
|
if (!id) {
|
|
@@ -208,7 +208,7 @@ export const deleteExistingGroup = (req, res) => {
|
|
|
208
208
|
});
|
|
209
209
|
return;
|
|
210
210
|
}
|
|
211
|
-
const success = deleteGroup(id);
|
|
211
|
+
const success = await deleteGroup(id);
|
|
212
212
|
if (!success) {
|
|
213
213
|
res.status(404).json({
|
|
214
214
|
success: false,
|
|
@@ -229,7 +229,7 @@ export const deleteExistingGroup = (req, res) => {
|
|
|
229
229
|
}
|
|
230
230
|
};
|
|
231
231
|
// Add server to a group
|
|
232
|
-
export const addServerToExistingGroup = (req, res) => {
|
|
232
|
+
export const addServerToExistingGroup = async (req, res) => {
|
|
233
233
|
try {
|
|
234
234
|
const { id } = req.params;
|
|
235
235
|
const { serverName } = req.body;
|
|
@@ -247,7 +247,7 @@ export const addServerToExistingGroup = (req, res) => {
|
|
|
247
247
|
});
|
|
248
248
|
return;
|
|
249
249
|
}
|
|
250
|
-
const updatedGroup = addServerToGroup(id, serverName);
|
|
250
|
+
const updatedGroup = await addServerToGroup(id, serverName);
|
|
251
251
|
if (!updatedGroup) {
|
|
252
252
|
res.status(404).json({
|
|
253
253
|
success: false,
|
|
@@ -270,7 +270,7 @@ export const addServerToExistingGroup = (req, res) => {
|
|
|
270
270
|
}
|
|
271
271
|
};
|
|
272
272
|
// Remove server from a group
|
|
273
|
-
export const removeServerFromExistingGroup = (req, res) => {
|
|
273
|
+
export const removeServerFromExistingGroup = async (req, res) => {
|
|
274
274
|
try {
|
|
275
275
|
const { id, serverName } = req.params;
|
|
276
276
|
if (!id || !serverName) {
|
|
@@ -280,7 +280,7 @@ export const removeServerFromExistingGroup = (req, res) => {
|
|
|
280
280
|
});
|
|
281
281
|
return;
|
|
282
282
|
}
|
|
283
|
-
const updatedGroup = removeServerFromGroup(id, serverName);
|
|
283
|
+
const updatedGroup = await removeServerFromGroup(id, serverName);
|
|
284
284
|
if (!updatedGroup) {
|
|
285
285
|
res.status(404).json({
|
|
286
286
|
success: false,
|
|
@@ -303,7 +303,7 @@ export const removeServerFromExistingGroup = (req, res) => {
|
|
|
303
303
|
}
|
|
304
304
|
};
|
|
305
305
|
// Get servers in a group
|
|
306
|
-
export const getGroupServers = (req, res) => {
|
|
306
|
+
export const getGroupServers = async (req, res) => {
|
|
307
307
|
try {
|
|
308
308
|
const { id } = req.params;
|
|
309
309
|
if (!id) {
|
|
@@ -313,7 +313,7 @@ export const getGroupServers = (req, res) => {
|
|
|
313
313
|
});
|
|
314
314
|
return;
|
|
315
315
|
}
|
|
316
|
-
const group = getGroupByIdOrName(id);
|
|
316
|
+
const group = await getGroupByIdOrName(id);
|
|
317
317
|
if (!group) {
|
|
318
318
|
res.status(404).json({
|
|
319
319
|
success: false,
|
|
@@ -335,7 +335,7 @@ export const getGroupServers = (req, res) => {
|
|
|
335
335
|
}
|
|
336
336
|
};
|
|
337
337
|
// Get server configurations in a group (including tool selections)
|
|
338
|
-
export const getGroupServerConfigs = (req, res) => {
|
|
338
|
+
export const getGroupServerConfigs = async (req, res) => {
|
|
339
339
|
try {
|
|
340
340
|
const { id } = req.params;
|
|
341
341
|
if (!id) {
|
|
@@ -345,7 +345,7 @@ export const getGroupServerConfigs = (req, res) => {
|
|
|
345
345
|
});
|
|
346
346
|
return;
|
|
347
347
|
}
|
|
348
|
-
const serverConfigs = getServerConfigsInGroup(id);
|
|
348
|
+
const serverConfigs = await getServerConfigsInGroup(id);
|
|
349
349
|
const response = {
|
|
350
350
|
success: true,
|
|
351
351
|
data: serverConfigs,
|
|
@@ -360,7 +360,7 @@ export const getGroupServerConfigs = (req, res) => {
|
|
|
360
360
|
}
|
|
361
361
|
};
|
|
362
362
|
// Get specific server configuration in a group
|
|
363
|
-
export const getGroupServerConfig = (req, res) => {
|
|
363
|
+
export const getGroupServerConfig = async (req, res) => {
|
|
364
364
|
try {
|
|
365
365
|
const { id, serverName } = req.params;
|
|
366
366
|
if (!id || !serverName) {
|
|
@@ -370,7 +370,7 @@ export const getGroupServerConfig = (req, res) => {
|
|
|
370
370
|
});
|
|
371
371
|
return;
|
|
372
372
|
}
|
|
373
|
-
const serverConfig = getServerConfigInGroup(id, serverName);
|
|
373
|
+
const serverConfig = await getServerConfigInGroup(id, serverName);
|
|
374
374
|
if (!serverConfig) {
|
|
375
375
|
res.status(404).json({
|
|
376
376
|
success: false,
|
|
@@ -392,7 +392,7 @@ export const getGroupServerConfig = (req, res) => {
|
|
|
392
392
|
}
|
|
393
393
|
};
|
|
394
394
|
// Update tools for a specific server in a group
|
|
395
|
-
export const updateGroupServerTools = (req, res) => {
|
|
395
|
+
export const updateGroupServerTools = async (req, res) => {
|
|
396
396
|
try {
|
|
397
397
|
const { id, serverName } = req.params;
|
|
398
398
|
const { tools } = req.body;
|
|
@@ -412,7 +412,7 @@ export const updateGroupServerTools = (req, res) => {
|
|
|
412
412
|
});
|
|
413
413
|
return;
|
|
414
414
|
}
|
|
415
|
-
const updatedGroup = updateServerToolsInGroup(id, serverName, tools);
|
|
415
|
+
const updatedGroup = await updateServerToolsInGroup(id, serverName, tools);
|
|
416
416
|
if (!updatedGroup) {
|
|
417
417
|
res.status(404).json({
|
|
418
418
|
success: false,
|