mcpField
A
Aruba Central MCP

Aruba Central MCP

ローカル
github.com/shigechikaクラウド・インフラ02 日前に更新

Aruba Central MCP について

Aruba Central MCP は、Aruba Central GreenLake New Central API に接続する読み取り専用 MCP サーバーです。AI アシスタント向けにアクセスポイント、クライアント、ファームウェアを照会し、フィルタリング、ページネーション、トークン更新に対応します。

主な機能

  1. 01アクセスポイント、無線、WLAN の照会
  2. 02無線クライアントとローミング履歴の確認
  3. 03スイッチとサイト概要の一覧
  4. 04スループットと使用量推移の確認
  5. 05ファームウェア状態と提供バージョンの確認
  6. 06OAuth2 認証と自動ページネーション

活用シーン

  1. 01オフライン AP や無線状態の調査
  2. 02接続中クライアントと使用量の確認
  3. 03サイトごとの AP 数とクライアント数の集計
  4. 04デバイスのファームウェア版と更新状態の確認

MCP 対応

STDIO 経由で MCP クライアントに Aruba Central の読み取り専用照会ツールを提供し、アクセスポイント、スイッチ、無線クライアント、ファームウェア状態を扱います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"shigechika-aruba-central": {
"command": "uvx",
"args": [
"aruba-central-mcp"
]
}
}
}
起動コマンドuvx aruba-central-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiaruba-central-mcp0.10.2

ツール

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_radiosAP の無線情報を一覧表示します(チャンネル、使用率、ノイズフロア、送信電力)
list_bssidsすべての BSSID を一覧表示します
list_wlansWLAN を一覧表示します(SSID、セキュリティ、VLAN)
list_swarmsAP のスウォーム/クラスターを一覧表示します
get_ap_status特定の AP の詳細なステータスを取得します
get_ap_throughputAP のスループットの推移を取得します(時間経過に伴う送信/受信)
get_top_aps帯域幅使用量の多い AP を表示します(ワイヤレス/有線/合計)
クライアント
ツール説明
list_clients接続中のワイヤレスクライアントを一覧表示します(SSID/帯域による任意のフィルターに対応)
find_client_by_macMAC アドレスでクライアントを検索します(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)
  • 大規模な結果セットに対応する自動ページネーション
  • 有効期限前のトークン自動更新
  • 軽量:依存関係は mcp SDK と 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_URLAPI ゲートウェイ URLapigw-uswest4.central.arubanetworks.com
ARUBA_CENTRAL_CLIENT_IDOAuth2 クライアント IDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ARUBA_CENTRAL_CLIENT_SECRETOAuth2 クライアントシークレットxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
オプション:Classic Central(ファームウェアの詳細)

Classic Central グループ内の AOS-8 Instant AP は Classic Central からアップグレードされます。スウォームのアップグレード失敗の理由、グループの準拠バージョン、提供されているバージョンを報告するのは、その API だけです。これらを有効にするには、次の 4 つすべてを設定してください。

変数説明
ARUBA_CLASSIC_BASE_URLClassic API ゲートウェイのホスト。apigw-<region>.central.arubanetworks.com
ARUBA_CLASSIC_CLIENT_IDAPI ゲートウェイアプリケーションのクライアント 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 認証情報の取得方法
  1. HPE GreenLake Platform にログインします
  2. Manage Workspace > Personal API clients に移動します
  3. Create Personal API client をクリックします
  4. ニックネームを入力し、サービスとして Aruba Central を選択します
  5. 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

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。