项目简介
MCP Open Discovery 是一个基于Model Context Protocol (MCP) 构建的企业级服务器,旨在为大型语言模型 (LLM) 客户端提供丰富的上下文信息和操作能力。它通过集成Nmap、SNMP、Proxmox、Zabbix等工具,实现统一的基础设施发现、监控和配置管理数据库 (CMDB) 功能。服务器支持HTTP、Stdio和AMQP等多种传输协议,并具备动态工具注册、热重载和安全凭证管理等高级特性。
主要功能点
- 基础设施发现: 自动探测并管理Proxmox集群、SNMP设备、网络拓扑等,支持Nmap扫描、网络连接测试等。
- CMDB与凭证管理: 提供持久化的配置项 (CI) 存储和加密的凭证管理,确保数据安全和可审计性。
- 监控集成: 与Zabbix等监控系统集成,获取主机、指标、告警和事件数据。
- 动态工具注册: 运行时加载、卸载和热重载工具模块,支持插件式扩展,实现零停机更新。
- 多传输协议: 支持HTTP、Stdio、AMQP(如RabbitMQ)等多种通信方式,灵活适应不同部署场景。
- AI交互模式: 定义Prompt模板,支持LLM进行基础设施分析、安全评估和容量规划等高级交互。
- 安全与合规: 内置凭证加密、审计日志、策略驱动的插件管理、签名验证和沙盒机制,确保操作安全。
安装步骤
- 安装Docker Desktop: 确保您的系统已安装Docker Desktop (Windows/Mac) 或Docker Compose (Linux)。
- 克隆仓库: 打开终端或PowerShell,执行以下命令克隆项目:
git clone https://github.com/nagual69/MCP-Open-Discovery-with-AMQP.git cd MCP-Open-Discovery-with-AMQP - 启动服务器:
- Windows (PowerShell): 执行 './rebuild_deploy.ps1'
- Linux/Mac (Bash): 执行 'docker compose -f docker/docker-compose.yml up -d' 这将启动包括MCP服务器和RabbitMQ(如果使用AMQP)在内的所有服务。
- 验证服务: 服务启动后,您可以通过访问健康检查端点来验证其是否正常运行:
预期会返回一个JSON对象,其中'"status": "healthy"'。curl http://localhost:6270/health
服务器配置
MCP客户端连接此服务器时,需要提供以下配置信息:
{ "server_name": "mcp-open-discovery", "command": "docker", "args": [ "run", "--rm", "-p", "6270:6270", "nagual69/mcp-open-discovery:latest", "--transport", "http" ], "env": { "HTTP_PORT": "6270", "TRANSPORT_MODE": "http" }, "description": "连接到MCP Open Discovery服务器的HTTP传输模式", "capabilities": { "tools": true, "resources": true, "prompts": true } }
配置参数说明:
- 'server_name': 服务器的唯一标识名称,此处为 'mcp-open-discovery'。
- 'command': 启动MCP服务器所执行的命令,例如 'docker'。
- 'args': 传递给 'command' 命令的参数列表,用于启动服务器容器并暴露端口,指定传输模式。例如,'-p 6270:6270' 将容器的6270端口映射到主机的6270端口,'--transport http' 指定使用HTTP传输协议。
- 'env': 环境变量,例如设置MCP服务器在容器内监听的HTTP端口为6270,以及明确指定HTTP传输模式。
- 'description': 对此MCP服务器配置的简要描述。
- 'capabilities': 声明此MCP服务器提供的能力,包括'tools'(工具)、'resources'(资源)和'prompts'(Prompt模板),此处均设为'true'表示支持。
基本使用方法
一旦服务器运行并通过MCP客户端连接,您就可以通过JSON-RPC请求调用其提供的工具和访问资源。
1. 调用Ping工具:
curl -X POST http://localhost:6270/mcp \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ping","arguments":{"host":"127.0.0.1","count":2}}}'
2. 添加Proxmox凭证 (通过凭证管理工具):
curl -X POST http://localhost:6270/mcp \ -H "Content-Type: application/json" \ -d '{ "method": "tools/call", "params": { "name": "credentials_add", "arguments": { "id": "proxmox-main", "type": "password", "username": "admin@pam", "password": "your-password", "url": "https://pve.example.com:8006", "notes": "Proxmox VE cluster primary, realm:pam, verify_ssl:true" } } }'
3. 列出所有凭证 (安全,仅显示元数据):
curl -X POST http://localhost:6270/mcp \ -H "Content-Type: application/json" \ -d '{"method": "tools/call", "params": {"name": "credentials_list"}}'
4. 调用Zabbix主机发现工具 (使用已保存的凭证):
curl -X POST http://localhost:6270/mcp \ -H "Content-Type: application/json" \ -d '{"method": "tools/call", "params": {"name": "zabbix_host_discover", "arguments": {"creds_id": "zabbix-main"}}}'
信息
分类
开发者工具