关于 MCP Server Junos (Juniper Devices)
MCP Server Junos 为运行 Junos 的 Juniper Networks 设备提供查看和配置工具。网络运维人员可获取设备信息与命令输出、提交配置更改,并查询本地配置的设备列表。
主要功能
- 01获取设备基本信息
- 02执行 show 命令
- 03加载并提交配置
- 04列出本地配置的设备
- 05支持 SSE 和 Streamable HTTP 传输
适用场景
- 01检查设备型号和操作系统版本
- 02查看配置或命令输出
- 03应用 Junos 配置更改
- 04查找已配置的设备名称和地址
MCP 相关
将设备操作作为 MCP 工具提供,包括 get_fact、show_command、apply_config 和 list_devices。MCP 客户端通过配置的 SSE 或 Streamable HTTP 端点连接。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://127.0.0.1:10008/sseclaude mcp add --transport http junos http://127.0.0.1:10008/sse{"mcpServers":{"junos":{"type":"http","url":"http://127.0.0.1:10008/sse"}}}在 Cursor 中打开{"servers":{"junos":{"type":"http","url":"http://127.0.0.1:10008/sse"}}}在 VS Code 中打开{"mcpServers":{"junos":{"type":"http","url":"http://127.0.0.1:10008/sse"}}}{"mcpServers":{"junos":{"serverUrl":"http://127.0.0.1:10008/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
Junos MCP 服务(mcp-server-junos)
概述
mcp-server-junos 项目提供 MCP 工具,用于查看运行状态并更改运行 Junos 操作系统的 Juniper Networks 设备配置。
该项目使用 Juniper 的 junos-eznc Python SDK 和 FastMCP。
工具
- get_fact:获取设备的基本信息,例如操作系统版本和型号。
- show_command:在设备上执行指定的 show 命令并返回输出。可用于获取设备配置和执行 ping 命令。
- apply_config:以
set和junos(花括号)格式加载配置更改并提交到设备。 - list_devices:获取 MCP 服务上本地配置的设备列表。列表包含用于远程访问的设备名称和IP 地址。
安装
- 克隆代码库:
git clone <repository-url> cd mcp-server-junos
作为独立应用运行
-
安装所需的依赖项:
pip install -r requirements.txt -
将示例配置文件
config.example.yml重命名为config.ymlmv config.example.yml config.yml
作为 Docker 容器运行
**注意:**如果要将配置文件包含在 Docker 镜像中,请在构建容器镜像之前预先配置。否则,可以使用环境变量向容器提供全局访问参数(示例见 用法 部分)。
-
将示例配置文件
config.example.yml重命名为config.yml并进行相应配置,然后mv config.example.yml config.yml -
构建 Docker 容器镜像
docker build -t mcp-server-junos .
配置
预期的配置文件名为 config.yml,应放置在根目录中。
提供的示例配置文件 config.example.yml 可用作起点
mv config.example.yml config.yml
如果使用环境变量,其优先级将高于配置文件参数。
全局服务配置
使用配置文件:
global:
# To listen on all available interfaces use "0.0.0.0"
server_host: 127.0.0.1
server_port: 10008
# Possible values: "sse" or "streamable-http"
server_transport: "streamable-http"
使用环境变量:
MCP_SERVER_JUNOS_HOST="127.0.0.1"
MCP_SERVER_JUNOS_PORT=10008
MCP_SERVER_JUNOS_TRANSPORT="streamable-http"
LOG_LEVEL="INFO"
设备清单
使用配置文件:
配置文件键 devices 包含设备名称及其对应访问配置的字典。
device_name:设备名称host:用于访问的 IP 地址user:用于访问的用户名passwd:用于访问的密码port:用于 NETCONF/SSH 访问的 TCP 端口
示例:
access:
default:
user: "admin"
passwd: "admin@123"
port: 830
test: &test
user: "admin"
passwd: "admin@123"
port: 830
devices:
r1:
host: 172.20.20.2
user: "admin"
passwd: "admin@123"
port: 830
r2:
host: 172.20.20.3
<<: *test
对于未在配置文件中明确配置的设备,可以指定默认访问参数。
通过在 host 参数中提供 IP 地址,可以使用公开的 MCP 工具访问这些设备。
-
首选使用环境变量:
MCP_SERVER_JUNOS_ACCESS_DEFAULT_USER="admin" MCP_SERVER_JUNOS_ACCESS_DEFAULT_PASSWD="admin" MCP_SERVER_JUNOS_ACCESS_DEFAULT_PORT=830 -
次选使用配置文件:
access: default: user: "admin" passwd: "admin" port: 830
用法
作为独立应用运行
要使用 MCP 服务,请运行该文件:
python mcp_server_junos.py
- MCP 服务在可配置的端口(默认值为 10008)和 IP 地址上公开 HTTP SSE 接口
- 使用 SSE 传输连接到本地 MCP 服务的 URL 为:
http://127.0.0.1:10008/sse - 使用 Streamable HTTP 传输连接到本地 MCP 服务的 URL 为:
http://127.0.0.1:10008/mcp/
作为 Docker 容器运行
作为 Docker 容器运行时,用户可以通过环境变量提供全局配置,无需配置文件。访问任何设备时都会使用所提供的访问凭据。
另一种方式是构建包含配置文件 config.yml 的 Docker 镜像,或将该文件作为卷挂载到容器的 /mcp-server-junos/config.yml 路径。
docker run -d \
--net=host \
--name mcp-server-junos \
-e MCP_SERVER_JUNOS_ACCESS_DEFAULT_USER="admin" \
-e MCP_SERVER_JUNOS_ACCESS_DEFAULT_PASSWD="admin@123" \
-e MCP_SERVER_JUNOS_ACCESS_DEFAULT_PORT=830 \
-e MCP_SERVER_JUNOS_HOST="127.0.0.1" \
-e MCP_SERVER_JUNOS_PORT=10008 \
-e MCP_SERVER_JUNOS_TRANSPORT="streamable-http" \
mcp-server-junos:latest
测试
已使用 Github Copilot 和 VS Code(v1.100.2)作为 MCP 客户端,通过 Streamable HTTP 和 SSE 进行测试。
- 各种 show 命令
- 基本设备配置
- 设备间 ping
注意:VS Code 从 v1.100 开始支持 MCP 服务的 Streamable HTTP 传输。较旧版本支持 SSE 传输。
许可证
本项目采用 MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。