项目简介

这是一个使用 Python 和 FastMCP 库实现的 MCP (Model Context Protocol) 服务器,旨在作为大型语言模型 (LLM) 客户端与 Cisco Catalyst Center(原 DNA Center)之间的桥梁。它将 Catalyst Center 的各种 API 功能封装成标准的 MCP 工具,允许 LLM 通过自然语言请求来获取网络设备、站点和客户端等信息。

主要功能点

  • 设备管理信息查询: 获取网络设备列表、设备详情,并支持按 hostname, IP, 状态, 角色等多种条件进行过滤。
  • 站点及拓扑信息: 获取站点的层次结构、名称、ID、地址等信息。
  • 设备接口信息: 查询指定网络设备的接口(端口)详情。
  • 客户端信息查询: 获取连接到网络的客户端列表,支持按类型 (有线/无线)、操作系统、站点、IP/MAC地址、SSID 等多种条件进行过滤,并可获取总数。
  • 客户端详情: 根据 MAC 地址获取特定客户端的详细信息。
  • 时间范围转换: 提供一个辅助工具,将自然语言或 ISO 格式的时间表达转换为 API 需要的 epoch 毫秒格式,并考虑 Catalyst Center API 的时间范围限制。
  • 安全认证: 支持通过用户名和密码与 Catalyst Center 进行安全认证并管理访问令牌。

安装步骤

  1. 克隆仓库: 打开终端,执行以下命令克隆项目代码:
    git clone https://github.com/richbibby/catalyst-center-mcp.git
    cd catalyst-center-mcp
  2. 创建并激活虚拟环境: 推荐使用 Python 虚拟环境来隔离项目依赖:
    python -m venv venv
    source venv/bin/activate  # Windows 系统请使用: venv\Scripts\activate
  3. 安装依赖: 在已激活的虚拟环境中,安装所需的库:
    pip install -r requirements.txt

服务器配置

MCP 服务器作为 LLM 客户端的后端运行。你需要配置你的 MCP 客户端(例如 Claude Desktop)来启动并连接到这个服务器进程。配置通常包含以下关键信息:

  • 服务器名称: 一个用户自定义的名称,用于在客户端界面标识这个 MCP 服务器(例如:'catalyst-center-mcp')。
  • 命令 (command): 指定用于启动 MCP 服务器进程的可执行文件路径。对于这个项目,通常是你的虚拟环境中的 'fastmcp' 命令行工具的完整路径(例如:'/path/to/your/venv/bin/fastmcp')。
  • 参数 (args): 传递给启动命令的参数列表。对于这个项目,通常包括 'run' 和 MCP 服务器脚本 'catalyst-center-mcp.py' 的完整路径(例如:'["run", "/path/to/your/catalyst-center-mcp/catalyst-center-mcp.py"]')。
  • 环境变量 (env): 可选,设置服务器进程运行所需的额外环境变量,例如 'PYTHONUNBUFFERED: "1"' 对于 Stdio 传输协议是有益的。

注意:

  • 请根据你的实际安装路径替换上述 '/path/to/your/...' 部分。
  • 具体的配置格式(JSON, YAML 或其他)取决于你使用的 MCP 客户端,请查阅你的 MCP 客户端的配置文档。

此外,MCP 服务器本身需要配置连接到 Cisco Catalyst Center 的信息:

  1. 复制示例配置文件:
    cp .env.example .env
  2. 编辑 '.env' 文件: 使用文本编辑器打开 '.env' 文件,填入你的 Cisco Catalyst Center 地址、用户名和密码:
    CCC_HOST=你的 Catalyst Center 地址 (例如: https://your-ccc-host.com)
    CCC_USER=你的用户名
    CCC_PWD=你的密码

基本使用方法

  1. 启动 MCP 服务器: 按照你的 MCP 客户端的配置说明,启动连接到此 MCP 服务器的进程。通常,客户端启动时会自动执行你配置的 'command' 和 'args'。
  2. 与 LLM 客户端交互: 在连接了此 MCP 服务器的 LLM 客户端中,使用自然语言向 LLM 提问或发出指令,LLM 将自动识别并调用 MCP 服务器提供的工具来获取信息或执行操作。例如:
    • "列出我网络中所有的设备"
    • "显示 IP 地址是 10.1.1.1 的设备状态"
    • "查找 MAC 地址是 aa:bb:cc:dd:ee:ff 的客户端的详细信息"
    • "有多少个连接到 SSID 'Corporate-WiFi' 的无线客户端?"
    • "显示名为 'BuildingA/Floor1' 的站点下的所有设备"

信息

分类

商业系统