思科NX-OS CLI MCP服务器
一个模型上下文协议(MCP)服务器,允许您与Cisco NX-OS设备进行交互。您可以通过NX-API接口向一个或多个交换机发送任意CLI命令。 此服务器公开了MCP工具,用于在一个或多个设备上执行命令,并具有全面的错误处理功能。也可以选择输出格式(文本或JSON)。
特性
- 单设备命令:在单个NX-OS交换机上执行CLI命令
- 多设备命令:在多个交换机上同时执行相同的命令
- 基于文本的I/O:命令以文本形式发送(cli_show_ascii),响应默认为文本格式
- JSON选项:用于结构化解析的可选JSON响应格式
- 简单身份验证:从.env文件或按请求覆盖收集的凭据
- 错误处理:清晰、可操作的错误消息
- 批量操作:每个请求最多执行100个命令
- 并发执行:在多个设备上并行执行命令(最多50个)
需求
- Python 3.10或更高版本
- 启用NX-API的Cisco NX-OS设备(
feature nxapi) - MCP主机(Claude Desktop等)通过HTTPS与目标设备之间的网络连接
安装
先决条件
- Python 3.10或更高版本
- 紫外线 -快速Python包安装程序(推荐)
- 启用NX-API的Cisco NX-OS设备(
feature nxapi) - 通过HTTPS连接到目标设备的网络
设置
- 安装uv(如果尚未安装):
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"- 使用uv安装依赖项:
# With uv and pyproject.toml (recommended)
uv sync- 设置身份验证凭据:
创建一个 .env 模板中的文件:
cp .env.example .env编辑 .env 并添加您的凭据:
NXOS_USERNAME=admin
NXOS_PASSWORD=your_secure_password重要:永远不要承诺你的生产 .env 文件到版本控制。 .gitignore 配置为防止这种情况,但要小心!
向MCP主机注册
克劳德桌面版
macOS:
编辑Claude Desktop配置文件:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json将NX-OS CLI MCP服务器添加到 mcpServers 章节:
{
"mcpServers": {
"nxos-cli": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/nxos-cli-mcp",
"run",
"nxos_cli_mcp.py"
]
}
}
}窗户:
编辑Claude Desktop配置文件:
notepad %APPDATA%\Claude\claude_desktop_config.json将NX-OS CLI MCP服务器添加到 mcpServers 章节:
{
"mcpServers": {
"nxos-cli": {
"command": "uv",
"args": [
"--directory",
"C:\\absolute\\path\\to\\nxos-cli-mcp",
"run",
"nxos_cli_mcp.py"
]
}
}
}保存后,重新启动Claude Desktop以使更改生效。
Visual Studio Code
macOS:
编辑VS Code MCP设置文件:
code ~/Library/Application\ Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json添加服务器配置:
{
"mcpServers": {
"nxos-cli": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/nxos-cli-mcp",
"run",
"nxos_cli_mcp.py"
]
}
}
}窗户:
编辑VS Code MCP设置文件:
notepad %APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\cline_mcp_settings.json添加服务器配置:
{
"mcpServers": {
"nxos-cli": {
"command": "uv",
"args": [
"--directory",
"C:\\absolute\\path\\to\\nxos-cli-mcp",
"run",
"nxos_cli_mcp.py"
]
}
}
}保存后,重新加载VS代码窗口(命令/Ctrl+Shift+P→ “开发人员:重新加载窗口”)。
重要提示:
- 替换
/absolute/path/to/nxos-cli-mcp(或C:\absolute\path\to\nxos-cli-mcp)包含项目目录的实际完整路径 - 确保
.env包含您的凭据的文件位于项目目录中 - 服务器将自动从以下位置加载凭据
.envMCP客户端启动文件时
可用工具
1.nxos_execute_命令
在单个NX-OS设备上执行CLI命令。
参数:
ip_address(必填):设备的IP地址或主机名commands(必需):要执行的CLI命令列表response_format(可选):“text”(默认,人类可读)或“json”(结构化数据)username(可选):用于身份验证的用户名password(可选):身份验证密码timeout(可选):请求超时时间(秒)(默认值:30)
2.nxosexecute_commands_multi
在多个NX-OS设备上同时执行相同的CLI命令。
参数:
ip_addresses(必填):设备IP地址或主机名列表(最多50个)commands(必需):要在所有设备上执行的CLI命令列表response_format(可选):“text”(默认,人类可读)或“json”(结构化数据)username(可选):用于身份验证的用户名password(可选):身份验证密码timeout(可选):每个设备请求超时秒数(默认值:30)continue_on_error(可选):如果一个设备失败,则继续在其他设备上执行(默认值:true)
NX-API配置
在使用此MCP服务器之前,请确保NX-OS设备上已启用NX-API:
configure terminal
feature nxapi
nxapi http port 80
nxapi https port 443验证NX-API是否正在运行:
show nxapi安全注意事项
- 凭证:将凭据存储在
.envfile,永远不要将文件提交到版本控制 - 文件权限:确保
.env具有受限权限(chmod 600 .env在Unix系统上) - 超文本传输安全协议:此MCP服务器与NX-API进行HTTPS通信(对自签名证书禁用验证;针对生产更改此项!)
输出格式
命令是如何发送的
所有命令均以如下方式发送到NX-OS设备 文本 使用 cli_show_ascii API类型。这可确保与您熟悉的CLI体验保持一致的行为。
响应格式
- 文本 (默认):纯文本输出,与您在CLI会话中看到的相同
- 易于在Claude Desktop或VS Code中阅读 - 保留设备的格式 - 最适合交互式使用
- JSON:具有详细元数据的结构化JSON响应,可能更适合MCP主机(实验)
- 包括每个设备的成功/失败状态 - 命令执行结果 - 适用时的错误详细信息 - 适用于程序化解析或复杂的工作流程
错误处理
服务器为常见场景提供详细的错误消息:
- 身份验证失败:“身份验证失败。请检查用户名和密码。”
- 权限不足:“权限被拒绝。用户可能没有足够的权限。”
- 未找到NX-API:“未找到NX-API终结点。请验证设备是否支持NX-API。”
- 超时:“请求在X秒后超时”
- 命令错误:包括来自NX-OS的命令特定错误代码和消息
局限性
- 每次多设备命令执行最多50个设备
- 每个请求最多100个命令
- 超时范围:1-300秒
- SSL证书验证已禁用(假定为自签名证书),请在生产中更改此设置!
故障排除
连接被拒绝
- 验证NX-API是否已在设备上启用:
show nxapi - 检查网络连接:
ping - 验证HTTPS端口是否可访问(默认值:443)
认证失败
- 验证中的凭据
.env文件正确 - 检查
.env文件存在于项目根目录中 - 确保
.env文件格式正确(周围没有空格=) - 验证设备上是否存在用户帐户
- 通过SSH向设备测试证书
命令执行错误
- 验证NX-OS的命令语法是否正确
- 检查用户是否有足够的权限执行该命令
- 查看NX-OS命令输出以了解具体的错误详细信息
超时问题
- 增加慢速命令的超时参数
- 检查设备的网络延迟
- 考虑拆分大型命令批
测试
使用MCP检查器运行
npx @modelcontextprotocol/inspector uv run nxos_cli_mcp.py许可证
此MCP服务器是根据MIT许可证按原样提供的。
贡献
欢迎投稿!请确保:
- 代码遵循现有的模式和约定
- 所有函数都有全面的文档字符串
- 输入验证由Pydantic模型处理
- 错误信息清晰且可操作
支持
关于以下问题:
- NX-API公司:查阅思科NX-OS文档
- MCP协议:参观https://modelcontextprotocol.io
- 此服务器:查看错误消息和故障排除部分
](https://lobehub.com/mcp/sdntechforum-nxos-mcp)
