Juniper から MCP サーバが GitHub で公開されていたので、実際に試してみました
以下のようにチャット形式で質問すると実際の Juniper のルータに状態の確認をしにいって回答をしてくれます
▼ junos-mcp-server
▼ 前回試した NetBox の MCP サーバ
今回の構成
今回は以下のような構成で実施しています
それぞれの役割は以下のとおりです
- Open WebUI(ブラウザUI + バックエンド)
- ブラウザからのUI表示、会話管理、MCPツール呼び出し、Gemini への推論依頼
- MCP Server
- Juniper 用の MCP Server、 MCP プロトコル経由で MCP クライアント ( Open WebUI ) とやりとり、Juniper ルータとはSSHで情報取得して MCP クライアントへ回答する
今回確認した各バージョンは以下の通りです、Ubuntu上に Containerlab で環境構築しています
- Ubuntu : 24.04.2 LTS
- Containerlab 0.71.0
- Open WebUI : v0.6.34
- cJunosEvolved 25.2R1.8-EVO
- freeRouter-rare v23.10.11-cur
cJunosEvolved と freeRouter で OSPF ネイバー確立するようにコンフィグをいれています
Containerlab 用の yml など各ファイルは以下の通りです
▼ Containerlab 用の yml junos-mcp.clab.yml
- cJunosEvolved のコンフィグ
-
freeRouter のコンフィグ
- cJunosEvolved・freeRouter ともに、ユーザ名
admin、パスワードadmin@123としてます
- cJunosEvolved・freeRouter ともに、ユーザ名
-
devices.json
- こちらに記載されたデバイスが Junos MCP サーバの管理対象になるので今回は cJunosEvolved のマネジメントIPを登録してます
-
.tokens
- Open WEBUI で Junos MCP サーバを登録する際の認証キーになります、今回はお試しなんでわかりやすいキーにしてます
環境準備
Containerlab インストール
こちらのサイトにインストール方法は記載されています
手っ取り早くインストールしたい場合は、以下のコマンド一発で Containerlab と必要なソフトのインストールが完了します
curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"
Docker イメージ の準備
今回は、junos-mcp-server Open WebUI cJunosEvolved FreeRouter の4つの Docker イメージを利用しますが、junos-mcp-serverとcJunosEvolvedは事前に準備します
(Open WebUIとFreeRouterはcontainerlab deploy時に自動でダウンロードされます)
cJunosEvolved
以下のサイトからダウンロードできます。無料でかつユーザ登録などもなしで利用できます
ダウンロードサイト内の「Container」-「Docker Tarball - AMD64」をダウンロードしてください
ダウンロード前に出てくる内容を確認・同意の上ダウンロードしてください
Docker イメージを使えるように準備
ダウンロードしたファイルを、Containerlab の Ubuntu サーバに保存し、Ubuntu 上で以下のコマンドを実行すると Docker イメージを使えるようになります
docker image load -i cJunosEvolved-25.2R1.8-EVO.tar.gz
docker imagesコマンドで以下のように表示されれば cJunosEvolved の準備完了です
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
cjunosevolved 25.2R1.8-EVO 6748aac28acd 3 weeks ago 2.01GB
Junos-MCP サーバ
GitHub の Junos-MCP サーバのリポジトリをローカルにコピーしてビルドします
# GitHub からダウンロード
git clone --depth=1 https://github.com/Juniper/junos-mcp-server.git
# ディレクトリ移動
cd junos-mcp-server
# Build Docker Container
docker build -t junos-mcp-server:latest .
docker imagesコマンドで以下のように表示されれば準備完了です
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
junos-mcp-server latest cb6e4375b55c 8 seconds ago 226MB
cjunosevolved 25.2R1.8-EVO 6748aac28acd 3 months ago 2.01GB
containerlab deploy
以下の 3 つの手順で簡単に今回の検証環境の接続とコンフィグが登録された状態で起動してきます
今回の構成やコンフィグを一式 GitHub からダウンロード
git clone --depth=1 https://github.com/katsumi2018/clab-cjunos-mcp.git
ディレクトリ移動
cd clab-cjunos-mcp
containerlab deployで検証環境が起動します。
- 初回は、
Open WebUIとFreeRouterのコンテナのダウンロードが自動で行われます - cJunosEvolved は結構時間がかかります。自分の環境だと 5 分くらいかかりました
containerlab deploy
Open WebUI 設定
Google AI Studio で API キー発行
今回は、外部の Gemini (Gemini API) に変えて使って行うため、以下の手順で、Google AI Studio で API キー発行します
- Google AI Studio にログイン(Googleアカウント必須)
- 左のメニューの下の方の「Get API key」から新しいキーを作成
- 「+ APIキーを作成」から作成
- 表示された API キーをコピーしておきます
Open WebUI に Gemini を登録
- Open WebUI 管理画面の左下の User を選択 → 「設定」
- 開いた設定画面の左下の「管理者設定」を選択
- 「接続」を選択し、「OpenAI API」の右の「+」で接続を追加
- 以下の画像のように追加
- URL の右側にある円の矢印を選択すると、接続を確認して成功すると画面右上に緑色で「サーバー接続が確認されました」が表示されれば OK です
- 最後に「保存」で終了
これで新しいチャットを開いて、画面上のモデルを選択する場所で「外部」を選択すると Gemini の複数のモデルが表示されます

今回は無料枠での利用で「Gemini 2.0 Flash」を使います。
無料枠や料金についてはコチラをご確認ください
Open WebUI に Junos-MCP 登録
-
Open WebUI 管理画面の左下の User を選択 → 「設定」
-
開いた設定画面の左下の「管理者設定」を選択
-
「External Tools」を選択し「ツールサーバーの管理」の右の「+」で接続を追加
-
以下の画像のように追加
新しいチャットの設定
以下の画像のとおりモデルと、ツールで「Junos-MCP」を選択するとチャットで自然言語をつかって Juniper ルータの状態を確認することができます
これで一通り準備完了です
確認してみる
Open WebUI でチャットの自然言語で、cJunosEVOのルータの状態を確認します
まずは、IF状態を確認してみると以下のとおり、装置の状態を確認しにいて回答してくれます
また、「関連質問」も提案してくれます

実際は、以下の画像の問い合わせを MCP サーバに行い、Juniperルータから情報取得してるようでした、問い合わせについてはチャットに記載した自然言語を Gemini がいい具合に判断して問い合わせパラメータを決めているみたいです

いい感じで回答してくれました
ハマった箇所
最後に参考として、自分が実際に試した際にハマった箇所を記載します。
IPv6 が有効だと外部ツールとして正しく認識されません。
Containerlab では mgmt にデフォルトで IPv6 アドレスが払い出されますが、IPv6 が有効な状態だと、Open WebUI に Junos-MCP を登録する際にエラーが発生しました。
対応としては Containerlab の yml ファイルの最初にmgmt:を IPv4 のみを記載して IPv6 が払い出ししないようにして対応できました。
mgmt:
network: clab
ipv4-subnet: 172.20.20.0/24 # 管理ネットワーク設定(IPv4のみでIPv6は利用しない)
最後に
show コマンドを覚えなくても自然言語で、確認したいことを確認できるのは便利
他の MCP サーバと連携するとさらに便利かも
前回やった NetBox の MCP サーバと組み合わせて、実機の状態とNetBoxの登録内容の確認したたり、登録や設定変更ができるようなるとさらに便利に利用できるかなと思いました





