项目简介

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进行基础设施分析、安全评估和容量规划等高级交互。
  • 安全与合规: 内置凭证加密、审计日志、策略驱动的插件管理、签名验证和沙盒机制,确保操作安全。

安装步骤

  1. 安装Docker Desktop: 确保您的系统已安装Docker Desktop (Windows/Mac) 或Docker Compose (Linux)。
  2. 克隆仓库: 打开终端或PowerShell,执行以下命令克隆项目:
    git clone https://github.com/nagual69/MCP-Open-Discovery-with-AMQP.git
    cd MCP-Open-Discovery-with-AMQP
  3. 启动服务器:
    • Windows (PowerShell): 执行 './rebuild_deploy.ps1'
    • Linux/Mac (Bash): 执行 'docker compose -f docker/docker-compose.yml up -d' 这将启动包括MCP服务器和RabbitMQ(如果使用AMQP)在内的所有服务。
  4. 验证服务: 服务启动后,您可以通过访问健康检查端点来验证其是否正常运行:
    curl http://localhost:6270/health
    预期会返回一个JSON对象,其中'"status": "healthy"'。

服务器配置

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"}}}'

信息

分类

开发者工具