--- 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": "my-server", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/files"], "env": { "NODE_ENV": "production" }, "cwd": "/app" }' ``` ## 服务器配置 ### 通用配置选项 ```json { "name": "filesystem-server", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/allowed/path"], "env": { "NODE_ENV": "production", "DEBUG": "mcp:*", "MAX_FILES": "1000" }, "cwd": "/app/workspace", "timeout": 30000, "retries": 3, "enabled": true } ``` ### Python 服务器示例 ```json { "name": "python-server", "command": "python", "args": ["-m", "mcp_server", "--config", "config.json"], "env": { "PYTHONPATH": "/app/python", "API_KEY": "${API_KEY}", "LOG_LEVEL": "INFO" }, "cwd": "/app/python-server" } ``` ### Node.js 服务器示例 ```json { "name": "node-server", "command": "node", "args": ["server.js", "--port", "3001"], "env": { "NODE_ENV": "production", "PORT": "3001", "DATABASE_URL": "${DATABASE_URL}" }, "cwd": "/app/node-server" } ``` ## 服务器生命周期管理 ### 启动服务器 ```bash # 启动特定服务器 curl -X POST http://localhost:3000/api/servers/my-server/start \ -H "Authorization: Bearer $TOKEN" # 启动所有服务器 curl -X POST http://localhost:3000/api/servers/start-all \ -H "Authorization: Bearer $TOKEN" ``` ### 停止服务器 ```bash # 停止特定服务器 curl -X POST http://localhost:3000/api/servers/my-server/stop \ -H "Authorization: Bearer $TOKEN" # 优雅停止(等待当前请求完成) curl -X POST http://localhost:3000/api/servers/my-server/stop \ -H "Authorization: Bearer $TOKEN" \ -d '{"graceful": true, "timeout": 30000}' ``` ### 重启服务器 ```bash # 重启服务器 curl -X POST http://localhost:3000/api/servers/my-server/restart \ -H "Authorization: Bearer $TOKEN" ``` ## 热配置重载 ### 更新服务器配置 无需重启即可更新配置: ```bash curl -X PUT http://localhost:3000/api/servers/my-server/config \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d '{ "env": { "DEBUG": "mcp:verbose", "NEW_SETTING": "value" }, "args": ["--verbose", "--new-flag"] }' ``` ### 批量配置更新 ```bash curl -X PUT http://localhost:3000/api/servers/bulk-update \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d '{ "servers": ["server1", "server2"], "config": { "env": { "LOG_LEVEL": "DEBUG" } } }' ``` ## 服务器状态监控 ### 检查服务器状态 ```bash # 获取所有服务器状态 curl -X GET http://localhost:3000/api/servers/status \ -H "Authorization: Bearer $TOKEN" # 获取特定服务器状态 curl -X GET http://localhost:3000/api/servers/my-server/status \ -H "Authorization: Bearer $TOKEN" ``` 响应示例: ```json { "name": "my-server", "status": "running", "pid": 12345, "uptime": 3600000, "memory": { "rss": 123456789, "heapTotal": 98765432, "heapUsed": 87654321 }, "cpu": { "user": 1000000, "system": 500000 }, "lastRestart": "2024-01-01T12:00:00.000Z" } ``` ### 健康检查 配置自动健康检查: ```json { "name": "my-server", "command": "node", "args": ["server.js"], "healthCheck": { "enabled": true, "interval": 30000, "timeout": 5000, "retries": 3, "endpoint": "/health", "expectedStatus": 200 } } ``` ## 负载均衡 ### 配置多实例 ```json { "name": "load-balanced-server", "instances": 3, "command": "node", "args": ["server.js"], "loadBalancer": { "strategy": "round-robin", "healthCheck": true, "stickySession": false }, "env": { "PORT": "${PORT}" } } ``` ### 负载均衡策略 - **round-robin**: 轮询分发请求 - **least-connections**: 分发到连接数最少的实例 - **weighted**: 基于权重分发 - **ip-hash**: 基于客户端 IP 的一致性哈希 ## 资源限制 ### 设置资源限制 ```json { "name": "resource-limited-server", "command": "python", "args": ["server.py"], "resources": { "memory": { "limit": "512MB", "warning": "400MB" }, "cpu": { "limit": "50%", "priority": "normal" }, "processes": { "max": 10 } } } ``` ### 监控资源使用 ```bash # 获取资源使用统计 curl -X GET http://localhost:3000/api/servers/my-server/resources \ -H "Authorization: Bearer $TOKEN" ``` ## 日志管理 ### 配置日志记录 ```json { "name": "my-server", "command": "node", "args": ["server.js"], "logging": { "level": "info", "file": "/var/log/mcphub/my-server.log", "maxSize": "100MB", "maxFiles": 5, "rotate": true, "format": "json" } } ``` ### 查看日志 ```bash # 获取实时日志 curl -X GET http://localhost:3000/api/servers/my-server/logs \ -H "Authorization: Bearer $TOKEN" # 获取带过滤器的日志 curl -X GET "http://localhost:3000/api/servers/my-server/logs?level=error&limit=100" \ -H "Authorization: Bearer $TOKEN" ``` ## 环境变量管理 ### 动态环境变量 ```json { "name": "dynamic-server", "command": "python", "args": ["server.py"], "env": { "API_KEY": "${secrets:api_key}", "DATABASE_URL": "${vault:db_url}", "CURRENT_TIME": "${time:iso}", "SERVER_ID": "${server:id}", "HOSTNAME": "${system:hostname}" } } ``` ### 环境变量模板 支持的模板变量: - `${secrets:key}`: 从密钥存储获取 - `${vault:path}`: 从 Vault 获取 - `${env:VAR}`: 从系统环境变量获取 - `${time:format}`: 当前时间戳 - `${server:property}`: 服务器属性 - `${system:property}`: 系统属性 ## 服务发现 ### 自动服务发现 ```json { "serviceDiscovery": { "enabled": true, "provider": "consul", "config": { "host": "localhost", "port": 8500, "serviceName": "mcp-server", "tags": ["mcp", "ai", "api"] } } } ``` ### 注册服务 ```bash # 手动注册服务 curl -X POST http://localhost:3000/api/servers/my-server/register \ -H "Authorization: Bearer $TOKEN" \ -d '{ "service": { "name": "my-mcp-service", "tags": ["mcp", "production"], "port": 3001, "check": { "http": "http://localhost:3001/health", "interval": "30s" } } }' ``` ## 故障排除 ### 常见问题 1. **服务器启动失败** ```bash # 检查服务器日志 curl -X GET http://localhost:3000/api/servers/my-server/logs?level=error \ -H "Authorization: Bearer $TOKEN" ``` 2. **配置无效** ```bash # 验证配置 curl -X POST http://localhost:3000/api/servers/validate \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $TOKEN" \ -d @server-config.json ``` 3. **性能问题** ```bash # 获取性能指标 curl -X GET http://localhost:3000/api/servers/my-server/metrics \ -H "Authorization: Bearer $TOKEN" ``` ### 调试模式 启用详细调试: ```json { "name": "debug-server", "command": "node", "args": ["--inspect=0.0.0.0:9229", "server.js"], "env": { "DEBUG": "*", "LOG_LEVEL": "debug", "NODE_ENV": "development" }, "debugging": { "enabled": true, "port": 9229, "breakOnStart": false } } ``` ## 高级配置 ### 自定义钩子 ```json { "name": "hooked-server", "command": "node", "args": ["server.js"], "hooks": { "beforeStart": ["./scripts/setup.sh"], "afterStart": ["./scripts/notify.sh"], "beforeStop": ["./scripts/cleanup.sh"], "onError": ["./scripts/alert.sh"] } } ``` ### 配置模板 ```json { "templates": { "python-server": { "command": "python", "args": ["-m", "mcp_server"], "env": { "PYTHONPATH": "/app/python", "LOG_LEVEL": "INFO" } } }, "servers": { "my-python-server": { "extends": "python-server", "args": ["-m", "mcp_server", "--config", "custom.json"], "env": { "API_KEY": "custom-key" } } } } ``` 有关更多配置选项,请参阅 [MCP 设置配置](/zh/configuration/mcp-settings) 和 [环境变量](/zh/configuration/environment-variables) 文档。