🌐 Nornir MCP サーバー
NornirとNAPALMを活用したネットワーク自動化ツールを提供するFastMCPサーバー。
このサーバーはブリッジとして機能し、Nornir/NAPALM ネットワーク操作を MCP (大規模同時処理) ツールとして公開し、互換性のある MCP クライアント (FastMCP Web UI など) から簡単にアクセスできるようにします。
✨ 主な特徴
Nornir を活用して、ネットワーク デバイスに対する在庫管理と同時タスク実行を行います。
複数ベンダーのデバイス間の相互作用(情報収集、コマンド実行)に NAPALM を使用します。
さまざまなトランスポート (この構成では SSE) を使用して MCP クライアントとシームレスに統合できるように FastMCP を使用して構築されています。
セットアップとデプロイメントを簡単にするために、Docker 🐳 でコンテナ化されています。
コンテナ内の高速な Python 依存関係管理には
uvを使用します⚡。
Related MCP server: Cloudflare API MCP Server
🔧 前提条件
始める前に、以下がインストールされていることを確認してください。
Docker Compose (通常、Docker Desktop に含まれています)
⚙️ 構成
サーバーを実行する前に、ネットワーク インベントリとデバイスの資格情報を構成する必要があります。
プロジェクト内の
conf/ディレクトリに移動します。hosts.yaml。ネットワークデバイスを定義します。管理IP/ホスト名、プラットフォーム(例:ios、junos、eos)、認証情報(デフォルトを使用しない場合)を指定し、必要に応じてグループに割り当てます。groups.yaml: プラットフォームや接続オプションなどの共通プロパティを持つデバイスグループを定義します。ここでの設定はデフォルトを上書きできます。defaults.yaml。デフォルトの資格情報 (username、password) と接続オプション (有効なパスワードの NAPALMsecretやデフォルトのplatformなど) を設定します。⚠️ 重要なセキュリティ上の注意:ファイルに直接保存することを避けるため、Nornirの組み込みシークレット管理機能(環境変数、HashiCorp Vaultプラグインなど)の使用を強く検討してください。シークレットプロバイダーを実装する場合は、
nornir_ops.pyと設定を変更してください。
config.yaml。インベントリファイルのパス (host_file、group_file、defaults_file)conf/ディレクトリ内のファイルを正しく指していることを確認します (デフォルトでは正しく指しているはずです)。必要に応じて、ランナーオプション (num_workers) を調整します。
▶️ サーバーの実行
設定が完了したら、Docker Compose を使用してサーバーを簡単に実行できます。
上記の説明に従って
conf/ディレクトリが設定されていることを確認してください。プロジェクトのルート ディレクトリ (
Dockerfileおよびdocker-compose.ymlファイルと同じディレクトリ) でターミナルまたはコマンド プロンプトを開きます。次のコマンドを実行します。
docker-compose up --build -d--buildフラグは、初めてDockerfileに基づいてイメージをビルドするか、プロジェクト ファイル (.pyファイルやpyproject.tomlなど) が変更された場合に Docker Compose に指示します。このコマンドは、Docker コンテナ内で Nornir MCP サーバーを起動します。
サーバーログはターミナルに表示されます。デフォルトでは、ホストマシン(localhost)のポート
8000でアクセスできるはずです。サーバーを停止するには、
docker-compose実行中のターミナルでCtrl+Cを押します。その後コンテナを削除するには、docker-compose downを実行します。
🔌 MCPクライアントへの追加
このサーバーが提供するツールを MCP クライアント (公式のFastMCP Web UIやその他の互換性のあるクライアントなど) で使用するには:
Nornir MCP サーバーが実行されていることを確認します (
docker-compose upを使用)。MCP クライアント アプリケーションを開きます。
MCP サーバー接続を追加または管理するためのオプションを見つけます。
次の詳細を含む新しい接続を追加します。
サーバー URL : このサーバーは SSE (Server-Sent Events) トランスポートを使用し、デフォルトでポート 8000 で実行されるため、URL は次のようになります。
sse://localhost:8000(Docker ホストにクライアントからアクセスできる別の IP アドレスがある場合は、
接続名:
Nornir Lab Serverなどのわかりやすい名前を付けます。
保存して、新しく追加されたサーバーに接続します。
MCPクライアントは
Nornir_MCPサービスを検出し、利用可能なツール(get_facts、send_commandなど)をすべてリストします。これで、クライアントインターフェースからこれらのツールを使用できるようになりました!🎉
🛠️ 利用可能なツールとリソース
MCP クライアント経由で接続すると、通常、次のツール (「Nornir_MCP」サービス名の下) が利用できるようになります。
在庫:
list_all_hosts: Nornir インベントリ (conf/hosts.yaml) に設定されているデバイスを一覧表示します。
ナパームゲッター: (情報を取得)
get_factsget_interfacesget_interfaces_ipget_interfaces_countersget_config(retrieveオプション: 実行中、起動中、候補)get_arp_tableget_mac_address_tableget_usersget_vlansget_snmp_informationget_bgp_neighbors(利用可能かどうかはデバイス プラットフォームと NAPALM ドライバーのサポートによって異なります)
実行:
send_command: 単一の読み取り専用コマンドをデバイスに送信し、出力を取得します。
ストリーミングリソース:
sse://updates: シンプルなハートビート イベント ストリームを提供します。(SSE リソースをサポートするクライアントがサブスクライブできます)。
📄 ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。
🙌 貢献
貢献、問題、機能リクエストを歓迎します。プロジェクトのリポジトリからお気軽にご提出ください。
This server cannot be installed
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.