Cisco NSO MCP Server について
Cisco NSO MCP Serverは、Cisco NSOのネットワークデータと操作をMCP対応クライアントに公開します。ネットワークチームはAIアプリケーションからデバイスやサービスのツールを使い、環境リソースを参照できます。
主な機能
- 01デバイスのNED IDとグループの取得
- 02デバイスのプラットフォーム、設定、状態の参照
- 03デバイス同期状態の確認と同期
- 04サービスタイプとサービスの一覧
- 05NSO環境の概要を提供
活用シーン
- 01デバイスの設定と状態を確認する
- 02デバイスの同期状態を確認する
- 03利用可能なNSOサービスを調べる
- 04AIアプリケーションにNSO環境情報を渡す
MCP 対応
Cisco NSOの操作をMCPツールとして公開し、環境情報をリソースとして提供します。デフォルトのstdioに加えて、HTTPトランスポートも設定できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Cisco NSO MCP サーバー
Cisco NSO (Network Services Orchestrator) の Model Context Protocol(MCP)サーバー実装です。NSO のデータや操作を、MCP 対応クライアントが利用できる MCP プリミティブ(ツール、リソースなど)として公開し、自然言語でのやり取りを通じて AI を活用したネットワーク自動化を実現します。
カスタムクライアントのサンプル

MCP とは?
Model Context Protocol(MCP)は、AI モデルが外部のツールやサービスと連携する方法を標準化するオープンプロトコルです。MCP により、次のことが可能になります。
- ツールの定義:AI モデルが使用できるツールを構造化された方法で定義します
- ツールの検出:モデルが利用可能なツールを検出する仕組みを提供します
- ツールの実行:モデルがツールを呼び出し、結果を受け取るための標準化された方法を提供します
- コンテキスト管理:ツールとモデルの間でコンテキストを効率的に受け渡します
- フレームワーク非依存:OpenAI、Anthropic、Google Gemini など、複数の AI フレームワークで動作します
- 相互運用性:AI システムが外部ツールと通信するための共通言語を提供します
機能
- Stdio トランスポート:この MCP サーバーはデフォルトで、プロセスにバインドされた通信に Stdio トランスポートを使用します
- ツール優先の設計:ネットワーク操作を、明確なインターフェースを持つ個別のツールとして定義します
- 非同期処理:パフォーマンスを向上させるため、すべてのネットワーク操作を非同期で実装しています
- 構造化されたレスポンス:ステータス、データ、メタデータのセクションで構成される一貫したレスポンス形式を使用します
- 環境リソース:NSO 環境に関するコンテキスト情報を提供します
- NSO との統合:cisco-nso-restconf ライブラリを使用し、NSO の RESTCONF API に対する使いやすい Pythonic なインターフェースを提供します
- 柔軟なログ記録:環境変数で、stdout および/またはファイルへのログ記録を設定できます。
LOG_FILE環境変数が設定されている場合、ログは stdout と指定されたファイルの両方に送信されます。ログファイルを作成または書き込めない場合、サーバーはエラーメッセージとともに stdout のみへのログ記録に切り替えます - 複数クライアントのサポート:Windsurf Cascade やカスタム Python アプリケーションなど、あらゆる MCP 対応クライアントで動作します
利用可能なツールとリソース
ツール
| ツール名 | 説明 | 入力 | 戻り値 |
|---|---|---|---|
get_device_ned_ids | Cisco NSO から Network Element Driver(NED)ID を取得します | NED ID のリストを含む辞書 | |
get_device_groups | Cisco NSO からデバイスグループを取得します | デバイスグループのリストを含む辞書 | |
get_device_platform | Cisco NSO の特定のデバイスのプラットフォーム情報を取得します | 'device_name' (string) | 指定したデバイスのプラットフォーム情報を含む辞書 |
get_device_config | Cisco NSO の特定のデバイスの完全な設定を取得します | 'device_name' (string) | 指定したデバイスの設定を含む辞書 |
get_device_state | Cisco NSO の特定のデバイスの状態を取得します | 'device_name' (string) | 指定したデバイスの状態を含む辞書 |
check_device_sync | Cisco NSO の特定のデバイスの同期ステータスを確認します | 'device_name' (string) | 指定したデバイスの同期ステータスを含む辞書 |
sync_from_device | Cisco NSO の特定のデバイスから同期します | 'device_name' (string) | 指定したデバイスの同期ステータスを含む辞書 |
get_service_types | Cisco NSO のサービス種別を取得します | サービス種別を含む辞書 | |
get_services | Cisco NSO の特定のサービスタイプのサービスを取得します | 'service_type' (string) | 指定したサービスタイプのサービスを含む辞書 |
リソース
https://resources.cisco-nso-mcp.io/environment:NSO 環境をまとめた情報を提供します。- デバイス数、オペレーティングシステムの分布、オペレーティングシステムの種類数、モデルの種類数、モデルの分布、デバイスシリーズの分布、デバイスグループとメンバー
要件
- Python 3.12+
- RESTCONF API が有効な Cisco NSO
- NSO RESTCONF API へのネットワーク接続
設定オプション
コマンドライン引数または環境変数を使用して、サーバーを設定できます。
NSO 接続パラメーター
| コマンドライン引数 | 環境変数 | デフォルト | 説明 |
|---|---|---|---|
--nso-scheme | NSO_SCHEME | http | NSO の接続方式(http/https) |
--nso-address | NSO_ADDRESS | localhost | NSO サーバーのアドレス |
--nso-port | NSO_PORT | 8080 | NSO サーバーのポート |
--nso-timeout | NSO_TIMEOUT | 10 | 接続タイムアウト(秒) |
--nso-username | NSO_USERNAME | admin | NSO のユーザー名 |
--nso-password | NSO_PASSWORD | admin | NSO のパスワード |
--nso-verify | NSO_VERIFY | True | NSO の HTTPS 証明書を検証します(デフォルト:True)。自己署名証明書を使用する場合(開発環境のみ)は、--no-nso-verify を使用してください。 |
--nso-ca-bundle | NSO_CA_BUNDLE | None | NSO の HTTPS で信頼する CA バンドルファイルのパスです。-nso-verify が True の場合に適用されます。 |
MCP サーバーのパラメーター
| コマンドライン引数 | 環境変数 | デフォルト | 説明 |
|---|---|---|---|
--transport | MCP_TRANSPORT | stdio | MCP トランスポートの種類(stdio/http) |
HTTP トランスポートオプション(--transport=http の場合のみ使用)
FastMCP HTTP Server reference: https://gofastmcp.com/deployment/http#http-deployment
| Command-line Argument | Environment Variable | Default | Description |
|---|---|---|---|
--host | MCP_HOST | 0.0.0.0 | Host to bind to when using HTTP transport |
--port | MCP_PORT | 8000 | Port to bind to when using HTTP transport |
Logging Configuration
| Environment Variable | Default | Description |
|---|---|---|
LOG_FILE | None | Path to log file. If not set, logs will be sent to stdout only |
Environment variables take precedence over default values but are overridden by command-line arguments.
Connecting to the Server with MCP Clients
You can connect to the server using any MCP client that supports the selected transport type. A few options are:
Windsurf Cascade
Windsurf Cascade supports MCP servers through a configuration file. To use the Cisco NSO MCP server with Windsurf, add it to your mcp_config.json file.
Using uv (recommended)
When using uv, no specific installation is needed. You can use uvx to directly run the package:
{
"mcpServers": {
"nso": {
"command": "uvx",
"args": [
"cisco-nso-mcp-server",
"--nso-address=127.0.0.1",
"--nso-port=8080",
"--nso-username=admin",
"--nso-password=admin"
],
"env": {
"LOG_FILE": "/path/to/your/logs/nso-mcp.log"
}
}
}
}
pip でインストールする場合
別の方法として、cisco-nso-mcp-server を pip でインストールできます。
pip install cisco-nso-mcp-server
これで、実行ファイルのパスを直接指定して使用できます。
{
"mcpServers": {
"nso": {
"command": "/path/to/your/env/bin/cisco-nso-mcp-server",
"args": [
"--nso-address=127.0.0.1",
"--nso-port=8080",
"--nso-username=admin",
"--nso-password=admin"
],
"env": {
"LOG_FILE": "/path/to/your/logs/nso-mcp.log"
}
}
}
}
/path/to/your/env/bin/cisco-nso-mcp-server は、pip でパッケージをインストールした場所の実際のパスに置き換えてください。メイン環境にインストールした場合は which cisco-nso-mcp-server を実行してパスを確認できます。または、仮想環境の bin ディレクトリ内で確認できます。
どちらの場合も、env セクションは省略可能です。含める場合は、LOG_FILE 環境変数を指定して、ファイルへのログ記録を有効にできます。
stdio トランスポートを使用したカスタム MCP クライアント Python アプリケーションでの使用
MCP サーバーにローカルで接続し、ツールを実行する方法を示すサンプル Python アプリケーションとして、sample_stdio_client.py が用意されています。
サーバーをスタンドアロンで実行する
通常、サーバーはMCP クライアントとともに使用しますが、スタンドアロンプロセスとして直接実行することもできます。
# Run with default NSO connection and MCP settings (see Configuration Options above for details)
cisco-nso-mcp-server
# Run with custom NSO connection parameters
cisco-nso-mcp-server --nso-scheme=http --nso-address=127.0.0.1 --nso-port=8080 --nso-username=admin --nso-password=admin
stdio トランスポートを使用してスタンドアロンプロセスとして実行する場合は、プロセスに入力と出力をパイプするか、stdio トランスポートに対応した MCP クライアントとともに使用する必要があります。
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。MIT License の利用規約に従う限り、コードを使用、変更、配布できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。