项目简介
这是一个使用 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 进行安全认证并管理访问令牌。
安装步骤
- 克隆仓库:
打开终端,执行以下命令克隆项目代码:
git clone https://github.com/richbibby/catalyst-center-mcp.git cd catalyst-center-mcp - 创建并激活虚拟环境:
推荐使用 Python 虚拟环境来隔离项目依赖:
python -m venv venv source venv/bin/activate # Windows 系统请使用: venv\Scripts\activate - 安装依赖:
在已激活的虚拟环境中,安装所需的库:
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 的信息:
- 复制示例配置文件:
cp .env.example .env - 编辑 '.env' 文件:
使用文本编辑器打开 '.env' 文件,填入你的 Cisco Catalyst Center 地址、用户名和密码:
CCC_HOST=你的 Catalyst Center 地址 (例如: https://your-ccc-host.com) CCC_USER=你的用户名 CCC_PWD=你的密码
基本使用方法
- 启动 MCP 服务器: 按照你的 MCP 客户端的配置说明,启动连接到此 MCP 服务器的进程。通常,客户端启动时会自动执行你配置的 'command' 和 'args'。
- 与 LLM 客户端交互: 在连接了此 MCP 服务器的 LLM 客户端中,使用自然语言向 LLM 提问或发出指令,LLM 将自动识别并调用 MCP 服务器提供的工具来获取信息或执行操作。例如:
- "列出我网络中所有的设备"
- "显示 IP 地址是 10.1.1.1 的设备状态"
- "查找 MAC 地址是 aa:bb:cc:dd:ee:ff 的客户端的详细信息"
- "有多少个连接到 SSID 'Corporate-WiFi' 的无线客户端?"
- "显示名为 'BuildingA/Floor1' 的站点下的所有设备"
信息
分类
商业系统