Aruba Central MCP について
Aruba Central MCP は、Aruba Central GreenLake New Central API に接続する読み取り専用 MCP サーバーです。AI アシスタント向けにアクセスポイント、クライアント、ファームウェアを照会し、フィルタリング、ページネーション、トークン更新に対応します。
主な機能
- 01アクセスポイント、無線、WLAN の照会
- 02無線クライアントとローミング履歴の確認
- 03スイッチとサイト概要の一覧
- 04スループットと使用量推移の確認
- 05ファームウェア状態と提供バージョンの確認
- 06OAuth2 認証と自動ページネーション
活用シーン
- 01オフライン AP や無線状態の調査
- 02接続中クライアントと使用量の確認
- 03サイトごとの AP 数とクライアント数の集計
- 04デバイスのファームウェア版と更新状態の確認
MCP 対応
STDIO 経由で MCP クライアントに Aruba Central の読み取り専用照会ツールを提供し、アクセスポイント、スイッチ、無線クライアント、ファームウェア状態を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
17掲載時のツール一覧 · 1 日前に更新
このツールにパラメーターはありません。
詳細
aruba-central-mcp
English | 日本語
Aruba Central(GreenLake New Central API)用の MCP サーバーです。
STDIO トランスポートを介して、MCP 対応の AI アシスタント(Claude Code、Claude Desktop、OpenAI Codex など)に、アクセスポイント、スイッチ、ワイヤレスクライアントのステータスを公開します。
ドキュメント:https://shigechika.github.io/aruba-central-mcp/
機能
アクセスポイント
| ツール | 説明 |
|---|---|
list_aps | すべてのアクセスポイントを一覧表示します(サイト/ステータスによる任意のフィルターに対応) |
list_radios | AP の無線情報を一覧表示します(チャンネル、使用率、ノイズフロア、送信電力) |
list_bssids | すべての BSSID を一覧表示します |
list_wlans | WLAN を一覧表示します(SSID、セキュリティ、VLAN) |
list_swarms | AP のスウォーム/クラスターを一覧表示します |
get_ap_status | 特定の AP の詳細なステータスを取得します |
get_ap_throughput | AP のスループットの推移を取得します(時間経過に伴う送信/受信) |
get_top_aps | 帯域幅使用量の多い AP を表示します(ワイヤレス/有線/合計) |
クライアント
| ツール | 説明 |
|---|---|
list_clients | 接続中のワイヤレスクライアントを一覧表示します(SSID/帯域による任意のフィルターに対応) |
find_client_by_mac | MAC アドレスでクライアントを検索します(API を直接検索) |
get_clients_trend | 時間経過に伴うクライアント数の推移を取得します |
get_top_clients_by_usage | 帯域幅使用量の多いクライアントを表示します |
get_client_mobility_trail | クライアントのローミング履歴を取得します |
インフラストラクチャ
| ツール | 説明 |
|---|---|
list_switches | すべてのスイッチを一覧表示します |
get_site_summary | サイト単位の集計サマリーを取得します(AP 数、クライアント数) |
health_check | サーバーのバージョンを報告し、Aruba Central の認証を確認します(データの取得なし) |
daily_brief | 朝の AP ヘルスチェックを一度に実行します。オフライン AP の割合がしきい値を超えるサイトを表示します |
ファームウェア
| ツール | 説明 |
|---|---|
firmware_status | スウォームごとのグループ、サイト、稼働中のバージョン、推奨バージョン、アップグレード状況を表示します。グループ、サイト、スウォームで絞り込み可能です。Classic Central を設定している場合は、Classic のグループ、グループのコンプライアンスバージョン(Central が次にスウォームをアップグレードするバージョン)とその予定時刻、Classic のアップグレード状態と理由、および Classic にのみ存在する(古い)スウォームも表示します |
firmware_versions | デバイスタイプまたは 1 つのスウォームに対して Classic Central が提供するファームウェアバージョンを表示します(Classic Central が設定されている場合のみ登録されます) |
すべてのツールは読み取り専用です。設定やアップグレードは行いません。各 API が何を報告するかについては、docs/firmware-api-notes.md を参照してください。
主な特長
- 効率的なクエリを実現するサーバー側 OData フィルタリング
- OAuth2 クライアント認証情報による認証(GreenLake SSO)
- 大規模な結果セットに対応する自動ページネーション
- 有効期限前のトークン自動更新
- 軽量:依存関係は
mcpSDK とhttpxのみ(pandas 不使用)
前提条件
- Python 3.10 以降
- API アクセスが可能な Aruba Central アカウント(GreenLake New Central API)
- OAuth2 クライアント認証情報(クライアント ID とシークレット)
セットアップ
# uv
uv pip install aruba-central-mcp
# pip
pip install aruba-central-mcp
インストールせずに実行する場合:
uvx aruba-central-mcp
ソースから実行する場合:
git clone https://github.com/shigechika/aruba-central-mcp.git
cd aruba-central-mcp
# uv
uv sync
# pip
pip install -e .
設定
次の環境変数を設定します。
| 変数 | 説明 | 例 |
|---|---|---|
ARUBA_CENTRAL_BASE_URL | API ゲートウェイ URL | apigw-uswest4.central.arubanetworks.com |
ARUBA_CENTRAL_CLIENT_ID | OAuth2 クライアント ID | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
ARUBA_CENTRAL_CLIENT_SECRET | OAuth2 クライアントシークレット | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
オプション:Classic Central(ファームウェアの詳細)
Classic Central グループ内の AOS-8 Instant AP は Classic Central からアップグレードされます。スウォームのアップグレード失敗の理由、グループの準拠バージョン、提供されているバージョンを報告するのは、その API だけです。これらを有効にするには、次の 4 つすべてを設定してください。
| 変数 | 説明 |
|---|---|
ARUBA_CLASSIC_BASE_URL | Classic API ゲートウェイのホスト。apigw-<region>.central.arubanetworks.com |
ARUBA_CLASSIC_CLIENT_ID | API ゲートウェイアプリケーションのクライアント ID |
ARUBA_CLASSIC_CLIENT_SECRET | そのクライアントシークレット |
ARUBA_CLASSIC_TOKEN_FILE | トークンペアを格納する JSON ファイル。このサーバーは更新のたびにこのファイルを書き換えます |
Classic Central の API Gateway がそのアプリケーション用に発行したアクセストークンとリフレッシュトークンを使って、トークンファイルを一度初期化してください。このファイルは、サーバーの実行ユーザーのみが読み取れるようにします。
umask 077
printf '{"access_token": "%s", "refresh_token": "%s"}\n' "$ACCESS" "$REFRESH" > /path/to/classic-token.json
リフレッシュのたびにリフレッシュトークンは置き換えられ、古いトークンは使えなくなります。そのため、このサーバーだけがトークンを更新するようにし、サーバーを実行するすべてのプロセスで同じファイルを指定してください。更新は、ファイルの隣にあるロックファイルを使って直列化されます。リフレッシュトークンが拒否されると、health_check は classic: error を報告し、新しいトークンペアを求めます。一部の ARUBA_CLASSIC_* 変数だけが設定されている場合は、classic: misconfigured を報告し、不足している変数を示します。ファイルを格納するディレクトリは、そのユーザーが書き込み可能である必要があります(新しいペアはその隣に書き込まれてから名前が変更されます)。そうでない場合、トークンがローテーションされた後に失われるのを防ぐため、サーバーは更新を拒否します。Windows ではプロセス間ロックが利用できないため、プロセスを 1 つだけ実行してください。
API 認証情報の取得方法
- HPE GreenLake Platform にログインします
- Manage Workspace > Personal API clients に移動します
- Create Personal API client をクリックします
- ニックネームを入力し、サービスとして Aruba Central を選択します
client_idとclient_secretをコピーします — シークレットが表示されるのは一度だけです
詳細については、以下を参照してください。
使用方法
Claude Code(プラグイン)
このリポジトリは単一プラグインのマーケットプレイスとしても機能するため、Claude Code でサーバーをインストールできます。
/plugin marketplace add shigechika/aruba-central-mcp
/plugin install aruba-central-mcp@aruba-central-mcp
プラグインは uvx aruba-central-mcp を起動し、設定で説明している同じ 3 つの環境変数を読み取ります。Claude Code を起動する前に、それらをエクスポートしてください。また、4 つのオプションの ARUBA_CLASSIC_* 変数も渡します。これらをエクスポートすると、firmware_status で Classic の詳細を取得でき、firmware_versions が利用可能になります。設定しない場合は空の値が渡され、Classic は無効のままです。
Claude Code を実行するプロセスの PATH に uvx が含まれている必要があります。通常、ログインシェルでは含まれていますが、GUI から起動したアプリでは含まれないことがあります。プラグインが起動しない場合は、uv をシステム全体にインストールしてください。
Claude Code(手動)
claude mcp add aruba-central \
-e ARUBA_CENTRAL_BASE_URL=apigw-uswest4.central.arubanetworks.com \
-e ARUBA_CENTRAL_CLIENT_ID=your-client-id \
-e ARUBA_CENTRAL_CLIENT_SECRET=your-client-secret \
-- uvx aruba-central-mcp
または .mcp.json に追加します。
{
"mcpServers": {
"aruba-central": {
"command": "uvx",
"args": ["aruba-central-mcp"],
"env": {
"ARUBA_CENTRAL_BASE_URL": "apigw-uswest4.central.arubanetworks.com",
"ARUBA_CENTRAL_CLIENT_ID": "your-client-id",
"ARUBA_CENTRAL_CLIENT_SECRET": "your-client-secret"
}
}
}
}
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"aruba-central": {
"command": "uvx",
"args": ["aruba-central-mcp"],
"env": {
"ARUBA_CENTRAL_BASE_URL": "apigw-uswest4.central.arubanetworks.com",
"ARUBA_CENTRAL_CLIENT_ID": "your-client-id",
"ARUBA_CENTRAL_CLIENT_SECRET": "your-client-secret"
}
}
}
}
Codex
codex mcp add aruba-central \
--env ARUBA_CENTRAL_BASE_URL=apigw-uswest4.central.arubanetworks.com \
--env ARUBA_CENTRAL_CLIENT_ID=your-client-id \
--env ARUBA_CENTRAL_CLIENT_SECRET=your-client-secret \
-- uvx aruba-central-mcp
stdio サーバーを起動するその他の MCP クライアントでも同様です。コマンドとして uvx aruba-central-mcp を指定し、環境に 3 つの ARUBA_CENTRAL_* 変数を設定してください。
直接実行
export ARUBA_CENTRAL_BASE_URL="apigw-uswest4.central.arubanetworks.com"
export ARUBA_CENTRAL_CLIENT_ID="your-client-id"
export ARUBA_CENTRAL_CLIENT_SECRET="your-client-secret"
python3 -m aruba_central_mcp
CLI オプション
aruba-central-mcp --version # Print version and exit
aruba-central-mcp --help # Show usage and required environment variables
aruba-central-mcp --check # Verify environment variables and OAuth2 authentication, then exit
aruba-central-mcp # Start MCP server (STDIO, default)
オプションを指定しない場合、プロセスは MCP STDIO サーバーとして実行されます(MCP クライアントが使用するモードです)。
--check の終了コード:0 は成功、1 は設定エラー、2 は認証エラーです。
開発
git clone https://github.com/shigechika/aruba-central-mcp.git
cd aruba-central-mcp
# uv
uv sync --dev
uv run pytest -v
# pip
python3 -m venv .venv
.venv/bin/pip install -e ".[test]"
.venv/bin/pytest -v
ライブスモークテスト
ユニットテストスイートはトランスポート層で Central をモックしているため高速ですが、実際のデータを返さなくなったツールを検出できません。scripts/smoke_test.py は、登録されているすべてのツールを設定済みのテナントに対して実行し、空の回答、不正な形式の回答、エラー回答があると失敗します。
# needs the same ARUBA_CENTRAL_* environment variables as the server
uv run python scripts/smoke_test.py
uv run python scripts/smoke_test.py --only radios --traceback
- 読み取り専用です。 ここにあるすべてのツールは読み取りを行います。Central では何も設定されません。今後、書き込みを行うツールを追加する場合は、状態を変更するツールとして指定してスキップする必要があり、テストでその指定を検証します。
- レポートにペイロードは含まれません。 含まれるのはツール名、ステータス、行数だけです。エラー文も、問い合わせ対象のデバイス、クライアントの MAC アドレス、サイトが定期的に引用されるため、伏せ字にします。
- 仕様にネットワーク固有の情報は含まれません。 デバイスごとのツールが必要とする AP、シリアル番号、クライアントの MAC アドレスは、実行時に一覧から検出され、ネットワークに対象がない場合はスキップされます。2 つのテストでこの状態を保ちます。1 つはこれらのパラメーターをリテラルとして指定することを拒否し、もう 1 つはリポジトリが公開されているため、ファイル内のどこにあってもアドレス形式の文字列を禁止します。
- 一覧取得ツールと時系列ツールでは、空の回答も成功とみなします。スウォームが設定されていないサイトは実際に存在するためです。ただし、数秒前に検出した名前を指定した 検索 で空の回答が返ってはならず、プローブでそれを検証します。
- CI では、手軽に実行できる部分を検証します。プローブ仕様なしで登録されたツールがあるとビルドが失敗します(
tests/test_smoke_probes.py)。そのため、ツールを追加する際に「動作していることをどう確認するか」という点を必ず検討することになります。 scripts/smoke_harness.pyは実行エンジンであり、Central に関する知識は持ちません。このファイルを共有するサーバー間で同一に保っているため、エンジンのバグは一度修正してファイルを同期し、このコピーには個別の修正を加えないでください。
初回の実行で、実際の問題が見つかりました。get_client_mobility_trail がエンドポイントで拒否されるページサイズを要求しており、すべてのクライアントに対してツールが失敗していました。
API リファレンス
このサーバーでは、GreenLake New Central API を使用します。
/network-monitoring/v1/aps— アクセスポイント/network-monitoring/v1/radios— AP 無線/network-monitoring/v1/bssids— BSSID/network-monitoring/v1/wlans— WLAN/network-monitoring/v1/swarms— AP スウォーム/クラスター/network-monitoring/v1/switches— スイッチ/network-monitoring/v1/clients— クライアント/network-monitoring/v1/clients-trend— クライアント数の推移/network-monitoring/v1/clients-topn-usage— 使用量上位のクライアント/network-monitoring/v1/top-aps-by-usage— 使用量上位の AP
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。