Files
mcphub/docs/zh/features/group-management.mdx
samanhappy 35012f99fc refine docs
2025-08-10 12:52:54 +08:00

574 lines
12 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: '分组管理'
description: '将服务器组织成逻辑组以简化访问控制'
---
## 概述
MCPHub 的分组管理功能允许您根据功能、用例或访问要求将 MCP 服务器组织成逻辑集合。这使您能够对不同的 AI 客户端和用户可用的工具进行精细控制。
## 核心概念
### 什么是分组?
分组是可通过专用端点访问的 MCP 服务器的命名集合。AI 客户端可以连接到特定分组以仅访问相关工具,而不是一次性连接到所有服务器。
### 分组的优势
- **聚焦工具访问**: AI 客户端只看到与其用例相关的工具
- **更好的性能**: 减少工具发现开销
- **增强安全性**: 限制对敏感工具的访问
- **改进组织**: 功能的逻辑分离
- **简化管理**: 更容易一起管理相关服务器
## 创建分组
### 通过仪表板
1. **导航到分组部分**: 在主导航中点击"分组"
2. **点击"创建分组"**: 开始分组创建流程
3. **填写分组详细信息**:
- **名称**: 分组的唯一标识符
4. **添加服务器**: 选择要包含在分组中的服务器
### 通过 API
以编程方式创建分组:
```bash
curl -X POST http://localhost:3000/api/groups \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"name": "web-automation",
"servers": ["playwright", "fetch"]
}'
```
{/* ### 通过配置文件
在您的 `mcp_settings.json` 中定义分组:
```json
{
"mcpServers": {
"fetch": { "command": "uvx", "args": ["mcp-server-fetch"] },
"playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] },
"slack": { "command": "npx", "args": ["@modelcontextprotocol/server-slack"] }
},
"groups": {
"web-tools": {
"name": "web",
"servers": ["fetch", "playwright"],
},
"communication": {
"name": "communication",
"servers": ["slack"],
}
}
}
``` */}
## 分组类型和用例
<AccordionGroup>
<Accordion title="Web 自动化分组">
**用途**: 浏览器自动化和网页抓取
**服务器**:
- `playwright`: 浏览器自动化
- `fetch`: HTTP 请求和网页抓取
- `selenium`: 替代浏览器自动化
**用例**:
- 自动化测试
- 数据收集
- 网页监控
- 内容分析
**端点**: `http://localhost:3000/mcp/web-automation`
</Accordion>
<Accordion title="数据处理分组">
**用途**: 数据操作和分析
**服务器**:
- `sqlite`: 数据库操作
- `filesystem`: 文件操作
- `spreadsheet`: Excel/CSV 处理
**用例**:
- 数据分析
- 报告生成
- 文件处理
- 数据库查询
**端点**: `http://localhost:3000/mcp/data-processing`
</Accordion>
<Accordion title="通信分组">
**用途**: 消息传递和协作
**服务器**:
- `slack`: Slack 集成
- `discord`: Discord 机器人
- `email`: 邮件发送
- `sms`: 短信通知
**用例**:
- 团队通知
- 客户沟通
- 警报系统
- 社交媒体管理
**端点**: `http://localhost:3000/mcp/communication`
</Accordion>
<Accordion title="开发分组">
**用途**: 软件开发工具
**服务器**:
- `github`: GitHub 操作
- `gitlab`: GitLab 集成
- `docker`: 容器管理
- `kubernetes`: K8s 操作
**用例**:
- 代码部署
- 仓库管理
- CI/CD 操作
- 基础设施管理
**端点**: `http://localhost:3000/mcp/development`
</Accordion>
<Accordion title="AI/ML 分组">
**用途**: 机器学习和 AI 工具
**服务器**:
- `openai`: OpenAI API 集成
- `huggingface`: Hugging Face 模型
- `vector-db`: 向量数据库操作
**用例**:
- 模型推理
- 数据嵌入
- 自然语言处理
- 计算机视觉
**端点**: `http://localhost:3000/mcp/ai-ml`
</Accordion>
</AccordionGroup>
{/* ## 分组访问控制
### 访问级别
<Tabs>
<Tab title="公开">
**公开分组**:
- 所有认证用户都可访问
- 无需额外权限
- 在分组列表中可见
- 默认访问级别
```json
{
"name": "public-tools",
"accessLevel": "public",
"servers": ["fetch", "calculator"]
}
```
</Tab>
<Tab title="私有">
**私有分组**:
- 仅对分组成员可见
- 需要明确的用户分配
- 在公开列表中隐藏
- 管理员控制成员身份
```json
{
"name": "internal-tools",
"accessLevel": "private",
"members": ["user1", "user2"],
"servers": ["internal-api", "database"]
}
```
</Tab>
<Tab title="受限">
**受限分组**:
- 基于角色的访问控制
- 需要特定权限
- 启用审计日志
- 限时访问
```json
{
"name": "admin-tools",
"accessLevel": "restricted",
"requiredRoles": ["admin", "operator"],
"servers": ["system-control", "user-management"]
}
```
</Tab>
</Tabs>
### 用户管理
将用户分配给分组:
```bash
# 添加用户到分组
curl -X POST http://localhost:3000/api/groups/web-tools/members \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{"userId": "user123"}'
# 从分组中移除用户
curl -X DELETE http://localhost:3000/api/groups/web-tools/members/user123 \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
# 列出分组成员
curl http://localhost:3000/api/groups/web-tools/members \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
``` */}
## 分组端点
### 访问分组
每个分组都有自己的 MCP 端点:
<Tabs>
<Tab title="HTTP MCP">
```
http://localhost:3000/mcp/{group-name}
```
示例:
- `http://localhost:3000/mcp/web-tools`
- `http://localhost:3000/mcp/data-processing`
- `http://localhost:3000/mcp/communication`
</Tab>
<Tab title="SSE (旧版)">
```
http://localhost:3000/sse/{group-name}
```
示例:
- `http://localhost:3000/sse/web-tools`
- `http://localhost:3000/sse/data-processing`
- `http://localhost:3000/sse/communication`
</Tab>
</Tabs>
### 分组工具发现
当连接到分组端点时AI 客户端将只看到该分组内服务器的工具:
```bash
# 列出 web-tools 分组中的工具
curl -X POST http://localhost:3000/mcp/web-tools \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'
```
响应将只包含来自 `fetch` 和 `playwright` 服务器的工具。
## 动态分组管理
### 向分组添加服务器
<Tabs>
<Tab title="仪表板">
1. 在仪表板中导航到分组
2. 点击"管理服务器"
3. 选择要添加的其他服务器
4. 点击"保存更改"
</Tab>
<Tab title="API">
```bash
curl -X POST http://localhost:3000/api/groups/web-tools/servers \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{"serverId": "new-server"}'
```
</Tab>
</Tabs>
### 从分组中移除服务器
<Tabs>
<Tab title="仪表板">
1. 在仪表板中导航到分组
2. 点击"管理服务器"
3. 取消选择要移除的服务器
4. 点击"保存更改"
</Tab>
<Tab title="API">
```bash
curl -X DELETE http://localhost:3000/api/groups/web-tools/servers/server-name \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
```
</Tab>
</Tabs>
{/* ### 批量服务器更新
一次更新多个服务器:
```bash
curl -X PUT http://localhost:3000/api/groups/web-tools/servers \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"servers": ["fetch", "playwright", "selenium"]
}'
``` */}
{/* ## 分组监控
### 分组状态
监控分组健康状况和活动:
```bash
# 获取分组状态
curl http://localhost:3000/api/groups/web-tools/status \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
```
响应包括:
- 活跃服务器数量
- 工具数量
- 活跃连接
- 最近活动
### 分组分析
跟踪分组使用情况:
```bash
# 获取分组分析
curl http://localhost:3000/api/groups/web-tools/analytics \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
```
指标包括:
- 按工具分类的请求计数
- 响应时间
- 错误率
- 用户活动 */}
{/* ## 高级分组功能
### 嵌套分组
创建层次化分组结构:
```json
{
"groups": {
"development": {
"displayName": "开发工具",
"subGroups": ["frontend-dev", "backend-dev", "devops"]
},
"frontend-dev": {
"displayName": "前端开发",
"servers": ["playwright", "webpack-server"],
"parent": "development"
},
"backend-dev": {
"displayName": "后端开发",
"servers": ["database", "api-server"],
"parent": "development"
}
}
}
```
### 分组模板
使用模板快速创建分组:
```json
{
"groupTemplates": {
"web-project": {
"description": "标准 Web 项目工具集",
"servers": ["fetch", "playwright", "filesystem"],
"accessLevel": "public"
},
"data-science": {
"description": "数据科学和 ML 工具",
"servers": ["python-tools", "jupyter", "vector-db"],
"accessLevel": "private"
}
}
}
```
应用模板:
```bash
curl -X POST http://localhost:3000/api/groups/from-template \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"name": "my-web-project",
"template": "web-project",
"displayName": "我的 Web 项目工具"
}'
```
### 分组策略
定义分组行为策略:
```json
{
"groupPolicies": {
"web-tools": {
"maxConcurrentConnections": 10,
"requestTimeout": 30000,
"rateLimiting": {
"requestsPerMinute": 100,
"burstLimit": 20
},
"allowedOrigins": ["localhost", "myapp.com"]
}
}
}
``` */}
## 最佳实践
### 分组组织
<Tip>
**按用例组织**: 根据用户想要完成的任务来组织服务器分组,而不仅仅是技术相似性。
</Tip>
<Tip>
**保持分组聚焦**: 避免创建包含太多不同工具的分组。更小、更聚焦的分组更有用。
</Tip>
<Tip>
**使用描述性名称**: 选择能清楚表明分组目的和内容的名称。
</Tip>
{/* ### 安全考虑
<Warning>
**最小权限原则**: 只给用户访问他们实际需要的分组。
</Warning>
<Warning>
**敏感工具隔离**: 将敏感工具保存在具有适当访问控制的受限分组中。
</Warning>
<Warning>
**定期访问审查**: 定期审查分组成员身份并移除不必要的访问权限。
</Warning> */}
### 性能优化
<Info>
**平衡分组大小**: 非常大的分组可能导致工具发现较慢。考虑拆分为更小的分组。
</Info>
<Info>
**监控使用情况**: 使用分析来识别哪些分组被大量使用并相应优化。
</Info>
## 故障排除
<AccordionGroup>
<Accordion title="分组无法访问">
**检查:**
- 用户具有适当权限
- 分组存在且处于活跃状态
- 分组中的服务器正在运行
- 网络连接
**解决方案:**
1. 验证用户分组成员身份
2. 检查分组配置
3. 测试单个服务器连接
4. 查看访问日志
</Accordion>
<Accordion title="分组中缺少工具">
**可能原因:**
- 服务器未正确添加到分组
- 服务器未运行
- 工具发现失败
- 缓存问题
**调试步骤:**
1. 验证服务器在分组配置中
2. 检查服务器状态
3. 强制刷新工具发现
4. 清除分组缓存
</Accordion>
<Accordion title="分组性能问题">
**常见问题:**
- 分组中服务器过多
- 服务器响应慢
- 网络延迟
- 资源约束
**优化方案:**
1. 拆分大型分组
2. 监控服务器性能
3. 实施请求缓存
4. 使用连接池
</Accordion>
</AccordionGroup>
## 下一步
<CardGroup cols={2}>
<Card title="智能路由" icon="route" href="/zh/features/smart-routing">
跨分组的 AI 驱动工具发现
</Card>
<Card title="身份认证" icon="shield" href="/zh/features/authentication">
用户管理和访问控制
</Card>
<Card title="API 参考" icon="code" href="/zh/api-reference/groups">
完整的分组管理 API
</Card>
<Card title="配置" icon="cog" href="/zh/configuration/mcp-settings">
高级分组配置选项
</Card>
</CardGroup>