2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Juniper の MCP サーバを Containerlab で試す

Last updated at Posted at 2025-10-18

Juniper から MCP サーバが GitHub で公開されていたので、実際に試してみました

以下のようにチャット形式で質問すると実際の Juniper のルータに状態の確認をしにいって回答をしてくれます

image.png

▼ junos-mcp-server

▼ 前回試した NetBox の MCP サーバ

今回の構成

今回は以下のような構成で実施しています

image.png

それぞれの役割は以下のとおりです

  • 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としてます
  • 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-servercJunosEvolvedは事前に準備します
(Open WebUIFreeRoutercontainerlab 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 WebUIFreeRouterのコンテナのダウンロードが自動で行われます
  • cJunosEvolved は結構時間がかかります。自分の環境だと 5 分くらいかかりました
containerlab deploy

Open WebUI 設定

Google AI Studio で API キー発行

今回は、外部の Gemini (Gemini API) に変えて使って行うため、以下の手順で、Google AI Studio で API キー発行します

  1. Google AI Studio にログイン(Googleアカウント必須)
  2. 左のメニューの下の方の「Get API key」から新しいキーを作成
  3. 「+ APIキーを作成」から作成
  4. 表示された API キーをコピーしておきます

Open WebUI に Gemini を登録

  1. Open WebUI 管理画面の左下の User を選択 → 「設定」
  2. 開いた設定画面の左下の「管理者設定」を選択
  3. 「接続」を選択し、「OpenAI API」の右の「+」で接続を追加
  4. 以下の画像のように追加
    • 「URL」は https://generativelanguage.googleapis.com/v1beta/openai
    • 「キー」は Google AI Studio で作成した API キーを入力
      image.png
  5. URL の右側にある円の矢印を選択すると、接続を確認して成功すると画面右上に緑色で「サーバー接続が確認されました」が表示されれば OK です
  6. 最後に「保存」で終了

これで新しいチャットを開いて、画面上のモデルを選択する場所で「外部」を選択すると Gemini の複数のモデルが表示されます
image.png

今回は無料枠での利用で「Gemini 2.0 Flash」を使います。
無料枠や料金についてはコチラをご確認ください

Open WebUI に Junos-MCP 登録

  1. Open WebUI 管理画面の左下の User を選択 → 「設定」

  2. 開いた設定画面の左下の「管理者設定」を選択

  3. 「External Tools」を選択し「ツールサーバーの管理」の右の「+」で接続を追加

  4. 以下の画像のように追加

    • 「種類」が初期値が「OpenAI」となっているためその部分をクリックして「MCP Streamable HTTP」に変更
    • URLにhttp://junos-mcp:30030/mcpを入力
    • 認証にjmcp_1234567890ABCDEFGabcdefg12345678を入力
      • こちらの値は、Githubからコピーした.tokensのファイル内に記載された内容となります
    • ID と名前にJunos-MCPを入力
      image.png

新しいチャットの設定

以下の画像のとおりモデルと、ツールで「Junos-MCP」を選択するとチャットで自然言語をつかって Juniper ルータの状態を確認することができます

image.png

これで一通り準備完了です

確認してみる

Open WebUI でチャットの自然言語で、cJunosEVOのルータの状態を確認します

まずは、IF状態を確認してみると以下のとおり、装置の状態を確認しにいて回答してくれます
また、「関連質問」も提案してくれます
image.png

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

OSPFのネイバー状態も教えてくれます
image.png

いい感じで回答してくれました

ハマった箇所

最後に参考として、自分が実際に試した際にハマった箇所を記載します。
IPv6 が有効だと外部ツールとして正しく認識されません。
Containerlab では mgmt にデフォルトで IPv6 アドレスが払い出されますが、IPv6 が有効な状態だと、Open WebUI に Junos-MCP を登録する際にエラーが発生しました。
対応としては Containerlab の yml ファイルの最初にmgmt:を IPv4 のみを記載して IPv6 が払い出ししないようにして対応できました。

junos-mcp.clab.yml (抜粋)
mgmt:
  network: clab
  ipv4-subnet: 172.20.20.0/24 # 管理ネットワーク設定(IPv4のみでIPv6は利用しない)

最後に

show コマンドを覚えなくても自然言語で、確認したいことを確認できるのは便利
他の MCP サーバと連携するとさらに便利かも
前回やった NetBox の MCP サーバと組み合わせて、実機の状態とNetBoxの登録内容の確認したたり、登録や設定変更ができるようなるとさらに便利に利用できるかなと思いました

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?