--- 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"], } } } ``` */} ## 分组类型和用例 **用途**: 浏览器自动化和网页抓取 **服务器**: - `playwright`: 浏览器自动化 - `fetch`: HTTP 请求和网页抓取 - `selenium`: 替代浏览器自动化 **用例**: - 自动化测试 - 数据收集 - 网页监控 - 内容分析 **端点**: `http://localhost:3000/mcp/web-automation` **用途**: 数据操作和分析 **服务器**: - `sqlite`: 数据库操作 - `filesystem`: 文件操作 - `spreadsheet`: Excel/CSV 处理 **用例**: - 数据分析 - 报告生成 - 文件处理 - 数据库查询 **端点**: `http://localhost:3000/mcp/data-processing` **用途**: 消息传递和协作 **服务器**: - `slack`: Slack 集成 - `discord`: Discord 机器人 - `email`: 邮件发送 - `sms`: 短信通知 **用例**: - 团队通知 - 客户沟通 - 警报系统 - 社交媒体管理 **端点**: `http://localhost:3000/mcp/communication` **用途**: 软件开发工具 **服务器**: - `github`: GitHub 操作 - `gitlab`: GitLab 集成 - `docker`: 容器管理 - `kubernetes`: K8s 操作 **用例**: - 代码部署 - 仓库管理 - CI/CD 操作 - 基础设施管理 **端点**: `http://localhost:3000/mcp/development` **用途**: 机器学习和 AI 工具 **服务器**: - `openai`: OpenAI API 集成 - `huggingface`: Hugging Face 模型 - `vector-db`: 向量数据库操作 **用例**: - 模型推理 - 数据嵌入 - 自然语言处理 - 计算机视觉 **端点**: `http://localhost:3000/mcp/ai-ml` {/* ## 分组访问控制 ### 访问级别 **公开分组**: - 所有认证用户都可访问 - 无需额外权限 - 在分组列表中可见 - 默认访问级别 ```json { "name": "public-tools", "accessLevel": "public", "servers": ["fetch", "calculator"] } ``` **私有分组**: - 仅对分组成员可见 - 需要明确的用户分配 - 在公开列表中隐藏 - 管理员控制成员身份 ```json { "name": "internal-tools", "accessLevel": "private", "members": ["user1", "user2"], "servers": ["internal-api", "database"] } ``` **受限分组**: - 基于角色的访问控制 - 需要特定权限 - 启用审计日志 - 限时访问 ```json { "name": "admin-tools", "accessLevel": "restricted", "requiredRoles": ["admin", "operator"], "servers": ["system-control", "user-management"] } ``` ### 用户管理 将用户分配给分组: ```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 端点: ``` http://localhost:3000/mcp/{group-name} ``` 示例: - `http://localhost:3000/mcp/web-tools` - `http://localhost:3000/mcp/data-processing` - `http://localhost:3000/mcp/communication` ``` http://localhost:3000/sse/{group-name} ``` 示例: - `http://localhost:3000/sse/web-tools` - `http://localhost:3000/sse/data-processing` - `http://localhost:3000/sse/communication` ### 分组工具发现 当连接到分组端点时,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` 服务器的工具。 ## 动态分组管理 ### 向分组添加服务器 1. 在仪表板中导航到分组 2. 点击"管理服务器" 3. 选择要添加的其他服务器 4. 点击"保存更改" ```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"}' ``` ### 从分组中移除服务器 1. 在仪表板中导航到分组 2. 点击"管理服务器" 3. 取消选择要移除的服务器 4. 点击"保存更改" ```bash curl -X DELETE http://localhost:3000/api/groups/web-tools/servers/server-name \ -H "Authorization: Bearer YOUR_JWT_TOKEN" ``` {/* ### 批量服务器更新 一次更新多个服务器: ```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"] } } } ``` */} ## 最佳实践 ### 分组组织 **按用例组织**: 根据用户想要完成的任务来组织服务器分组,而不仅仅是技术相似性。 **保持分组聚焦**: 避免创建包含太多不同工具的分组。更小、更聚焦的分组更有用。 **使用描述性名称**: 选择能清楚表明分组目的和内容的名称。 {/* ### 安全考虑 **最小权限原则**: 只给用户访问他们实际需要的分组。 **敏感工具隔离**: 将敏感工具保存在具有适当访问控制的受限分组中。 **定期访问审查**: 定期审查分组成员身份并移除不必要的访问权限。 */} ### 性能优化 **平衡分组大小**: 非常大的分组可能导致工具发现较慢。考虑拆分为更小的分组。 **监控使用情况**: 使用分析来识别哪些分组被大量使用并相应优化。 ## 故障排除 **检查:** - 用户具有适当权限 - 分组存在且处于活跃状态 - 分组中的服务器正在运行 - 网络连接 **解决方案:** 1. 验证用户分组成员身份 2. 检查分组配置 3. 测试单个服务器连接 4. 查看访问日志 **可能原因:** - 服务器未正确添加到分组 - 服务器未运行 - 工具发现失败 - 缓存问题 **调试步骤:** 1. 验证服务器在分组配置中 2. 检查服务器状态 3. 强制刷新工具发现 4. 清除分组缓存 **常见问题:** - 分组中服务器过多 - 服务器响应慢 - 网络延迟 - 资源约束 **优化方案:** 1. 拆分大型分组 2. 监控服务器性能 3. 实施请求缓存 4. 使用连接池 ## 下一步 跨分组的 AI 驱动工具发现 用户管理和访问控制 完整的分组管理 API 高级分组配置选项