网络自动化协议服务器

一个为Cisco Nexus Dashboard设计的模型上下文协议(MCP)服务器,支持AI代理进行智能网络自动化和管理。

  • by beye91
  • Python
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 beye91/nexus-dashboard-mcp

使用说明

Nexus仪表板MCP服务器

思科Nexus Dashboard的综合模型上下文协议(MCP)服务器,使克劳德等人工智能代理能够与Nexus Dashboard API交互,实现智能网络自动化和管理。

特性

核心能力

  • API全面覆盖:通过5个Nexus Dashboard API访问638+个操作

    • 管理API(146个端点):结构、交换机、VLAN、VRF、网络、接口
    • 分析API:遥测、洞察、异常、合规性
    • 基础设施API:系统运行状况、许可、用户管理
    • OneManage API:设备资源清册,拓扑
    • 编排API:工作流和自动化
  • 安全第一:

    • 带有自签名证书的HTTPS(自动生成)
    • 基于角色的访问控制(RBAC)的多用户身份验证
    • 默认情况下为只读模式,并启用显式编辑模式
    • Fernet加密凭证存储
    • 通过客户端IP跟踪完成审计日志记录
    • 每个角色的精细操作白名单
  • Web管理UI:

    • 基于HTTPS的Next.js管理接口
    • 用户和角色管理
    • 实时系统健康监测
    • CSV导出审计日志查看器
    • 带连接测试的集群管理
    • 安全配置仪表板
    • API指南和工作流程管理
  • 企业就绪:

    • PostgreSQL数据库用于持久化
    • 基于Docker的主机网络部署
    • 完整的合规审计跟踪
    • LDAP集成支持

快速开始

先决条件

  • 码头工人 20.10+和Docker Compose 2.0+
  • 思科Nexus仪表板 4.1+,NDFC 12.x
  • Node.js 18+(用于通过MCP-remote进行远程MCP访问)

1.克隆和配置

git clone https://github.com/beye91/nexus-dashboard-mcp.git
cd nexus-dashboard-mcp

# Create environment file with your server's IP address
echo "CERT_SERVER_IP=YOUR_SERVER_IP" > .env

替换 YOUR_SERVER_IP 使用服务器的实际IP地址(例如。, 192.168.1.213).

2.启动服务

docker compose up -d --build

这将:

  • 自动生成自签名SSL证书
  • 启动PostgreSQL数据库(端口15432)
  • 使用HTTPS启动Web API(端口8444)
  • 使用HTTPS启动Web UI(端口7443)
  • 启动MCP服务器以进行Claude集成

3.初始设置

  1. 打开浏览器并导航到:

    https://YOUR_SERVER_IP:7443
    
  2. 接受自签名证书警告

  3. 完成初始管理员设置:

    • 用户名: admin
    • 电子邮件: admin@example.com
    • 密码: Admin123! (或您的首选密码)
  4. 配置您的第一个集群:

    • 导航至 集群 页
    • 点击“添加新集群”
    • 输入您的Nexus仪表板详细信息
    • 点击“测试连接”进行验证
    • 保存集群配置

4.配置克劳德桌面

添加到您的Claude Desktop配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

远程部署(推荐)

{
  "mcpServers": {
    "nexus-dashboard": {
      "command": "npx",
      "args": [
        "mcp-remote@latest",
        "https://YOUR_SERVER_IP:8444/mcp/sse",
        "--transport",
        "sse-only"
      ]
    }
  }
}

替换 YOUR_SERVER_IP 使用服务器的IP地址。

注: 由于我们使用自签名证书,您可能需要设置 NODE_TLS_REJECT_UNAUTHORIZED=0 在您的环境中,或者在系统的信任存储中接受证书。

本地部署(与Docker相同的机器)

{
  "mcpServers": {
    "nexus-dashboard": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "nexus-mcp-server",
        "python",
        "src/main.py"
      ]
    }
  }
}

重新启动Claude Desktop,您将看到Nexus Dashboard工具可用!

建筑

                      External Clients
                  (Browser, Claude Desktop)
                           |
                    [HTTPS/TLS]
                           |
           +---------------+---------------+
           |                               |
      Port 7443                       Port 8444
           |                               |
+----------+----------+    +---------------+--------------+
|       Web UI        |    |           Web API            |
|      (Next.js)      |--->|          (FastAPI)           |
|      HTTPS Proxy    |    |  +----------+  +---------+   |
+---------------------+    |  | REST API |  | MCP SSE |   |
                           |  +----------+  +---------+   |
                           +---------------+--------------+
                                           |
                    +----------------------+----------------------+
                    |                      |                      |
           +--------+--------+    +--------+--------+    +--------+--------+
           |   PostgreSQL    |    |   MCP Server    |    | Nexus Dashboard |
           |   Port 15432    |    |   (stdio)       |    |   Clusters      |
           +-----------------+    +-----------------+    +-----------------+

Certificate Volume: /app/certs/ (auto-generated on first startup)

端口摘要

服务 端口 协议 描述
Web UI 7443 HTTPS 管理界面
Web API 8444 HTTPS REST API和MCP SSE端点
PostgreSQL 15432 TCP 数据库(从5432映射)
内部HTTP 8001 HTTP 内部代理通信

环境变量

生产所需

创建一个 .env 文件包含:

# Your server's IP address (for SSL certificate SAN)
CERT_SERVER_IP=192.168.1.213

# Security (generate unique keys for production)
ENCRYPTION_KEY=your-unique-fernet-key
SESSION_SECRET_KEY=your-random-secret-key

# Optional: Nexus Dashboard defaults (can be configured via Web UI)
NEXUS_CLUSTER_URL=https://nexus-dashboard.example.com
NEXUS_USERNAME=admin
NEXUS_PASSWORD=YourPassword

生成加密密钥:

python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

可选变量

# SSL Certificate Configuration
CERT_DAYS=365                    # Certificate validity (default: 365)
CERT_CN=nexus-dashboard          # Certificate common name

# Security
EDIT_MODE_ENABLED=false          # Enable write operations
MCP_API_TOKEN=your-token         # Optional: Require token for MCP access

# Logging
LOG_LEVEL=INFO                   # DEBUG, INFO, WARNING, ERROR

安全

HTTPS配置

首次启动时会自动生成自签名证书:

  • 存储在Docker卷中 nexus-mcp-certs
  • 有效期为365天(可通过配置 CERT_DAYS)
  • 包括本地主机127.0.0.1和SAN中的服务器IP

要重新生成证书,请执行以下操作:

docker volume rm nexus-mcp-certs
docker compose up -d

多用户RBAC

该平台通过基于角色的访问控制支持多个用户:

  • 管理员角色:完全访问所有操作
  • 操作员角色:读取访问+特定写入操作
  • 查看器角色:只读访问

用户可以通过以下Web UI进行管理 安全>用户.

最佳实践

  1. 更改默认管理员密码 初始设置后
  2. 保持 EDIT_MODE_ENABLED=false 除非需要写操作
  3. 使用强加密密钥 用于生产
  4. 查看审核日志 定期进行未经授权的活动
  5. 限制网络访问 到服务器

文档

故障排除

检查集装箱状态

docker compose ps
docker compose logs -f

证书问题

# View certificate details
docker compose exec web-api openssl x509 -in /app/certs/server.crt -text -noout

# Regenerate certificates
docker volume rm nexus-mcp-certs
docker compose up -d

数据库问题

# Connect to database
docker compose exec postgres psql -U mcp_user -d nexus_mcp

# Check tables
\dt

# View audit logs
SELECT * FROM audit_log ORDER BY timestamp DESC LIMIT 10;

网络连接

# Test API endpoint
curl -k https://localhost:8444/api/health

# Test Web UI
curl -k https://localhost:7443

发展

地方发展设置

# Clone repository
git clone https://github.com/beye91/nexus-dashboard-mcp.git
cd nexus-dashboard-mcp

# Create virtual environment
python -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Start database only
docker compose up postgres -d

# Run API locally
python src/api/web_api.py

# Run Web UI in dev mode
cd web-ui
npm install
npm run dev

许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。

致谢

  • Anthropic -用于Claude AI平台和MCP协议
  • 思科 -用于Nexus仪表板API
  • FastMCP -对于优秀的MCP框架

精心打造网络自动化