🌐 Nornir MCP サーバー
NornirとNAPALMを活用したネットワーク自動化ツールを提供するFastMCPサーバー。
このサーバーはブリッジとして機能し、Nornir/NAPALM ネットワーク操作を MCP (大規模同時処理) ツールとして公開し、互換性のある MCP クライアント (FastMCP Web UI など) から簡単にアクセスできるようにします。
✨ 主な特徴
Nornir を活用して、ネットワーク デバイスに対する在庫管理と同時タスク実行を行います。
複数ベンダーのデバイス間の相互作用(情報収集、コマンド実行)に NAPALM を使用します。
さまざまなトランスポート (この構成では SSE) を使用して MCP クライアントとシームレスに統合できるように FastMCP を使用して構築されています。
セットアップとデプロイメントを簡単にするために、Docker 🐳 でコンテナ化されています。
コンテナ内の高速な Python 依存関係管理には
uv
を使用します⚡。
🔧 前提条件
始める前に、以下がインストールされていることを確認してください。
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_facts
get_interfaces
get_interfaces_ip
get_interfaces_counters
get_config
(retrieve
オプション: 実行中、起動中、候補)get_arp_table
get_mac_address_table
get_users
get_vlans
get_snmp_information
get_bgp_neighbors
(利用可能かどうかはデバイス プラットフォームと NAPALM ドライバーのサポートによって異なります)
実行:
send_command
: 単一の読み取り専用コマンドをデバイスに送信し、出力を取得します。
ストリーミングリソース:
sse://updates
: シンプルなハートビート イベント ストリームを提供します。(SSE リソースをサポートするクライアントがサブスクライブできます)。
📄 ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています。
🙌 貢献
貢献、問題、機能リクエストを歓迎します。プロジェクトのリポジトリからお気軽にご提出ください。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Nornir および NAPALM 操作を MCP ツールとして公開することでネットワーク自動化ツ��ルを提供し、ユーザーが互換性のある MCP クライアントを通じてネットワーク デバイスを管理および操作できるようにする FastMCP サーバー。
Related MCP Servers
- -securityAlicense-qualityFastMCP is a comprehensive MCP server allowing secure and standardized data and functionality exposure to LLM applications, offering resources, tools, and prompt management for efficient LLM interactions.Last updated -3MIT License
- -securityAlicense-qualityA lightweight MCP server for managing DNS records, purging cache, and interacting with the Cloudflare API through natural language commands.Last updated -22MIT License
- AsecurityAlicenseAqualityA Model Control Protocol server that provides access to nmap network scanning functionality, allowing users to run customizable scans, store results, and analyze network security using AI prompts.Last updated -310MIT License
- -securityFlicense-qualityA FastMCP server that enables browser automation through natural language commands, allowing Language Models to browse the web, fill out forms, click buttons, and perform other web-based tasks via a simple API.Last updated -3