MCP Server Junos (Juniper Devices) について
MCP Server Junosは、Junos搭載のJuniper Networksデバイスを調査、設定するツールを提供します。ネットワーク運用者はデバイス情報やコマンド出力の取得、設定変更の適用、ローカル設定済みデバイスの一覧取得を行えます。
主な機能
- 01デバイス基本情報の取得
- 02showコマンドの実行
- 03設定の読み込みとコミット
- 04ローカル設定済みデバイスの一覧
- 05SSEとStreamable HTTPのトランスポート
活用シーン
- 01デバイスのモデルとOSバージョンの確認
- 02設定やコマンド出力の調査
- 03Junos設定変更の適用
- 04設定済みデバイス名とアドレスの確認
MCP 対応
get_fact、show_command、apply_config、list_devicesなどのデバイス操作をMCPツールとして公開します。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 プロジェクトは、Junos オペレーティングシステムを搭載した Juniper Networks デバイスの運用状態の確認と設定変更を行うための MCP ツールを提供します。
Juniper の junos-eznc Python SDK と FastMCP を使用します。
ツール
- get_fact:OS バージョンやモデルなど、デバイスの基本情報を取得します。
- 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.ymlに名前変更しますmv 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 では、MCP サーバーの Streamable HTTP トランスポートは v1.100 以降でサポートされています。以前のバージョンでは SSE トランスポートがサポートされています。
ライセンス
このプロジェクトは MIT ライセンスのもとで公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。