组管理
概述
XIAOZHI-MCPHUB 中的组管理允许您将 MCP 服务器组织成基于功能、用例或访问要求的逻辑集合。这样可以精细控制哪些工具对不同的 AI 客户端和用户可用。
核心概念
什么是组?
组是可以通过专用端点访问的 MCP 服务器的命名集合。AI 客户端可以连接到特定组以仅访问相关工具,而不是一次连接到所有服务器。
组的好处
- 专注的工具访问: AI 客户端只看到与其用例相关的工具
- 更好的性能: 减少工具发现开销
- 增强的安全性: 限制对敏感工具的访问
- 改进的组织: 功能的逻辑分离
- 简化管理: 更容易管理相关服务器
创建组
通过仪表板
- 导航到组部分: 点击主导航中的"组"
- 点击"创建组": 开始组创建过程
- 填写组详细信息:
- 名称: 组的唯一标识符
- 显示名称: 人类可读的名称
- 描述: 组的目的和内容
- 访问级别: 公共、私有或受限
- 添加服务器: 选择要包含在组中的服务器
通过可视化界面,您可以:
- 拖拽式组织: 通过拖放操作轻松将服务器分配到不同组
- 实时预览: 查看组配置的实时效果和服务器状态
- 批量操作: 同时管理多个服务器和组
- 权限设置: 直观地配置访问控制和用户权限
通过 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",
"displayName": "网页自动化工具",
"description": "浏览器自动化和网页抓取工具",
"servers": ["playwright", "fetch"],
"accessLevel": "public"
}'
通过配置文件
在 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": {
"displayName": "网页工具",
"description": "网页抓取和浏览器自动化",
"servers": ["fetch", "playwright"],
"accessLevel": "public"
},
"communication": {
"displayName": "通信工具",
"description": "消息和协作工具",
"servers": ["slack"],
"accessLevel": "private"
}
}
}
组类型和用例
Web 自动化组
目的: 浏览器自动化和网页抓取
服务器:
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/ML 组
目的: 机器学习和 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": "admin-tools",
"accessLevel": "private",
"servers": ["system", "database"],
"allowedUsers": ["admin", "sysadmin"],
"allowedRoles": ["administrator"]
}
受限
受限组:
- 基于时间的访问
- IP 地址限制
- 条件访问控制
- 审计日志记录
json
{
"name": "restricted-tools",
"accessLevel": "restricted",
"servers": ["sensitive-api"],
"restrictions": {
"timeWindows": ["09:00-17:00"],
"ipWhitelist": ["192.168.1.0/24"],
"maxUsagePerDay": 100,
"requireApproval": true
}
}
组端点
连接到组
每个组都有专用的 MCP 端点:
bash
# 连接到特定组
ENDPOINT="http://localhost:3000/mcp/web-automation"
# 使用标准 MCP 客户端
mcp-client connect "$ENDPOINT"
动态组
创建基于条件的动态组:
json
{
"dynamic-group": {
"displayName": "动态工具组",
"type": "dynamic",
"rules": {
"include": {
"tags": ["web", "automation"],
"categories": ["data-processing"]
},
"exclude": {
"servers": ["deprecated-server"]
}
}
}
}
组管理操作
添加/移除服务器
bash
# 向组添加服务器
curl -X POST http://localhost:3000/api/groups/web-tools/servers \
-d '{"server": "new-scraper"}'
# 从组移除服务器
curl -X DELETE http://localhost:3000/api/groups/web-tools/servers/old-scraper
更新组配置
bash
# 更新组设置
curl -X PUT http://localhost:3000/api/groups/web-tools \
-d '{
"displayName": "高级网页工具",
"description": "更新的描述",
"accessLevel": "private"
}'
克隆组
bash
# 创建组的副本
curl -X POST http://localhost:3000/api/groups/web-tools/clone \
-d '{"newName": "web-tools-staging"}'
组监控
使用统计
跟踪组使用情况:
bash
# 获取组统计
curl http://localhost:3000/api/groups/web-tools/stats
# 响应示例
{
"totalRequests": 1547,
"uniqueClients": 12,
"mostUsedTools": [
{"tool": "fetch_html", "usage": 234},
{"tool": "playwright_click", "usage": 189}
],
"avgResponseTime": 456
}
活动监控
实时监控组活动:
bash
# 获取实时活动
curl http://localhost:3000/api/groups/web-tools/activity
# WebSocket 连接实时更新
ws://localhost:3000/api/groups/web-tools/activity/stream
组模板
预定义模板
使用预定义模板快速创建组:
json
{
"templates": {
"data-science": {
"servers": ["sqlite", "filesystem", "python"],
"description": "数据科学和分析工具",
"accessLevel": "public"
},
"devops": {
"servers": ["docker", "kubernetes", "github"],
"description": "DevOps 和部署工具",
"accessLevel": "restricted"
}
}
}
自定义模板
创建自定义组模板:
bash
# 创建模板
curl -X POST http://localhost:3000/api/group-templates \
-d '{
"name": "my-template",
"servers": ["server1", "server2"],
"defaultConfig": {
"accessLevel": "public",
"autoStart": true
}
}'
# 从模板创建组
curl -X POST http://localhost:3000/api/groups/from-template \
-d '{
"template": "my-template",
"name": "new-group",
"customizations": {
"displayName": "自定义组名"
}
}'
故障排除
常见问题
无法访问组
- 检查用户权限
- 验证组访问级别
- 确认组存在且活跃
- 检查 IP 限制(如果适用)
服务器未出现在组中
- 验证服务器正在运行
- 检查组配置
- 确认服务器健康状态
- 查看服务器日志
性能问题
- 监控组负载
- 检查服务器资源
- 优化服务器选择
- 考虑负载均衡
调试组问题
bash
# 启用组调试
DEBUG=xiaozhi-mcphub:groups npm start
# 获取组诊断信息
curl http://localhost:3000/api/groups/web-tools/diagnostics