mcpField
M
MCP Server Junos (Juniper Devices)

MCP Server Junos (Juniper Devices)

远程服务
github.com/dpajin云与基础设施1175 周前更新
代码仓库

关于 MCP Server Junos (Juniper Devices)

MCP Server Junos 为运行 Junos 的 Juniper Networks 设备提供查看和配置工具。网络运维人员可获取设备信息与命令输出、提交配置更改,并查询本地配置的设备列表。

主要功能

  1. 01获取设备基本信息
  2. 02执行 show 命令
  3. 03加载并提交配置
  4. 04列出本地配置的设备
  5. 05支持 SSE 和 Streamable HTTP 传输

适用场景

  1. 01检查设备型号和操作系统版本
  2. 02查看配置或命令输出
  3. 03应用 Junos 配置更改
  4. 04查找已配置的设备名称和地址

MCP 相关

将设备操作作为 MCP 工具提供,包括 get_fact、show_command、apply_config 和 list_devices。MCP 客户端通过配置的 SSE 或 Streamable HTTP 端点连接。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://127.0.0.1:10008/sse
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmsupergateway

工具

详细介绍

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 地址。

安装

  1. 克隆代码库:
    git clone <repository-url>
    cd mcp-server-junos
    
作为独立应用运行
  1. 安装所需的依赖项:

    pip install -r requirements.txt
    
  2. 将示例配置文件 config.example.yml 重命名为 config.yml

    mv config.example.yml config.yml
    
作为 Docker 容器运行

**注意:**如果要将配置文件包含在 Docker 镜像中,请在构建容器镜像之前预先配置。否则,可以使用环境变量向容器提供全局访问参数(示例见 用法 部分)。

  1. 将示例配置文件 config.example.yml 重命名为 config.yml 并进行相应配置,然后

    mv config.example.yml config.yml
    
  2. 构建 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 许可证。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。