junos-mcp-server
Juniper/junos-mcp-server加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:凌晨三点,某核心路由器的 BGP 邻居突然中断。传统的处理方式是,网络工程师需要远程登录设备,逐行检查配置、翻阅日志、手动比对策略——整个过程耗时且容易出错。但现在,一位工程师在终端里对 AI 说:"帮我检查 core-r1 的 BGP 状态,如果发现邻居 down 了,把配置改成自动重连。" AI 理解了他的意图,调用了正确的命令,返回了清晰的诊断报告,甚至直接提交了修复配置。
这个场景正在变成现实,而背后支撑它的核心技术之一,就是 junos-mcp-server。
Juniper Networks 是全球领先的网络设备供应商,其 Junos 操作系统广泛应用于运营商骨干网、企业核心网络和数据中心。传统的网络运维依赖 CLI(命令行界面)和 NETCONF/YANG 等协议,需要工程师具备深厚的专业知识和手动操作技能。
Model Context Protocol(MCP) 是 Anthropic 在 2024 年底推出的一项开放协议,旨在为 AI 助手提供标准化的工具调用和数据获取能力。MCP 的核心思想是:让 AI 不再只能"聊天",而是能够真正执行操作——查询数据、调用工具、处理结果。就像 USB 接口统一了各种外设的连接方式,MCP 试图为 AI 与各类系统的交互提供统一"接口"。
junos-mcp-server 正是这两个趋势的交汇点:它由 Juniper 官方团队开发,将 MCP 协议引入 Junos 网络设备管理,让大语言模型能够通过标准化的接口直接操控真实网络设备。
从架构上看,junos-mcp-server 不仅仅是一个 Python 脚本,它是一个完整的 MCP Server 实现,基于 FastMCP 框架(mcp[cli]>=1.12.2)构建,并深度依赖 Juniper 官方 Python 库 PyEZ(junos-eznc>=2.7.4)。
PyEZ 是 Juniper 官方维护的 Python 库,专门用于通过 NETCONF 协议与 Junos 设备通信。它屏蔽了 NETCONF 协议的底层细节,提供了高级的 Python API,让开发者可以用 Python 对象的方式操作 Junos 配置——比如 device.config.load() 加载配置、device.config.commit() 提交变更。
junos-mcp-server 的核心工作流程如下:
根据代码分析,junos-mcp-server 实现了 9 个 MCP 工具:
| 工具名称 | 功能描述 | 典型使用场景 |
|---|---|---|
execute_junos_command | 在单台设备执行任意 CLI 命令 | 临时检查、调试 |
execute_junos_command_batch | 批量并行执行命令 | 巡检、多设备比对 |
execute_junos_pfe_command | 在 FPC 上执行 PFE 包转发引擎命令 | 硬件层诊断 |
get_junos_config | 获取设备当前配置 | 配置审查、合规检查 |
junos_config_diff | 对比配置版本差异 | 变更审计、回滚决策 |
junos_config_patch | 追加补丁式配置变更 | 精细化配置修改 |
junos_config_replace | 替换配置块 | 结构化变更 |
junos_commit | 提交候选配置到设备 | 变更生效 |
| Token 管理工具 | 生成/列出/撤销访问令牌 | 安全管控 |
批量并行执行是一个亮点功能。在大型网络中,工程师经常需要对数十台设备执行同一命令巡检。传统方式是一台一台登录;通过 execute_junos_command_batch,junos-mcp-server 可以同时连接多台设备(利用连接池),并行获取结果,显著提升效率。
代码中实现了一个 ConnectionPool 类,这是整个项目性能设计的关键点。
在网络运维场景中,AI 可能会在短时间内发起多次工具调用——比如"检查所有核心路由器的接口状态"、"对比最近 3 次配置变更"。如果每次调用都新建 SSH 连接,会造成:
ConnectionPool 通过以下策略解决了这个问题:
JMCP_POOL_IDLE_TIMEOUT)的空闲连接自动关闭# 安装 uv(如未安装)
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
uv run python jmcp.py -f devices.json -t stdio
uv 是新一代 Python 包管理工具,速度远快于 pip,且自带虚拟环境隔离。
项目提供了完整的 Dockerfile,基于 python:3.11-slim 镜像:
# 构建镜像
docker build -t junos-mcp-server:latest .
# stdio 模式(Claude Desktop)
docker run --rm -it \
-v /path/to/devices.json:/app/config/devices.json \
junos-mcp-server:latest
# HTTP 模式(VSCode Copilot)
docker run --rm -it \
-v /path/to/devices.json:/app/config/devices.json \
-p 30030:30030 \
junos-mcp-server:latest \
python jmcp.py -f /app/config/devices.json -t streamable-http -H 0.0.0.0
Dockerfile 中做了以下优化:
jmcp)运行,增强安全性openssh-client、net-tools、iputils-ping、traceroute 等网络诊断工具HEALTHCHECK),方便容器编排平台监控/app/config、日志目录 /app/logs、备份目录 /app/backups配置 Claude Desktop 的 claude_desktop_config.json:
{
"mcpServers": {
"junos": {
"command": "uv",
"args": ["run", "--directory", "/path/to/junos-mcp-server", "python", "jmcp.py", "-f", "/path/to/devices.json", "-t", "stdio"]
}
}
}
配置完成后,在 Claude Desktop 对话框中即可直接调用上述 9 个网络工具,就像有一个 24 小时在线的网络专家随时待命。
作为直接操控网络设备的工具,junos-mcp-server 在安全性上做了周全考虑:
认证机制支持三种方式:
Token 管理是另一个亮点功能:MCP Server 内置了 Token 管理 API,支持:
项目还在 README 中明确标注了"重要安全须知":AI 对网络设备的操作是不可逆的,生产环境中务必:
junos-mcp-server 作为一个相对年轻的项目(Stars 仅 103),在实际部署中面临一些挑战:
无法原生运行 Web UI:项目不支持通过浏览器界面操作,全部交互依赖 AI 客户端(Claude Desktop、VSCode Copilot)。如果团队中没有部署这些工具,项目的价值大打折扣。
对真实 Junos 设备的强依赖:测试环境需要真实的 Junos 设备或仿真器(Junos vMX/vSRX)。对于没有 Juniper 设备的团队,无法进行本地开发测试。
错误处理的不确定性:网络环境复杂多变——设备不可达、超时、配置冲突等异常场景的处理代码尚未经过大规模生产验证。在高压力网络环境下(如 BGP 震荡期间),MCP Server 本身的稳定性需要实际检验。
文档的完整性问题:README 虽然覆盖了基础使用场景,但高级功能(如连接池调优、多跳板机配置、Token 管理的详细 API)缺少系统性的说明文档。
junos-mcp-server 的出现,标志着网络运维进入了一个新的阶段。
传统网络运维的逻辑是主动巡检——工程师定期登录设备、检查状态、处理告警。这种方式的问题是:工程师必须具备广泛的知识面,必须主动发现异常,响应速度受限于人力。
引入 AI + MCP 后,逻辑变为智能感知——AI 持续监控系统状态,当异常出现时自动诊断、分析、提出修复方案,甚至在授权范围内直接执行修复。工程师从"操作者"变为"决策者",只需处理 AI 无法自动处理的复杂问题。
Juniper 官方团队维护此项目,也释放了一个重要信号:主流网络设备厂商正在积极拥抱 AI 时代。可以预见,未来会有更多厂商推出类似的 MCP Server,让 AI 能够操控思科、华为、Arista 等各品牌设备。
junos-mcp-server 是一个精准定位的垂直领域工具。它不追求大而全,而是专注于一件事:让大语言模型能够安全、标准化地操控 Juniper Junos 网络设备。
对于正在探索 AI+网络运维融合的团队,这个项目值得深入研究——即便暂时不投入生产环境,也能从源码中学习 MCP Server 的实现方式、PyEZ 的高级用法、以及连接池设计等工程实践。
网络的世界正在被 AI 重新定义,而 junos-mcp-server 正是这场变革的一个缩影。