--- title: '服务器管理' description: '通过热插拔配置集中管理多个 MCP 服务器' --- ## 概述 MCPHub 的服务器管理系统允许您从单个仪表板集中配置、监控和控制多个 MCP(模型上下文协议)服务器。所有更改都会实时应用,无需重启服务器。 ## 添加 MCP 服务器 ### 通过仪表板 1. **访问仪表板**: 导航到 `http://localhost:3000` 并登录 2. **点击"添加服务器"**: 位于服务器部分 3. **填写服务器详细信息**: - **名称**: 服务器的唯一标识符 - **命令**: 可执行命令(例如 `npx`、`uvx`、`python`) - **参数**: 命令参数数组 - **环境变量**: 环境设置的键值对 - **工作目录**: 命令的可选工作目录 ### 通过配置文件 编辑您的 `mcp_settings.json` 文件: ```json { "mcpServers": { "server-name": { "command": "command-to-run", "args": ["arg1", "arg2"], "env": { "API_KEY": "your-api-key", "CONFIG_VALUE": "some-value" }, "cwd": "/optional/working/directory" } } } ``` ### 通过 API 使用 REST API 以编程方式添加服务器: ```bash curl -X POST http://localhost:3000/api/servers \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -d '{ "name": "fetch-server", "command": "uvx", "args": ["mcp-server-fetch"], "env": {} }' ``` ## 流行的 MCP 服务器示例 提供网页抓取和 HTTP 请求功能: ```json { "fetch": { "command": "uvx", "args": ["mcp-server-fetch"] } } ``` **可用工具:** - `fetch`: 发起 HTTP 请求 - `fetch_html`: 抓取网页 - `fetch_json`: 从 API 获取 JSON 数据 用于网页交互的浏览器自动化: ```json { "playwright": { "command": "npx", "args": ["@playwright/mcp@latest", "--headless"] } } ``` **可用工具:** - `playwright_navigate`: 导航到网页 - `playwright_screenshot`: 截取屏幕截图 - `playwright_click`: 点击元素 - `playwright_fill`: 填写表单 文件和目录管理: ```json { "filesystem": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"] } } ``` **可用工具:** - `read_file`: 读取文件内容 - `write_file`: 写入文件 - `create_directory`: 创建目录 - `list_directory`: 列出目录内容 数据库操作: ```json { "sqlite": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sqlite", "/path/to/database.db"] } } ``` **可用工具:** - `execute_query`: 执行 SQL 查询 - `describe_tables`: 获取表结构 - `create_table`: 创建新表 Slack 工作空间集成: ```json { "slack": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-slack"], "env": { "SLACK_BOT_TOKEN": "xoxb-your-bot-token", "SLACK_TEAM_ID": "T1234567890" } } } ``` **可用工具:** - `send_slack_message`: 发送消息到频道 - `list_slack_channels`: 列出可用频道 - `get_slack_thread`: 获取线程消息 GitHub 仓库操作: ```json { "github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token" } } } ``` **可用工具:** - `create_or_update_file`: 创建/更新仓库文件 - `search_repositories`: 搜索 GitHub 仓库 - `create_issue`: 创建问题 - `create_pull_request`: 创建拉取请求 Google Drive 文件操作: ```json { "gdrive": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-gdrive"], "env": { "GDRIVE_CLIENT_ID": "your-client-id", "GDRIVE_CLIENT_SECRET": "your-client-secret", "GDRIVE_REDIRECT_URI": "your-redirect-uri" } } } ``` **可用工具:** - `gdrive_search`: 搜索文件和文件夹 - `gdrive_read`: 读取文件内容 - `gdrive_create`: 创建新文件 中国地图和位置服务: ```json { "amap": { "command": "npx", "args": ["-y", "@amap/amap-maps-mcp-server"], "env": { "AMAP_MAPS_API_KEY": "your-api-key" } } } ``` **可用工具:** - `search_location`: 搜索位置 - `get_directions`: 获取路线指引 - `reverse_geocode`: 将坐标转换为地址 ## 服务器生命周期管理 ### 启动服务器 服务器会在以下情况下自动启动: - MCPHub 启动时 - 通过仪表板或 API 添加服务器时 - 服务器配置更新时 - 手动重启已停止的服务器时 ### 停止服务器 您可以通过以下方式停止服务器: - **通过仪表板**: 切换服务器状态开关 - **通过 API**: 发送 POST 请求到 `/api/servers/{name}/toggle` - **自动停止**: 服务器崩溃或遇到错误时会自动停止 ### 重启服务器 服务器会在以下情况下自动重启: - 配置更改时 - 环境变量更新后 - 通过仪表板或 API 手动触发时 ## 服务器状态监控 ### 状态指示器 每个服务器都显示状态指示器: - 🟢 **运行中**: 服务器处于活动状态并响应 - 🟡 **启动中**: 服务器正在初始化 - 🔴 **已停止**: 服务器未运行 - ⚠️ **错误**: 服务器遇到错误 ### 实时日志 实时查看服务器日志: 1. **仪表板日志**: 点击服务器查看其日志 2. **API 日志**: 通过 `/api/logs` 端点访问日志 3. **流式日志**: 通过 WebSocket 订阅日志流 ### 健康检查 MCPHub 自动执行健康检查: - **初始化检查**: 验证服务器成功启动 - **工具发现**: 确认检测到可用工具 - **响应检查**: 测试服务器响应性 - **资源监控**: 跟踪 CPU 和内存使用情况 ## 配置管理 ### 环境变量 服务器可以使用环境变量进行配置: ```json { "server-name": { "command": "python", "args": ["server.py"], "env": { "API_KEY": "${YOUR_API_KEY}", "DEBUG": "true", "MAX_CONNECTIONS": "10" } } } ``` **环境变量展开:** - `${VAR_NAME}`: 展开为环境变量值 - `${VAR_NAME:-default}`: 如果变量未设置则使用默认值 - `${VAR_NAME:+value}`: 如果变量已设置则使用指定值 ### 命令变体 指定服务器命令的不同方式: ```json { "npm-server": { "command": "npx", "args": ["-y", "package-name", "--option", "value"] } } ``` ```json { "python-server": { "command": "uvx", "args": ["package-name", "--config", "config.json"] } } ``` ## 高级功能 ### 热重载 MCPHub 支持服务器配置的热重载: 1. **仪表板更新**: 立即应用通过 Web 界面进行的更改 2. **API 更新**: 通过 REST API 调用进行实时更新 3. **零停机时间**: 优雅的服务器重启,不影响其他服务器 ## 故障排除 **检查以下项目:** - 命令在 PATH 中可用 - 已设置所有必需的环境变量 - 工作目录存在且可访问 - 网络端口未被阻塞 - 依赖项已安装 **调试步骤:** 1. 在仪表板中检查服务器日志 2. 在终端中手动测试命令 3. 验证环境变量展开 4. 检查文件权限 **常见原因:** - 无效的配置参数 - 缺少 API 密钥或凭据 - 超出资源限制 - 依赖项冲突 **解决方案:** 1. 查看服务器日志中的错误消息 2. 使用最小配置进行测试 3. 验证所有凭据和 API 密钥 4. 检查系统资源可用性 **可能的问题:** - 服务器未完全初始化 - 工具发现超时 - 通信协议不匹配 - 服务器报告错误 **调试步骤:** 1. 等待服务器初始化完成 2. 检查服务器日志中的工具注册消息 3. 测试与服务器的直接通信 4. 验证 MCP 协议兼容性 ## 下一步 将服务器组织成逻辑分组 设置 AI 驱动的工具发现 服务器管理 API 文档 详细配置选项