Catalyst Center MCP服务器
Cisco Catalyst Center(前身为DNA Center)的基于Python的MCP(模型上下文协议)服务器,提供设备管理、客户端信息检索和网络监控工具。
特性
- 使用Cisco Catalyst Center进行安全身份验证。
- 设备发现、列表和详细信息检索。
- 站点信息检索,包括层次结构和详细信息。
- 特定设备的网络接口信息。
- 具有全面过滤选项的客户列表。
- 按MAC地址检索详细的客户端信息。
- 使用过滤进行客户端计数检索。
- 用于兼容API的时间范围转换的帮助工具。
- 使用FastMCP实现了一个健壮且可扩展的MCP服务器。
- 通过配置
.env文件,便于设置。
安装
- 克隆存储库:
git clone https://github.com/richbibby/catalyst-center-mcp.git
cd catalyst-center-mcp- 创建虚拟环境并激活它:
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装依赖项:
pip install -r requirements.txt配置
- 复制示例环境文件:
cp .env.example .env- 更新
.env使用您的Catalyst Center凭据文件:
CCC_HOST=your-catalyst-center-host
CCC_USER=your-username
CCC_PWD=your-password使用Claude桌面客户端
- 配置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传输。
- 重新启动克劳德桌面
- 与克劳德桌面交互:
- 让Claude执行“显示Cisco Catalyst Center中的设备”等操作
- Claude将使用MCP服务器进行身份验证并获取设备信息
Claude Desktop with Catalyst Center MCP
Claude Desktop with Catalyst Center MCP
使用VScode
- 配置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传输。
- 重新启动VSCode
你也可以
- 打开命令托盘:macOS上Visual Studio Code中的command+Shift+P(或Windows和Linux上的Ctrl+Shift+P)
- 执行 *开发者:重新加载窗口*
- 在聊天窗口中交互:
- 提出诸如“显示Cisco Catalyst Center中的设备”之类的问题
- VSCode将使用MCP服务器进行身份验证和获取设备信息
VSCode with Catalyst Center 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:检索与指定筛选器匹配的客户端总数。
贡献
- 分叉存储库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add some amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
