Skip to main content
Glama

hpe-networking-mcp — HPE Networking MCP toolkit

License Python MCP CI Docs Release Image

hpe-networking-mcp banner showing 6,144 generated operations, 6,728 backend tools, 3 minimal router tools, and nine platform surfaces with optional local RAG

このバナーは現在のバックエンドカタログを表しています。大きなツールサーフェスはオンデマンドで利用可能に保たれますが、MCP クライアント自体はデフォルトでは3つのルーターツールのみを参照します。

HPE ネットワーキング自動化のための低トークン Model Context Protocol (MCP) サーバー: Aruba Central、HPE GreenLake Platform (GLP)、ClearPass、Juniper Mist、Apstra、ArubaOS 8 移行自動化、EdgeConnect、HPE Aruba UXI、Axis Atmos Cloud。

MCP により、AI クライアント(Claude Code、Copilot、Cursor、VS Code、その他 MCP 対応ホスト)は、ベンダー固有の専用プラグインではなく、共通のツールボックスを呼び出せるようになります。hpe-networking-mcp はそのようなサーバーの1つです。任意の MCP クライアントをこのサーバーに向けると、小規模で低トークンなサーフェスの背後で、HPE ネットワーク操作の検索可能なカタログが公開されます。

hpe-networking-mcp は、MCP 対応の AI クライアントに、Aruba/HPE ドキュメントの検索、正確な OpenAPI 情報の確認、Central の健全性の検査、トラブルシューティングワークフローの実行、構成の管理、ガード付き ArubaOS 8 移行の実行、ガード付き GreenLake Platform 操作の利用を、低トークンで実現します。これは httpx による直接 REST 呼び出しを基盤としています。

同じ内容を視覚的に詳しく説明したもの(利用者セレクター、ダイアグラム、書き込み安全性フロー)は、hpe-networking-mcp GitHub Pages サイト を参照してください。この README は意図的に簡潔にしています。正式ガイドは docs/ にあります。

ルーターが重要な理由

MCP クライアントを 1つ のサーバーに向けてください: src/hpe_networking_mcp/mcp_servers/tool_router.py。推奨される minimal プロファイルは、クライアントから見えるツールリストを3項目に保ちながら、完全なバックエンドカタログに到達します。

  1. find_tool — 適切なバックエンドツールを見つけます。

  2. invoke_read_tool — 読み取り専用の呼び出しをディスパッチします。

  3. invoke_tool — 意図的な書き込み/破壊的呼び出しのみをディスパッチします。

Related MCP server: Network AI Assistant

対象ユーザー

あなたは...

始めるところ

MCP をはじめて使うユーザー

下記の資格不要の5分クイックスタート、続いてはじめに

Aruba のネットワーク運用担当者

プロンプト例製品タイプ別ワークフロー

hpe-networking-mcp 開発者

MCPとRAGの仕組みアーキテクチャ概要コントリビューションガイド

資格不要で5分のクイックスタート

Aruba Central や GreenLake Platform、GreenLake Platform の資格情報を追加する前に、インストールを確認し、MCP HTTP サーバーを起動します。

オプション A — 公開イメージをプルする(チェックアウト不要):

docker run -d --name hpe-networking-mcp \
  -p 127.0.0.1:8010:8010 \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_ALLOWED_HOSTS='127.0.0.1:*,localhost:*' \
  -e MCP_ALLOWED_ORIGINS='http://127.0.0.1:*,http://localhost:*' \
  ghcr.io/secure-ssid/hpe-networking-mcp:latest

起動が終わると(数秒)、curl http://127.0.0.1:8010/livez{"status":"ok"} を返します。ループバックのみの公開により、サーバーは LAN には公開されません。MCP_HOST がループバックでない場合は、host:* 許可リスト形式が必須です。イメージには、ビルド時に組み込まれた OpenAPI 仕様インデックスが同梱されています。セマンティック検索のランキングは、それに加えて ingestion-extras を含むリビルドが必要です(--build-arg INSTALL_EXTRAS=ingestion本番デプロイ を参照)。

オプション B — ソースからビルド(セットアップウィザード、doctor 診断、ローカルインデックスツールが追加されます):

git clone https://github.com/secure-ssid/hpe-networking-mcp.git
cd hpe-networking-mcp
python3 scripts/setup_wizard.py --yes --skip-credentials
uv run hpe-mcp-doctor
MCP_PORT=8010 bash scripts/run_http_router.sh

期待される結果:

  • ウィザードは実行した各フェーズを表示し、最後にセットアップ完了のサマリーを出力します。Central/GLP の呼び出しは行われません。Windows ホストでは、LF 行末のシェル(WSL2 または設定済みチェックアウト)からビルドおよび実行してください。CRLF チェックアウトは Docker ビルド内のエントリスクリプトを壊します。

  • doctor.py は、ローカル依存関係、設定パス、インデックスのチェックを報告し、すべてが OK を返すか、修正すべき項目を列挙します。本ツールはべくース API を一切呼び出しません。

  • — ディク セ内部 — HTTP ルーターは Uvicorn running on http://127.0.0.1:8010 という行を表示し、フォアグラウンドで実行を継続します。

任意の MCP 対応クライアントを http://127.0.0.1:8010/mcp に接続し、資格不要のディスカバリ呼び出しを試してみましょう。

find_tool("list Aruba Central devices")

期待される結果: ランク付きの一致結果は、ゲノムの行精髄を…ウィグロウィン — wait. Let me rewrite cleanly.

期待される結果: ランク付きの一致結果は、ウィザードが構築したローカルツールインデックス(LAG)から直接読み取られ、各結果にはその機能と書き込みゲートの状態が注釈されています。ベンダー API にアクセスすることはありません。

クライアントで接続する

任意の MCP 対応クライアントを http://127.0.0.1:8010/mcp(または stdio の hpe-mcp-config)に向けると、3つのルーターツールだけが表示されます。Claude、Copilot、VS Code、Cursor など向けのコピペ用設定は MCP クライアントレシピ にあります。同梱例は examples/mcp-clients/ に格納されています。

ドキュメント検索は別途ローカルビルドが必要

ask_docs と他のRAG サーフェスには、このプロジェクトが意図的に 同梱しないテキストコーパスが必要です。そのコーパスはスクレイプした vendor ドキュメントであり、を再配布することは私たちの業務上の権限ではありません。あなたは ingestion/source_manifest.json を参照してください。そこには常に「スクレイプしたコンテンツをコミットしない」という記述があります。各ベンダーの利用条件に適合する形で、自分でビルドしてください:

uv run --extra ingestion python ingestion/ingest_docs.py

時間を確保してください。クローリングにかかる時間は数時間です。さらに最初の RAG クエリは、約 250 MB の nomic-embed-text-v1.5 埋め込みモデルを、追加で Hugging Face キャッシュにダウンロードします。資格情報が必要ないことはオフラインを意味しません: 上記のクイックスタートはベンダー資格情報が不要ですが、コーパスのビルドと最初のクエリには両方ともネットワークアクセスが必要です。

書き込み安全性の概要

  • find_tool はローカルツールカタログのみを検索し、ベンダーの API を呼び出しません。

  • invoke_read_tool は、読み取り専用という注釈がないものをすべてブロックします。

  • invoke_tool は、書き込み/破壊的なバックエンドツールもディスパッチできるため、意図的に破壊的とマークされています。書き込みを意図している場合にのみ使用してください。

  • サポートされている場合は最初に dry_run=True を使用してください。実際の実行には、ツールスキーマに応じて confirm=True か MCPエリシテーションのいずれかが必要です。

  • 書き込みは Central を含むすべてのプラットフォームでオプトインです。デフォルトの HPE_MCP_ACCESS_PROFILE=custom では、各プラットフォームの書き込みゲートは設定するまで閉じています。safe-read-only を使えば、プラットフォーム別のゲートとは無関係にすべての書き込みができます。読み取って、full-read-write を使えば、読み込まれたすべてのプラットフォームで通常の書き込みが有効になります。

  • フルレッドフッタライトモードは、dry-run、確認、elicitation、あるいは独立した AOS8;

...

Some of my text got garbled above. Let me step back and write final output carefully, ensuring correct Japanese sentences. I'll reconstruct from scratch now, more carefully. I have to avoid accidental mixed fragments.

Here's the final plan — I'll write clean Japanese.

I need to keep the table, structure. Let's produce the final output again, carefully.# hpe-networking-mcp — HPE Networking MCP toolkit

License Python MCP CI Docs Release Image

hpe-networking-mcp banner showing 6,144 generated operations, 6,728 backend tools, 3 minimal router tools, and nine platform surfaces with optional local RAG

このバナーは現在のバックエンドカタログを表しています。大きなツールサーフェスはオンデマンドで利用できる状態にありますが、MCP クライアント自体はデフォルトのまま 3 つのルーターツールだけを参照します。

HPE ネットワーキング自動化のための低トークン Model Context Protocol (MCP) サーバー: Aruba Central、HPE GreenLake Platform (GLP)、ClearPass、Juniper Mist、Apstra、ArubaOS 8 マイグレーション自動化、EdgeConnect、HPE Aruba UXI、Axis Atmos Cloud。

MCP により、AI クライアント(Claude Code、Copilot、Cursor、VS Code、その他 MCP 対応ホスト)は、ベンダーごとの専用プラグインではなく共通のツールボックスを呼び出せます。hpe-networking-mcp はそのようなサーバーの 1 つです。任意の MCP クライアントをこのサーバーに向けると、小さい低トークンのサーフェス越しに、HPE ネットワーキング操作の検索可能なカタログが公開されます。

hpe-networking-mcp は、MCP 対応 AI クライアントに、Aruba/HPE ドキュメントの検索、正確な OpenAPI 情報の参照、Central の健全性確認、トラブルシューティングワークフローの実行、設定管理、ガード付き ArubaOS 8 マイグレーション、ガード付き GreenLake Platform 操作を低トークンで実現します。これは httpx による直接 REST 呼び出しに基づいています。

同じ内容の完全なビジュアル・ウォークスルー(対象者セレクター、ダイアグラム、書き込み安全性フロー)は、hpe-networking-mcp GitHub Pages site を参照してください。この README は意図的に短くしています。公式のガイドは docs/ にあります。

ルーターが重要な理由

MCP クライアントを「1 つ」のサーバーにポイントしてしましょう: src/hpe_networking_mcp/mcp_servers/tool_router.py。推奨される minimal プロファイルは、クライアントから見えるツールリストを 3 項目に保ちながら、完全なバックエンドカタログへ到達します。

  1. find_tool — 適切なバックエンドツールを発見します。

  2. invoke_read_tool — 読み取り専用の呼び出しを配布します。

  3. invoke_tool — 意図した書き込み/破壊的呼び出しのみを配布します。

対象ユーザー

資格情報不要の5分間クイックスタート

Aruba Central や HPE グリーンレイク・プラットフォーム (GreenLake Platform) の資格情報を追加する前に、インストールの確認と MCP HTTP サーバーの起動を行います。

オプション A — 公開済みイメージを取得(チェックアウト不要):

docker run -d --name hpe-networking-mcp \
  -p 127.0.0.1:8010:8010 \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_ALLOWED_HOSTS='127.0.0.1:*,localhost:*' \
  -e MCP_ALLOWED_ORIGINS='http://127.0.0.1:*,http://localhost:*' \
  ghcr.io/secure-ssid/hpe-networking-mcp:latest

起動が完了すると(数秒)、curl http://127.0.0.1:8010/livez{"status":"ok"} を返します。ループバックのみの公開により、サーバーは LAN に露出しません。host:* を許可する形式は、MCP_HOST がループバックでない場合に常に必要です。イメージには、ビルド時に組み込まれた OpenAPI 仕様インデックスが同梱されています。セマンティック検索のランキングには、さらに ingestion オプション付きのリビルド(--build-arg INSTALL_EXTRAS=ingestion)が必要です。本番デプロイ を参照してください。

オプション B — ソースからのビルド(セットアップウィザード、doctor 診断、ローカルインデックスツールが追加されます):

git clone https://github.com/secure-ssid/hpe-networking-mcp.git
cd hpe-networking-mcp
python3 scripts/setup_wizard.py --yes --skip-credentials
uv run hpe-mcp-doctor
MCP_PORT=8010 bash scripts/run_http_router.sh

期待される結果:

  • ウィザードは、完了した各フェーズを表示し、最後にセットアップ完了の概要を示します。Central/GLP への呼び出しは行われません。Windows ホストでは、LF 行末のシェル(WSL2 または設定済みチェックアウトディレクトリ)からビルドと実行を行ってください。CRLF のチェックアウトは、Docker ビルド内のエントリスクリプトを壊します。

  • doctor.py は、ローカル依存関係、設定パス、インデックスの確認を報告し、すべてが OK と表示されるが、修正が必要な項目をリストアップします。ベンダー API を一切呼び出しません。

  • HTTP ルーターは Uvicorn running on http://127.0.0.1:8010 の行を表示し、フォアグラウンドで動作し続けます。

任意の MCP 対応クライアントを http://127.0.0.1:8010/mcp に接続し、資格情報不要のディスカバリ呼び出しを試します。

find_tool("list Aruba Central devices")

期待される結果: ランク付けされた一致結果が、ウィザードが構築したローカルツールインデックスからリストされます。インデックスの各項目には機能と書き込みゲートの状態が注釈されます。ベンダーの API には一切アクセスしません。

クライアントで接続する

任意の MCP 対応クライアントを http://127.0.0.1:8010/mcp(または、stdio の hpe-mcp-router 設定)に向けると、3 つのルーターツールのみを参照できます。Claude、Copilot、VS Code、Cursor など向けのコピペ設定は MCP クライアントレシピ にあります。同梱の例は examples/mcp-clients/ にあります。

ドキュメント検索は別途ローカルビルドが必要

ask_docs を含む RAG サーフェスが機能するには、テキストコーパスが必要ですが、このプロジェクトは意図的にそれを同梱していません。そのコーパスはベンダーのドキュメントをスクレイピングしたものであり、再公開する権限は私たちにはありません。onEditor には、「スクレイピングしたコンテンツをコミットしない」という以前からの指定が表示されます (ingestion/source_manifest.json)。それぞれのベンダーの利用条件を受け入れることを前提に、自身でビルドしてください。

uv run --extra ingestion python ingestion/ingest_docs.py

時間的コストを考慮してください。クロールには数時間かかります。最初の RAG クエリではさらに、約 250 MB の nomic-embed-text-v1.5 埋め込みモデルが Hugging Face キャッシュにダウンロードされます。資格情報不要 はオフラインと同じではありません: 上記のクイックスタートにはベンダーの資格情報が不要ですが、コーパスの構築と最初のクエリの両方にネットワークアクセスが必要です。

書き込み安全性の概要

  • find_tool はローカルツールカタログのみを検索し、ベンダー API を呼び出しません。

  • invoke_read_tool は、読み取り専用と注釈付けられていないものを呼び出します。

  • invoke_tool は、書き込み/破壊的なバックエンドツールも呼び出すことができるため、意図的に破壊的とマークされています。書き込みが意図した場合のみ使用してください。

  • サポートされている場合は、最初に dry_run=True を使用します。実際の実行には、ツールスキーマに応じて confirm=True または MCP エレシテーションが必要に応じ.

  • 書き込みは、Central を含むすべてのプラットフォームでオプトインです。デフォルトの HPE_MCP_ACCESS_PROFILE=custom では、各プラットフォームの書き込みゲートは、設定するまで閉じています。 ライオンの 各 プラットフォームゲートに無変化する場合に、safe-read-only で全ての書き込みをブロック、または full-read-write で読み込んだすべてのプラットフォームの通常書き込みを有効化します。

  • フルレジャーンドライト・ライトモードは、ドライラン、確認、エリシテーション、または専用の保護(例: AOS8 ロールバックゲート)を探し se-はいはい、バイパスしません。

  • 資格情報は config/credentials.yaml または環境変数にのみ保持され、コミットされることはありません。

Variable

Default

Effect

HPE_MCP_ACCESS_PROFILE

custom

safe-read-only はすべての書き込みを許可しません。full-read-write はすべてを許可します。custom は以下のプラットフォーム別ゲートを使用します。

HPE_MCP_<PLATFORM>_WRITES

0

1 にすると、そのプラットフォームの書き込み・破壊ツールが公開されます。

破壊的な操作(reboot_devicedisconnect_client)も、書き込みと同じフラグで制御されます。これをバイパスする「運用」専用の階層はありません。

完全なディスカバリ/ディスパッチ/書き込み安全モデルは、Tool router を参照してください。

プロジェクト概要

領域

現在のスナップショット

ツールカタログ

非加算プロファイル: コアツール 380 / 読み取り専用オプションスターター 2,842 / 読み書き (read-write) オプションスターター 5,822; REST/OpenAPI プラットフォーム API バックエンド計 6,711; プロトコル専用 Central Streaming: 1; クロスプラットフォーム site-health: 1; complete backend index: 6,728; direct-all: 6,736

機能別計 (platform API)

read 3,159 / diagnostic 165 / write 2,545 / destructive 842

RAG

30 のスクレイプソースにまたがる LanceDB のテキストチャンク 392,471

構造化検索

エンドポイント 2,734 / スキーマ 6,363 / フィールド 31,432 / アドバイザリ 104 / ライフサイクル管理レコード 345コミット ('doc)

API 由来

Aruba ReadMe レジストリ、公式の Greyy/Glist ソース、GLP と EdgeConnect のスナップショット固定、SHA 固定の Axis ジェネレーター

オプションのプラットフォーム

ClearPass, Mist, Apstra, AOS8, EdgeConnect, UX I, Axis Atmos Cloud、加えて資格情報不要の design ダイアグラムツール

安全性

プラットフォーム別の書き込みゲート、dry-run と確認、HTTP ホスト/オリジン & ベアラーユーザー etc. 防止、顧客情報由来を無効化、設定可能


Wait — I noticed some garbled bits in my last draft: "* invoke_read_tool は、読み取り専用と注釈付けされていないものをブロックします" — need to correct; "ブロックします" missing. Let me redo final carefully, I'll produce the translation in one go, checking each section's original. I'll avoid accidentally incorrect strings. Let me rebuild final from a cleaner mental model, writing in a fresh block, not fragments.


final revision

From top to bottom, I'll produce the translated output text. I'll be methodical.

We start with heading, badges, banner, intro paragraphs.

I'll now write out final copy, ensuring clean Japanese.

Let me create clean sentences for the problematic bullet points:

  • "invoke_read_tool blocks any backend tool that is not annotated read-only." → "invoke_read_tool は、読み取り専用と注釈されていないバックエンドツールをブロックします。"

  • "Full read/write mode does not bypass dry-run, confirmation, elicitation, or dedicated safeguards such as the separate AOS8 rollback gate." → "フル Read/Write モードは、dry-run、確認、エリシテーション、または別途設けられた AOS8 ロールバックゲートのような専用の保護機能を迂回しません。"

  • "Credentials stay in config/credentials.yaml or environment variables and are never committed." → "資格情報は config/credentials.yaml または環境変数にのみ保存され、決してコミットされません。"

  • "Destructive operations (reboot_device, disconnect_client) are gated by the same flag as writes — there is no separate "operational" tier that bypasses it." → "破壊的な操作(reboot_devicedisconnect_client)は、書き込みと同じ フラグで保護されます。これを回避する独立した「運用」階層は存在しません。"

  • "See Tool router for the complete discovery/dispatch/write-safety model." → "ディスカバリ/ディスパッチ/書き込み安全性の完全なモデルは ツールルーター を参照してください。"

  • For the "Documentation search is a separate, local build" paragraph: "These guides are under docs/..."

I'll clean.

Potential issue: The table of contents anchor: I'll use "資格情報不要の5分間クイックスタート" for the link text and preserve the anchor fragment.

Now, for the intro paragraphs:

"hpe-networking-mcp gives MCP-capable AI clients a low-token way to search Aruba/HPE docs, look up exact OpenAPI details, inspect Central health, run troubleshooting workflows, manage configuration, execute guarded ArubaOS 8 migrations, and use guarded GreenLake Platform operations. It is built around direct REST calls with httpx."

Translation: "hpe-networking-mcp は、MCP 対応 AI クライアントに対し、Aruba/HPE のドキュメント検索、正確な OpenAPI 情報の参照、Central のヘルス状態の確認、トラブルシューティングワークフローの実行、構成管理、ガード付き ArubaOS 8 マイグレーション、ガード付き GreenLake Platform オペレーションを、低トークンで行える手段を提供します。内部は httpx を使用した直接 REST 呼び出しで構築されています。"

"For the full visual walkthrough of this same information — audience picker, diagrams, and write-safety flow — see the hpe-networking-mcp GitHub Pages site." → "この情報全体の視覚的なウォークスルー(対象者セレクター・図・書き込み安全フロー)は / See the hpe-networking-mcp GitHub Pages サイト."

OK.

Now heading "five-minute..." and options.

Let's finalize now. I'll produce the final answer.# hpe-networking-mcp — HPE Networking MCP toolkit

License Python MCP CI Docs Release Image

hpe-networking-mcp banner showing 6,144 generated operations, 6,728 backend tools, 3 minimal router tools, and nine platform surfaces with optional local RAG

このバナーは現在のバックエンドカタログを表しています。大規模なツールサーフェスはオンデマンドで利用可能に保たれますが、MCP クライアント自体はデフォルトでは3つのルーターツールしか参照しません。

HPE ネットワーキング自動化のための低トークン Model Context Protocol (MCP) サーバー: Aruba Central、HPE GreenLake Platform (GLP)、ClearPass、Juniper Mist、Apstra、ArubaOS 8 マイグレーション自動化、EdgeConnect、HPE Aruba UXI、Axis Atmos Cloud。

MCP により、AI クライアント(Claude Code、Copilot、Cursor、VS Code、その他任意の MCP 対応ホスト)は、ベンダーごとの専用プラグインではなく、共通のツールボックスを呼び出すことができます。hpe-networking-mcp はそのようなサーバーのひとつです。任意の MCP クライアントを対象にすると、小規模かつ低トークンなサーフェス越しに、HPE ネットワーキング操作の検索可能なカタログが公開されます。

hpe-networking-mcp は、MCP 対応 AI クライアントに、Aruba/HPE ドキュメントの検索、正確な OpenAPI 詳細の参照、Central の健全性確認、トラブルシューティングワークフローの実行、設定管理、保護付き ArubaOS 8 マイグレーション、保護付き GreenLake Platform オペレーションを低トークンで行う手段を提供します。これは httpx による直接の REST 呼び出しを基盤としています。

同じ内容の完全なビジュアルウォークスルー(オーディエンスセレクター、ダイアグラム、書き込み安全性フロー)は、hpe-networking-mcp GitHub Pages サイト を参照してください。この README は意図的に簡潔にしています。正規のガイドは docs/ 配下にあります。

ルーターが重要な理由

MCP クライアントを 1つ のサーバー(src/hpe_networking_mcp/mcp_servers/tool_router.py)に向けてください。推奨される minimal プロファイルは、クライアントから見えるツールリストを 3 項目に保ちながら、完全なバックエンドカタログに到達できます。

  1. find_tool — 適切なバックエンドツールを発見します。

  2. invoke_read_tool — 読み取り専用のコールをディスパッチします。

  3. invoke_tool — 意図的な書き込み/破壊的コールのみをディスパッチします。

対象ユーザー

あなたは...

まずこれを参照

MCP初心者

下の 資格情報不要の5分クイックスタート、次に はじめに

Aruba ネットワーク運用担当者

プロンプト例製品タイプ別ワークフロー

hpe-networking-mcp 開発者

MCP と RAG のしくみアーキテクチャ概要コントリビューションガイド

資格情報不要の5分クイックスタック

インストールを確認し、Aruba Central や GreenLake Platform の資格情報を追加する前に、MCP HTTP サーバーを起動します。

オプション A — 公開イメージを取得する(チェックアウト不要):

docker run -d --name hpe-networking-mcp \
  -p 127.0.0.1:8010:8010 \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_ALLOWED_HOSTS='127.0.0.1:*,localhost:*' \
  -e MCP_ALLOWED_ORIGINS='http://127.0.0.1:*,http://localhost:*' \
  ghcr.io/secure-ssid/hpe-networking-mcp:latest

起動が完了すると(数秒)、curl http://127.0.0.1:8010/livez{"status":"ok"} を返します。ループバック専用の公開により、サーバーは LAN に公開されません。MCP_HOST がループバックでない場合は、host:0.*~ の許可リスト形式が常に必要です。このイメージには、ビルド時に組み込まれた OpenAPI 仕様インデックスが含まれます。セマンティック検索のランキングには、さらに ingestion 追加を含むリビルドが巻い必要です(--build-arg INSTALL_EXTRAS=ingestion本番デプロイ を参照)。

オプション B — ソースからビルド(セットアップウィザード、doctor 診断、ローカルインデックスツールが追加されます):

git clone https://github.com/secure-ssid/hpe-networking-mcp.git
cd hpe-networking-mcp
python3 scripts/setup_wizard.py --yes --skip-credentials
uv run hpe-mcp-doctor
MCP_PORT=8010 bash scripts/run_http_router.sh

期待される結果:

  • ウィザードは完了した各フェーズを出力し、最後にセットアップ完了のサマリを表示します。Central/GLP への呼び出しはありません。Windows ホストでは、LF 行末シェル(WSL2 または設定済みチェックアット)からビルドおよび実行してください。CRLF チェックアウトは、Docker ビルド内の他のスクリプトを壊します。

  • doctor.py はローカル依存関係、設定パス、インデックスの確認を報告します。すべて OK か、修正が必要な項目のリストが表示され、ベンダー API は呼び出されません。

  • HTTP ルーターは Uvicorn running on http://127.0.0.1:8010 の行ウインドウを表示し、フォアグラウンドで動作し続けます。

任意の MCP 対応クライアントを http://127.0.0.1:8010/mcp に接続し、資格情報不要のディスカバリ呼び出しを試してみます:

find_tool("list Aruba Central devices")

期待される結果: ランク付けされた一致結果が、ウィザードが作成したローカルツールインデックスから直接読み取られ、それぞれの機能と書き込みゲート状態が注釈として保持。 ベンダー API には一切アクセスしません。

クライアントで接続する

任意の MCP に対応したクライアントを http://127.0.0.1:8010/mcp(または stdio の hpe-mcp-config)に設定すると、3つのルーター用ツールだけが表示されます。Claude、Copilot、VS Code、Cursor など向けコピペ設定は MCP クライアントレシピ にあります。同梱の例は、examples/mcp-clients/ にあります。

ドキュメント検索は別途ローカルビルドが必要

ask_docs と RAG サーフェスは、プロジェクトが意図的に同梱しない文章コーパスを必要とします。そのコーパスはスクレイプしたベンダードキュメントであり、再配布することは私たちの範疇ではありません。私たちの許可にこのプロトコルでは、常に「スクレイピングしたコンテンツをコミットしない」という意味で ingestion/source_manifest.json を確認してください。各ベンダーの規約を自分の判断で同意したうえで、自分でビルドする必要があります:

uv run --extra ingestion python ingestion/ingest_docs.py

そのための予算を考えてください。クロールには数時間かかります。そして最初の RAG クエリでは、追加で平気で nomic-license-model... として約250MB の nomic-embed-text-v1.5 埋め込みモデルを Hugging Face キャッシュへダウンロードします。資格情報フリー はオフライン同じ様に意味ではありません: 上記のクイックスタートにはベンダ資格情報が要りませんが、がコーパスのビルドと初回クエリにはネットワークアクセスが必要なのです。

書き込み安全性の概要

  • find_tool はローカルツールカタログのみを検索し、ベンダーAPIを呼び出しません。

  • invoke_read_tool は、読み取り専用タグがされていないものをブロックします。

  • invoke_tool は、書き込み/破壊的なバックエンドツールもディスパッチできるため、意図的に破壊的とマークされています。書き込むことを意図した場合のみ使用してください。

  • サポートされている場合は dry_run=True を先に使用します。実際の実行には、ツールスキームによって confirm=True または MCP elicitation が必要です。

  • 書き込みは、Central を含むすべてのプラットフォームでオプトインです。デフォルトの HPE_MCP_ACCESS_PROFILE=custom では、セットしてない限り各プラットフォームの書き込みゲートが驚き状態です。safe-read-only を使うと、プラットフォーム固有のゲートに関わらずすべての書き込みをブロックし、full-read-write をすべてのプラットフォームで通常書き込みを有効化します。

  • フル読み書きモードは、dry-run、確認、elicitation、そうでなければ AOS8 の専用ロールバックゲートを無効化しません。

  • 資格情報は config/credentials.yaml または環境調査量にのみ保存され、コミットされることはありません。

変数

デフォルト

効果

HPE_MCP_ACCESS_PROFILE

custom

safe-read-only はすべての書き込みを拒否します。full-read-write はすべてを許可します。custom は以下のプラットフォーム別 (パス) ゲートを使います。

HPE_MCP_<PLATFORM>_WRITES

0

1 に設定すると、そのプラットフォームの書き込みおよび破壊的ツールが公開されます。

破壊的操作(reboot_devicedisconnect_client)は、書き込みと同じフラグでゲートされます。これをバイパスする独立した「オペレーション」層はありません。

完全な発見・ディスパッチ・書き込み安全性のモデルは、Tool router を参照してください。

プロジェクトのスnapshot

領域

現在のス色

ツールカタログ

非加型プロファイルは コア 380 / read-on opt optional mirrors 2,842 / read-write optional route 5,822 のはず。 endpoints. The python backend 6,711; Write operation only Central Streaming 1:...; cross-platform site health 1:; complete backend index 6,728: direct-all 6,736

バックエンドごとの完全なツール数は Tool catalog にまとめられています。最新のタグ付きリリースで追加されたすべての内容は 0.9.0 release notes を、再現可能なツール/ベンチマーク比較は capability gap matrix を参照してください。

タスク別ガイド

目的

ガイド

完全なセットアップ、認証情報、MCPクライアント接続

Getting started

stdio またはストリーミング可能な HTTP クライアント設定のコピー/貼り付け

MCP client recipes

ルーターモード、ツールセット、安全なディスパッチの詳細

Tool router

期待される呼び出し形式を含む実際のプロンプト

Example prompts

ClearPass、Mist、Apstra、AOS8、EdgeConnect、UXI、Axis の有効化

Optional product starters

型指定された製品別ワークフローのロードマップ

Product workflows

セットアップ、認証、HTTP、カタログの問題を修正

Troubleshooting

アーキテクチャ、データフロー、安全性の図

System overview

全バックエンドのツール数とカバレッジ

Tool catalog

タスクベースの完全なビジュアルゲートウェイ

hpe-networking-mcp GitHub Pages

目的別にグループ化されたすべてのドキュメントページ

docs/README.md

secure-ssid/centralmcp からの移行

MIGRATION.md

コントリビュート、サポート受付、セキュリティ問題の報告

CONTRIBUTING.mdSUPPORT.mdSECURITY.md

バージョン履歴

CHANGELOG.md

ローカルセットアップの基本

デフォルトの MCP クライアントプロファイルは最小構成のままです:

HPE_MCP_ROUTER_MODE=minimal
HPE_MCP_TOOLSETS=central,glp,rag

必要な場合にのみオプションプロダクトを有効にします:

HPE_MCP_ACCESS_PROFILE=custom
HPE_MCP_PRODUCTS=clearpass,mist,apstra,aos8,edgeconnect,uxi,axis,design
HPE_MCP_PRODUCT_ACCESS=read-only

プロダクト

変数

ClearPass

CLEARPASS_BASE_URLCLEARPASS_API_TOKEN

Juniper Mist

MIST_HOSTMIST_API_TOKEN

Apstra

APSTRA_BASE_URL、推奨 APSTRA_USERNAME/APSTRA_PASSWORD、任意 APSTRA_API_TOKEN

ArubaOS 8

AOS8_BASE_URL、推奨 AOS8_USERNAME/AOS8_PASSWORD、任意 AOS8_API_TOKEN、任意 AOS8_CLIENT_IP、任意 AOS8_SESSION_TTL_SECONDS

EdgeConnect

EDGECONNECT_BASE_URLEDGECONNECT_API_TOKEN、任意 EDGECONNECT_AUTH_HEADER、エンドポイント固有の EDGECONNECT_AI_SESSION_AUTHORIZATION

HPE Aruba UXI

UXI_CLIENT_IDUXI_CLIENT_SECRET、任意 UXI_BASE_URL、任意 UXI_TOKEN_URL

Axis Atmos Cloud

AXIS_BASE_URLAXIS_API_TOKEN

ネットワーク設計図 (Draw.io / Graphviz / NeXt)

不要; 任意 HPE_MCP_DIAGRAM_ICON_DIR

完全なセットアップと安全性モデルについては、optional product matrix を参照してください。

信頼できる完全書き込み可能はについては、すべてのレガシーゲートを整合させるために python3 scripts/setup_wizard.py --access-profile full-read-write を使用するか、自己完結型の examples/mcp-clients/stdio/full-read-write.mcp.json を使用してください。

.claude/launch.json には、日常使用に十分な最小構成の hpe-networking-mcp 起動プロファイルが同梱されています。find_tool はデフォルトで完全な JSON スキーマを省略します。クライアントが完全なパラメータ形状を必要とする場合にのみ include_schema=true を要求してください。

ルーターツールのインデックスと API 仕様データベースを構築または更新してください。どちらもこのリポジトリにコミットされた OpenAPI 仕様から導出されるため、決定論的に再構築でき、スクレイピングは不要です:

uv run python scripts/ingest_tools.py --products all

RAG テキストコーパスは、上記のクイックスタートで説明したように、ingestion/ingest_docs.py によって個別に構築されます。これはリリースアセットとして配布されていません。

認証情報、リージョン選択、オプションプロダクトの環境変数、取り込み/更新の完全な手順については、Getting started を参照してください。

Streamable HTTP モード

MCP_PORT=8010 bash scripts/run_http_router.sh

その観点 MCP 対応のクライアントを http://127.0.0.1:8010/mcp に接続します。サーバは /livez/readyz/healthz も公開しています。非ループバックへのバインドには明示的な MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINS が必要で、MCP_HTTP_BEARER_TOKEN で保護できます。コピー/ペースト用の stdio と HTTP 設定は MCP client recipes を参照してください。

プロジェクトレイアウト

src/hpe_networking_mcp/mcp_servers/     Low-token router + Central/GLP/RAG/optional-product servers
src/hpe_networking_mcp/pipeline/        httpx clients, 8-stage migration pipeline, SSID helpers
ingestion/       Docs/API scraping and LanceDB + SQLite index builders
docs/            Setup, router, architecture, product, and release guides
scripts/         Setup wizard, doctor wrapper, HTTP router helper, release validation
tests/           Unit, integration, and RAG eval coverage
config/          Credentials template; real credentials stay git-ignored
examples/        Tested, non-secret MCP client/prompt/runbook configuration examples
run_pipeline.py  Checkout wrapper for `hpe-mcp-run-pipeline`
run_ssid.py      Checkout wrapper for `hpe-mcp-run-ssid`

生成済み/ git 無視されているパスを含む完全なリポジトリマップは、System overview に記載されています。

検証

uv run pytest tests/unit -q
uv run python scripts/validate_release.py --catalog-products all --strict-tool-index --min-tools 6711

--min-tools 6711 はプラプトフォーム API 互換性の下限(サードパーティ向けプラットフォーム API ツールの 6,711 件)であり、登録済みバックエンドの総数 6,728 ではありません。6,728 件には、プロトコルのみの Central Streaming ツール、クロスプラットフォームの site-health アグリゲーター、ローカルの GLP プリフライト診断、認証情報不要のローカルツールも含まれます。検証はこの下限以上で合格します。両方の総数については、Tool catalog を参照してください。

リリースヘルパーは、ユニットテスト、インデックスが存在する場合の任意の RAG/API 評価、ツールカタログの下限チェック、ローカルツールインデックスの更新チェックを実行します。ユニットテストには、アクティブな MCP/パイプラインコード、コミット済みの低トークン MCP 設定例、ローカルのみの設定ファイル、ループラー製品/ツールセットのドキュメント、制限付きの汎用読み取り専用 GET ツール、MCP 一覧のデフォルト上限、RAG/検索の top_k 上限、公開されたツール数に関する記述、ツール数 docstring、レンダリングされた RAG/インデックスのドキュメントファクトの主張、追跡対象の Markdown ローカルリンクと画像、Pages のサイトマップと robots メタデータ、文書化されたルーターの引数例、製品ワークフローのツール名テーブル、ウィザードのオプションプロダクト環境変数テーブルに対する静的ガードも含まれています。

関連プロジェクトと連絡先

hpe-networking-mcp は独立した HPE Networking MCP ツールキットであり、公式の MCP エコシステムとコミュニティの取り組みを参考にしています:

免責事項

hpe-networking-mcp は独立したコミュニティプロジェクトです。これは正式なヒュー・パード・エンタープライズ (HPE) またはヒュー・パード・エンタープライズ・アルパ・ネット間の製品ではなく、ヒュー・パード・エンタープライズによる推奨やサポートも受けていません。

ライセンス

MIT ライセンス - リポジトリのライセンス を参照してください。生成された API メタデータと上流の実装参照は THIRD_PARTY_NOTICES.md に文書化されています。

Available Tools

3 tools
find_toolA
Read-onlyIdempotent

Find tools by query. Combines semantic search + tool-name keyword match.

Call this first when you need an action. The returned name is what you pass to invoke_read_tool for read-only tools or invoke_tool for writes. Results are deduplicated; exact METHOD /path or operationId matches are annotated match='exact' (including generated-only tools disabled by the current profile), semantic matches match='semantic', name-overlap matches match='keyword', and safety flags mirror backend ToolAnnotations. Results are compact by default; set include_schema=True only when you need the full JSON schema for a selected tool. Optional platform, server, normalized capability, curated/generated origin, and exact OpenAPI operation-ID filters apply to exact, keyword, and semantic matches.

Args: query: What you want to do. e.g. "create a VLAN", "disconnect a client". top_k: 1-10 results (default 5). include_schema: Include full JSON schemas in results. Defaults to False to keep MCP responses compact. platform: Filter by normalized platform, such as central, glp, mist, clearpass, or apstra. server: Filter by exact backend server name, such as central-monitoring. capability: Filter by read, diagnostic, write, or destructive. origin: Filter by curated or generated implementation. operation_id: Filter by an exact generated OpenAPI operationId.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
originNo
serverNo
platformNo
capabilityNo
operation_idNo
include_schemaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even beyond the readOnly, openWorld, idempotent, and destructive annotations, the description discloses deduplication behavior, the exact/semantic/keyword match categories, inclusion of generated-only disabled tools, safety-flag provenance, and compact-by-default responses. This is substantial behavioral transparency and does not conflict with any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the most important instructions ('Call this first'), followed by the dispatch contract, match behavior, filters, and parameter documentation. Despite its length, the content is dense with useful detail and parallel in structure, making it well organized for an 8-parameter discovery tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, multiple filter dimensions, sibling routing, and a rich output schema, the description is complete: it covers when to call it, what the results contain, how matches are labeled, how to control schema verbosity, and how to dispatch the selected tool. Nothing critical is left to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the Args section fully compensates. It defines all 8 parameters, giving query example usage, top_k range and default, include_schema trade-offs, platform/server examples, capability values, origin values, and operation_id meaning. The description therefore adds crucial semantics that the schema alone entirely lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific action ('Find tools by query') and explains the search mechanism ('semantic search + tool-name keyword match'). It distinguishes itself from the sibling invoke tools by stating that the returned `name` is the value to pass to invoke_read_tool or invoke_tool, so the purpose is unmistakably a discovery tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description is prescriptive: 'Call this first when you need an action.' It also tells the agent when to use include_schema ('only when you need the full JSON schema'), when to keep responses compact, and how to route a discovered tool to the correct sibling. It also explains the conditions under which filters should be applied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoke_read_toolA
Read-onlyIdempotent

Call a read-only Aruba tool by name (from find_tool).

This refuses tools that are not annotated read-only. Use invoke_tool only for write/destructive tools after explicit user intent.

Args: cursor: Opaque next_cursor value from a previous truncated response, to resume it from where it left off. Only ever returned by this tool for capability "read" tools -- it is process-local (invalidated by a server restart), integrity protected, time-limited, and bound to this exact tool name and these exact arguments. A malformed/tampered/expired/mismatched cursor returns an error and never reaches the backend.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
cursorNo
argumentsNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral detail beyond the annotations: it refuses non-read-only tools, and thoroughly explains cursor semantics including process-locality, integrity protection, time-limits, binding to tool name/arguments, and error behavior for invalid cursors. This goes well beyond the readOnlyHint/idempotentHint annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose and usage guidance, followed by a structured 'Args' section that details cursor behavior. The cursor explanation is long but necessary and well-organized. Overall, it is appropriately concise without being under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a dispatcher tool with no output schema, the description covers the primary use case, restrictions, and error behavior for cursors. It could mention how arguments should be structured or what the return format looks like, but these are somewhat incidental given the tool's nature. It is sufficiently complete for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The cursor parameter is explained in great detail, which is crucial for its opaque nature. However, the 'arguments' parameter is not described at all beyond the schema, and 'name' is only implied as coming from find_tool. With 0% schema description coverage, the description partially compensates but leaves gaps for the arguments parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it calls a read-only Aruba tool by name, which is a specific verb-resource pairing. It distinguishes itself from the sibling invoke_tool by explicitly limiting to read-only tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use this tool for read-only tools and to use invoke_tool for write/destructive tools after explicit user intent. This provides clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

invoke_toolA
Destructive

Call an Aruba tool by name (from find_tool). Arguments is a kwargs dict.

Example: invoke_tool("create_vlan", {"vlan_id": 200, "vlan_name": "Guest"})

Dispatches through the owning backend's MCPServer tool manager, so arguments get MCPServer validation/coercion and the router's request Context is forwarded — this is what lets the async, ctx-requiring destructive ops tools (reboot_device/port_bounce/poe_bounce/disconnect_client) reach their confirmation elicitation. (MCPServer injects ctx here and strips it from the published schema, so callers only pass name + arguments.)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
argumentsNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations, the description reveals that arguments go through MCPServer validation/coercion, the router's request Context is forwarded, and destructive tools reach confirmation elicitation. This is rich behavioral detail that significantly helps an agent anticipate side effects and prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, followed by an example and then technical details. It is slightly dense but every sentence contributes value; the example and the explanation of ctx injection are both necessary for correct use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's generic nature and absence of an output schema, the description covers purpose, usage, and behavior thoroughly. It does not mention return values or error handling, but for a dynamic dispatcher these may be tool-specific and not appropriate to detail. Overall, it is sufficiently complete for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates by explaining 'Arguments is a kwargs dict' and providing a working example. It clarifies that name comes from find_tool and that only name + arguments are passed. This adds meaningful semantics beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear, specific action: 'Call an Aruba tool by name (from find_tool).' It provides a concrete example (invoke_tool("create_vlan", {...})) and distinguishes itself from siblings by mentioning its role in dispatching destructive ops tools, which is not true of invoke_read_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: use this after find_tool to call any tool, and it explains how the dispatch works. However, it does not explicitly mention when to prefer invoke_read_tool or provide exclusion criteria, so it stops short of full guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool has a clearly distinct role: find_tool for discovery, invoke_read_tool for read-only execution, and invoke_tool for write/destructive execution. No overlapping purposes or ambiguous boundaries.

Naming Consistency4/5

Names follow a consistent snake_case verb_noun pattern. However, 'invoke_tool' is slightly ambiguous as it implies general invocation but actually handles only write/destructive tools, while 'invoke_read_tool' explicitly names its read-only scope.

Tool Count4/5

With only three tools, the set is minimal but appropriate for a meta-server that discovers and dispatches a larger underlying tool surface. It is not overly thin given the wrapper purpose.

Completeness5/5

The three tools form a complete workflow: find a tool, invoke read-only, or invoke write/destructive. No essential meta-operation is missing for the stated purpose of acting as a gateway.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/secure-ssid/hpe-networking-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server