MCP server for Aruba Central: expose AP, switch, and client status to AI assistants
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
claude mcp add aruba-central-mcp -- uvx aruba-central-mcp{
"mcpServers": {
"aruba-central-mcp": {
"command": "uvx",
"args": ["aruba-central-mcp"],
"env": {
"ARUBA_CENTRAL_BASE_URL": "<aruba_central_base_url>",
"ARUBA_CENTRAL_CLIENT_SECRET": "<aruba_central_client_secret>"
}
}
}
}ARUBA_CENTRAL_BASE_URLARUBA_CENTRAL_CLIENT_SECRETMCP Servers overview
<!-- mcp-name: io.github.shigechika/aruba-central-mcp -->
# aruba-central-mcp
English | [日本語](README.ja.md)
MCP server for [Aruba Central](https://www.arubanetworks.com/products/network-management-operations/central/) (GreenLake New Central API).
Exposes access point, switch, and wireless client status to MCP-compatible AI assistants (Claude Code, Claude Desktop, etc.) via STDIO transport.
## Features
### Access Points
| Tool | Description |
|------|-------------|
| `list_aps` | List all access points (with optional site/status filter) |
| `list_radios` | List AP radios (channel, utilization, noise floor, TX power) |
| `list_bssids` | List all BSSIDs |
| `list_wlans` | List WLANs (SSID, security, VLAN) |
| `list_swarms` | List AP swarms/clusters |
| `get_ap_status` | Get detailed status of a specific AP |
| `get_ap_throughput` | Get AP throughput trend (TX/RX over time) |
| `get_top_aps` | Top APs by bandwidth usage (wireless/wired/total) |
### Clients
| Tool | Description |
|------|-------------|
| `list_clients` | List connected wireless clients (with optional SSID/band filter) |
| `find_client_by_mac` | Find a client by MAC address (direct API lookup) |
| `get_clients_trend` | Client count trend over time |
| `get_top_clients_by_usage` | Top clients by bandwidth usage |
| `get_client_mobility_trail` | Client roaming history |
### Infrastructure
| Tool | Description |
|------|-------------|
| `list_switches` | List all switches |
| `get_site_summary` | Aggregated site-level summary (AP counts, client counts) |
| `health_check` | Report server version and verify Aruba Central authentication (no data fetch) |
### Highlights
- **Server-side OData filtering** for efficient queries
- **OAuth2 Client Credentials** authentication (GreenLake SSO)
- **Automatic pagination** for large result sets
- **Token auto-refresh** before expiration
- Lightweight: only `mcp` SDK + `httpx` (no pandas)
## Prerequisites
- Python 3.10+
- Aruba Central account with API access (GreenLake New Central API)
- OAuth2 client credentials (client ID and secret)
## Setup
```bash
# uv
uv pip install aruba-central-mcp
# pip
pip install aruba-central-mcp
```
Or run without installing:
```bash
uvx aruba-central-mcp
```
From source:
```bash
git clone https://github.com/shigechika/aruba-central-mcp.git
cd aruba-central-mcp
# uv
uv sync
# pip
pip install -e .
```
## Configuration
Set the following environment variables:
| Variable | Description | Example |
|---|---|---|
| `ARUBA_CENTRAL_BASE_URL` | API gateway URL | `apigw-uswest4.central.arubanetworks.com` |
| `ARUBA_CENTRAL_CLIENT_ID` | OAuth2 client ID | `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` |
| `ARUBA_CENTRAL_CLIENT_SECRET` | OAuth2 client secret | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
### How to obtain API credentials
1. Log in to [HPE GreenLake Platform](https://common.cloud.hpe.com/)
2. Go to **Manage Workspace** > **Personal API clients**
3. Click **Create Personal API client**
4. Enter a nickname and select **Aruba Central** as the service
5. Copy the `client_id` and `client_secret` — **the secret is shown only once**
For details, see:
- [OAuth APIs for Access Token](https://developer.arubanetworks.com/hpe-aruba-networking-central/docs/api-oauth-access-token)
- [Making API Calls](https://developer.arubanetworks.com/new-central/docs/making-api-calls)
## Usage
### Claude Code
```bash
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
```
Or add to `.mcp.json`:
```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
Add to `claude_desktop_config.json`:
```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"
}
}
}
}
```
### Direct execution
```bash
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 Options
```bash
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)
```
With no options, the process runs as an MCP STDIO server (the mode used by MCP clients).
`--check` exit codes: `0` success, `1` config error, `2` auth error.
## Development
```bash
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
```
### Live smoke test
The unit suite mocks Central at the transport layer, which is what makes it
fast — and also what makes it blind to a tool that has stopped returning real
data. `scripts/smoke_test.py` runs **every registered tool** against the
configured tenant and fails on empty, malformed or error answers:
```bash
# 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
```
- **Read-only.** Every tool here reads; nothing in Central is configured. A
future tool that writes must be listed as state-changing and skipped, and a
test enforces that.
- **No payloads in the report.** Tool names, statuses and row counts only;
error text is redacted too, since an error routinely quotes the device,
client MAC or site it was asked about.
- **Nothing network-specific in the specs.** The AP, the serial number and the
client MAC that the per-device tools need are discovered at run time from the
listings, and skipped when the network has none to offer. Two tests keep it
that way: one refuses those parameters as literals, the other bans anything
address-shaped anywhere in the file, because this repository is public.
- Empty answers pass for the listings and the time-series tools — a site with
no swarms configured is a real deployment — but a *lookup* handed a name
discovered seconds earlier must not come back empty, and those probes say so.
- CI enforces the cheap half: a tool registered without a probe spec fails the
build (`tests/test_smoke_probes.py`), so adding a tool forces the question
"how would we know it works?".
- `scripts/smoke_harness.py` is the engine and holds no Central knowledge: it
is kept identical across the servers that share it, so fix engine bugs once
and sync the file rather than patching this copy.
Its first run found a real one: `get_client_mobility_trail` was requesting a
page size the endpoint rejects, so the tool had been failing for every client.
## API Reference
This server uses the [GreenLake New Central API](https://developer.arubanetworks.com/):
- `/network-monitoring/v1/aps` — Access points
- `/network-monitoring/v1/radios` — AP radios
- `/network-monitoring/v1/bssids` — BSSIDs
- `/network-monitoring/v1/wlans` — WLANs
- `/network-monitoring/v1/swarms` — AP swarms/clusters
- `/network-monitoring/v1/switches` — Switches
- `/network-monitoring/v1/clients` — Clients
- `/network-monitoring/v1/clients-trend` — Client count trends
- `/network-monitoring/v1/clients-topn-usage` — Top clients by usage
- `/network-monitoring/v1/top-aps-by-usage` — Top APs by usage
## License
[MIT](LICENSE)
What people ask about aruba-central-mcp
What is shigechika/aruba-central-mcp?
+
shigechika/aruba-central-mcp is mcp servers for the Claude AI ecosystem. MCP server for Aruba Central: expose AP, switch, and client status to AI assistants It has 0 GitHub stars and was last updated today.
How do I install aruba-central-mcp?
+
You can install aruba-central-mcp by cloning the repository (https://github.com/shigechika/aruba-central-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is shigechika/aruba-central-mcp safe to use?
+
Our security agent has analyzed shigechika/aruba-central-mcp and assigned a Trust Score of 87/100 (tier: Trusted). See the full breakdown of passed checks and flags on this page.
Who maintains shigechika/aruba-central-mcp?
+
shigechika/aruba-central-mcp is maintained by shigechika. The last recorded GitHub activity is from today, with 3 open issues.
Are there alternatives to aruba-central-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy aruba-central-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/shigechika-aruba-central-mcp)<a href="https://claudewave.com/repo/shigechika-aruba-central-mcp"><img src="https://claudewave.com/api/badge/shigechika-aruba-central-mcp" alt="Featured on ClaudeWave: shigechika/aruba-central-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!