Catalyst Center MCP服务器

一个基于Python的MCP服务器,用于Cisco Catalyst Center,提供设备管理、客户端信息检索和网络监控工具。

  • by richbibby
  • Python
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 richbibby/catalyst-center-mcp

使用说明

Catalyst Center MCP服务器

Cisco Catalyst Center(前身为DNA Center)的基于Python的MCP(模型上下文协议)服务器,提供设备管理、客户端信息检索和网络监控工具。

特性

  • 使用Cisco Catalyst Center进行安全身份验证。
  • 设备发现、列表和详细信息检索。
  • 站点信息检索,包括层次结构和详细信息。
  • 特定设备的网络接口信息。
  • 具有全面过滤选项的客户列表。
  • 按MAC地址检索详细的客户端信息。
  • 使用过滤进行客户端计数检索。
  • 用于兼容API的时间范围转换的帮助工具。
  • 使用FastMCP实现了一个健壮且可扩展的MCP服务器。
  • 通过配置 .env 文件,便于设置。

安装

  1. 克隆存储库:
git clone https://github.com/richbibby/catalyst-center-mcp.git
cd catalyst-center-mcp
  1. 创建虚拟环境并激活它:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt

配置

  1. 复制示例环境文件:
cp .env.example .env
  1. 更新 .env 使用您的Catalyst Center凭据文件:
CCC_HOST=your-catalyst-center-host
CCC_USER=your-username
CCC_PWD=your-password

使用Claude桌面客户端

  1. 配置Claude Desktop以使用此MCP服务器:
  • 打开克劳德桌面
  • 前往“设置”>“开发人员”>“编辑配置”
  • 添加以下配置(根据需要调整路径,请参阅 claude_desktop_config.json 对于示例结构):
{
  "mcpServers": {
    "catalyst-center-mcp": {
      "command": "/path/to/your/venv/bin/fastmcp",
      "args": [
        "run",
        "/path/to/your/catalyst-center-mcp/catalyst-center-mcp.py"
      ],
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}
  • 替换 /path/to/your/... 与您的本地环境相关的绝对路径。
  • 这个 PYTHONUNBUFFERED 建议将环境变量用于Stdio传输。
  1. 重新启动克劳德桌面

  2. 与克劳德桌面交互:

  • 让Claude执行“显示Cisco Catalyst Center中的设备”等操作
  • Claude将使用MCP服务器进行身份验证并获取设备信息

使用VScode

  1. 配置VSCode以使用此MCP服务器:
  • 打开VScode
  • 打开命令托盘:macOS上Visual Studio代码中的command+Shift+P(或Windows和Linux上的Ctrl+Shift+P)
  • 类型: MCP:打开用户配置
  • 添加以下配置(根据需要调整路径,请参阅 claude_desktop_config.json 对于示例结构):
{
  "servers": {
    "catalyst-center-mcp": {
      "type": "stdio",
      "command": "/path/to/your/venv/bin/fastmcp",
      "args": [
        "run",
        "/path/to/your/catalyst-center-mcp/catalyst-center-mcp.py"
      ],
      "env": {
        "PYTHONUNBUFFERED": "1"
      }
    }
  }
}
  • 替换 /path/to/your/... 与您的本地环境相关的绝对路径。
  • 这个 PYTHONUNBUFFERED 建议将环境变量用于Stdio传输。
  1. 重新启动VSCode

你也可以

  • 打开命令托盘:macOS上Visual Studio Code中的command+Shift+P(或Windows和Linux上的Ctrl+Shift+P)
  • 执行 开发者:重新加载窗口
  1. 在聊天窗口中交互:
  • 提出诸如“显示Cisco Catalyst Center中的设备”之类的问题
  • VSCode将使用MCP服务器进行身份验证和获取设备信息

示例问题

以下是一些您可以向Claude提出的与Catalyst Center互动的示例问题:

设备信息

  • “显示网络中的所有设备”
  • “列出我网络中的所有交换机”
  • “目前无法访问哪些设备?”
  • “显示主机名包含‘switch’的设备”
  • “IP为10.1.1.1的设备状态如何?”

接口信息

  • “显示设备X的所有接口”
  • “设备Y上有哪些接口?”
  • “列出设备Z上的所有千兆接口”
  • “显示带有IP地址的接口”
  • “设备X上的接口GigabitEthernet1/0/1的状态如何?”

站点信息

  • “显示我网络中的所有站点”
  • “站点X中有哪些设备?”
  • “列出我网络中的所有建筑”
  • “显示网站层次结构”
  • “Y站点的地址是什么?”

客户信息

  • “当前连接了多少客户端?”
  • “列出所有无线客户端。”
  • “显示连接到SSID‘企业WiFi’的客户端。”
  • “MAC地址为aa:bb:cc:dd:ee:ff的客户端的详细信息是什么?”
  • “是否有操作系统类型为‘macOS’的客户端?”
  • “列出过去一小时内活动的客户端。”

组合查询

  • “显示站点X中的所有设备及其界面”
  • “列出所有设备上的所有下行接口”
  • “Y楼的哪些设备有无法访问的接口?”
  • “显示站点Z的网络拓扑”
  • “A区所有设备的状态如何?”

可用工具

  • fetch_devices:从Cisco Catalyst Center获取具有筛选选项的设备列表。
  • fetch_sites:从Cisco Catalyst Center获取站点列表,返回一个紧凑的JSON结构。
  • fetch_interfaces:获取特定设备ID的接口信息。
  • get_api_compatible_time_range:将自然语言时间输入(例如“最近24小时”、“昨天”)或特定时间戳转换为API兼容的epoch毫秒开始和结束时间。
  • get_clients_list:使用全面的筛选选项(例如,按客户端类型、操作系统、站点、MAC/IP地址、SSID)从Cisco Catalyst Center检索客户端列表。每次呼叫最多返回100个客户端。
  • get_client_details_by_mac:通过特定客户端的MAC地址获取其详细信息。
  • get_clients_count:检索与指定筛选器匹配的客户端总数。

贡献

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求