hpe-networking-mcp
hpe-networking-mcp — HPE-Networking-MCP-Toolkit
Der Banner zeigt den aktuellen Backend-Katalog: eine große Tool-Oberfläche bleibt bedarfsgesteuert verfügbar, während der MCP-Client selbst standardmäßig nur drei Router-Tools sieht.
Low-Token-Server für das Model Context Protocol (MCP) für HPE-Networking-Automatisierung: Aruba Central, HPE GreenLake Platform (GLP), ClearPass, Juniper Mist, Ab/Mist, Apstra, Migrationsautomatisierung für ArubaOS 8, EdgeConnect, HPE Aruba UXI und Axis Atmos Cloud.
MCP erlaubt es einem KI-Client — Claude Code, Copilot, Cursor, VS Code oder einem anderen MCP-fähigen Host — auf eine gemeinsame Toolbox zuzugreifen, statt auf ein maßgeschneidertes Plugin pro Anbieter. hpe-networking-mcp ist ein solcher Server: Richten Sie einen beliebigen MCP-Client darauf aus, und er legt einen durchsuchbaren Katalog von HPE-Networking-Operationen hinter einer kleinen, tokenarmen Oberfläche frei.
hpe-networking-mcp bietet MCP-fähigen KI-Clients einen tokenfreundlichen Weg, um Aruba-HPE-Dokumentation zu durchsuchen, genaue OpenAPI-Details nachzuschlagen, die Central Health zu prüfen, Troubleshooting-Workflows auszuführen, die Konfiguration zu erstellen, geschützte ArubaOS-8-Migrationen durchzuführen und geschützte GreenLake-Platform-Operationen zu nutzen. Es ist auf direkten REST-Aufrufen mit httpx aufgebaut.
Die vollständige visuelle Darstellung dieser Informationen – Zielgruppenwahl, Diagramme und den Ablauf der writesafety-ssslusssicherheit – finden Sie auf der GitHub-Pages-Seite von hpe-networking-mcp. Dieses README wird bewusst kurz gehalten; die kanonische Anleitung findet sich unter docs/.
Warum der Router wichtig ist
Richten Sie Ihren MCP-Client auf einen Server aus: src/hpe_networking_mcp/mcp_servers/tool_router.py. Das empfohlene Profil minimal hält die für den Client sichtbare Tool-Liste bei drei Einträgen, während weiterhin der komplette Backend-Katalog verfügbar ist:
find_tool– das richtige Backend-Tool finden.invoke_read_tool– nur schreibgeschützte Leseaufrufe ausführen.invoke_tool– ausdrücklich gewollte Schreib-/destructive Aufrufe ausführen.
Related MCP server: Network AI Assistant
Für wen es gedacht ist
Sie sind... | Einstieg mit |
Neu bei MCP | Der Fünf-Minuten-Schnellstart ohne Anmeldedaten unten, dann Erste Schritte |
Aruba-Netzwerkbetreiber | |
hpe-networking-mcp-Entwickler | So funktionieren MCP und RAG, Architekturübersicht und Leitfaden für Mitwirkende |
Fünf-Minuten-Schnellstart ohne Anmeldedaten
Vergewissern Sie sich, dass die Installation vollständig ist, und starten Sie den MCP-HTTP-Server, bevor Sie Anmeldedaten für Aruba Central oder die GreenLake Platform hinzufügen.
Option A — das veröffentlichte Image pullen (ohne Checkout):
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:latestSobald der Startvorgang abgeschlossen ist (sekundenschnell), antwortet curl http://127.0.0.1:8010/livez mit {"status":"ok"}. Die Loopback-beschränkte Veröffentlichung hält den Server von Ihrem LAN fern; die host:*-Zulassungsliste ist immer dann erforderlich, wenn MCP_HOST nicht Loopback. Das Image enthält den OpenAPI-Spec-Index, der bereits beim Build eingebaut ist; zusätzlich ist für das semenable Suchranking ein Rebuild mit Ingestion-Extras erforderlich (--build-arg INSTALL_EXTRAS=ingestion, siehe Produktionsbereitstellung).
Option B — aus dem Quellcode bauen (fügt den Setup-Assistenten, Doctor-Diagnostik und lokale Index-Werkzeuge hinzu):
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.shErwartete Ergebnisse:
Der Assistent gibt jede abgeschlossene Phase aus und endet mit einer „Setup vollständig“-Zusammenfassung. es werden Central-/GLP-Aufrufe gemacht, weder branding tricks: From windows host, et c. mit LF-Zeilenendungen bauen und starten (WSL2 oder entsprechend konfigurierter Checkout) – CRLF-Checkouts bringen die Entry-Skripte im Docker-Build zu Fehlern.
doctor.pymeldet die Prüfungen der lokalen Abhängigkeiten, des Konfigurationspfads und des Index — jedes Ergebnis lautetOKoder nennt Das zu Tun-Behebende, und zwar ohne dass eine Anbieter-API aufgerufen wird.Der HTTP-Router gibt eine Zeile
Uvicorn running on http://127.0.0.1:8010aus und läuft dann weiter.
Verbinden Sie einen beliebigen MCP-fähigen Client mit http://127.0.0.1:8010/mcp und versuchen Sie dann einen credentials-freien Discovery-Aufruf:
find_tool("list Aruba Central devices")Erwartetes Ergebnis: Bewertete Treffer werden direkt aus dem lokalen Tool-Index gelesen, den der Assistent gerade gebaut hat, und sind jeweils mit Herkunfts-Fähigkeit und dem Zustand des Schreib-Gate annotiert. Es wird keine Anbieter-API kontaktiert.
Verbinden in Ihrem Client
Richten Sie einen beliebigen MCP-fähigen Client auf http://127.0.0.1:8010/mcp aus (oder eine stdio-hpe-mcp-router-Konfiguration), und er sieht nur die drei Router-Tools. Copy-Paste-Konfigurationen für Claude, Copilot, VS Code Cursor und andere finden Sie in MCP-Client-Rezepte; die ausgelieferten Beispiele liegen in examples/mcp-clients/.
Die Dokumentsuche ist ein separater, lokaler Build
ask_docs und die restliche RAG-Oberfläche benötigen einen Textkorpus, den diese Projekt bewusst nicht mitliefert. Dieser Korpus besteht ausgescratch-scraped vendor docs, und deren erneute Veröffentlichung ist nicht unsere Aufgabe – siehe ingestion/source_manifest.json, das aussagt, dass man. „Do not commit scraped content“-Inhalte nicht einbauen soll. Bauen Sie ihn selbst, in Eigeverantwortung und unter den Bedingungen jedes Anbieters:
uv run --extra ingestion python ingestion/ingest_docs.pyPlanen Sie genug Zeit ein. Der einziehen ist in Stunden zu messen, und die erste RAG-Abfrage lädt zusätzlich das ~250 MB große Einbettungsmodell nomic-embed-text-v1.5 in den Hugging-Face-Cache. Ohne Anmeldedaten ist nicht dasselbe wie offline: Der Quickstart oben benötigt keine Anbieter-Zugänge, aber die Korpus-Erstellung und die erste Abfrage brauchen jeweils Netzzugriff.
Schreibsicherheit auf einen Blick
find_tooldurchsucht nur die lokale Tool-Katalog und ruft nie eine Anbieter-API.invoke_read_toolblockt jedes Werkzeug, das nicht als "read-only" annotieren.invoke_toolist bewusst als destruktiv markiert, weil es zusätzlich Schreib-/destruktive Backend-Werkzeuge ausliefern kann – benutzen Sie es nur, wenn ein Schreibzugriff beabsichtigt ist.Verwenden Sie zuerst
dry_run=True, wenn möglich; die echte Ausführung verlangt dann entwederconfirm=Trueoder eine MCP-Rückfrage, je nach Werkzeug-Schema.Schreiben sind auf jeder Plattform Opt-in, einschließlich Central: Unter der Vorgabeeinstellung
HPE_MCP_ACCESS_PROFILE=custombleibt das Schreib-Gate jeder Plattform geschlossen, bis es gesetzt wird. Verwenden Siesafe-read-only, um jede Schreibzugriff unabhängig von den Plattform-Schaltungen abz dejweilen zu blockieren, oderfull-read-write, um normale Schreibzugriffe auf allen geladenen Plattformen zu erlauben.Voll Lese-/Schreibmodus umgeht nicht die Dry-Run-Phase, Bestätigungen, elicitation oder dezidierten Schutzmechanismen wie das getrennte AOS8-Rollback-Gate.
Die Anmeldedaten bleiben in
config/credentials.yamloder in Umgebungsvariablen und werden nie committet.
Variable | Standard | Wirkung |
|
|
|
|
| Mit |
Zerstörende Operationen (reboot_device, disconnect_client) liegen hinter demselben Gate-Flag wie Schreibzugriffe — es gibt keine zusätzliche "betriebliche" Ebene, die dieses Flag umgeht.
Das vollständige Modell für Discovery/Verteilen/Der Schreibsicherheit finden Sie unter Tool-Router.
Projekt-Snapshot
Bereich | Aktueller Stand |
Tool-Katalog | Nicht-additive Profile: 380 Kern-Tools / 2.842 schreibgeschützt optionale Starttools / 5.822 schreib-/lesbare optionale Starttools; REST-OpenAPI-Plattform-API-Backend gesamt: 6.711; zentrale Streaming nur-Protokoll: 1; plattformübergreifende Site Health: 1; kompletter Backend-Index: 6.728; Direct-all: 6.736 |
Fähigkeiten Gesamt (Plattform-API) | 3.159 Lese- / 165 Diagnose- / 2.545 Schreib- / 842 destruktive Operationen |
RAG | 392.471 Prose-Blöcke in LanceDB über 30 gescrapte Quellen |
Strukturierte Nachschlagewerte | 2.734 Endpunkte, 6.363 Schemas, 31.432 Felder, 104 Advisories, 345 Lebenszyklus-Datensätze |
API-Herkunft | Aruba-ReadMe-Registries, offizielle Mist-/Apstra-Quellen, gepinnte GLP- und EdgeConnect-Snapshots, SHA-pinnte Axis-Generator |
Optionale Plattformen | ClearPass, Mist, Apstra, AOS8, EdgeNet, UXI, Axis Atmos Cloud, dazu die Credential-free- |
Security | Pro-Plattform-Sing-Gates, Dry-Run + Bestätigung, HTTP-Host-/Origin- und Bearer-Steuerung, anmeldebytes-gesteuertete Live-Test-Konfiguration |
Die vollständigen Zählungen je Backend finden Sie im Tool-Katalog. Alle Neuerungen des letzten getaggten Releases sind in den Versionshinweisen zu 0.9.0 beschrieben, und die Fähigkeitslücken-Matrix ermöglicht reproduzierbare Tool-/Benchmark-Vergleiche.
Aufgabenorientierte Leitfäden
Anforderung | Anleitung |
Vollständige Einrichtung, Anmeldedaten und MCP-Client-Verbindung | |
Kopierfertige stdio- oder Streamable-HTTP-Client-Konfiguration | |
Router-Modi, Toolsets und sicheres Verbinden im Detail | |
Echte Prompts mit erwarteten Aufruf-Strukturen | |
ClearPass, Mist, Apstra, AOS8, EdgeConnect, UXI oder Axis aktivieren | |
Typisierte produktspezifische Workflow-Roadmap | |
Einrichtungs-, Anmeldedaten-, HTTP- oder Katalogprobleme beheben | |
Architektur, Datenfluss und Sicherheitsdiagramme | |
Tool-Anzahl und -Abdeckung jedes Backends | |
Das vollständige aufgabenbasierte visuelle Gateway | |
Jede Dokumentationsseite, nach Zweck gegliedert | |
Migration von | |
Mitwirken, Support erhalten oder ein Sicherheitsproblem melden | |
Versionshistorie |
Grundlagen der lokalen Einrichtung
Das Standard-MCP-Clientprofil bleibt bewusst schlank:
HPE_MCP_ROUTER_MODE=minimal
HPE_MCP_TOOLSETS=central,glp,ragOptionale Produkte nur bei Bedarf aktivieren:
HPE_MCP_ACCESS_PROFILE=custom
HPE_MCP_PRODUCTS=clearpass,mist,apstra,aos8,edgeconnect,uxi,axis,design
HPE_MCP_PRODUCT_ACCESS=read-onlyProdukt | Variablen |
ClearPass |
|
Juniper Mist |
|
Apstra |
|
ArubaOS 8 |
|
EdgeConnect |
|
HPE Aruba UXI |
|
Axis Atmos Cloud |
|
Netzwerk-Design-Diagramme (Draw.io / Graphviz / NeXt) | keine erforderlich; optional |
Siehe die optionale Produktmatrix für das vollständige Einrichtungs- und Sicherheitsmodell.
Für eine vertrauenswürdige, vollständig schreibfähige Sitzung verwenden Sie
python3 scripts/setup_wizard.py --access-profile full-read-write, damit alle
Legacy-Gates ausgerichtet sind, oder die eigenständige
examples/mcp-clients/stdio/full-read-write.mcp.json.
.claude/launch.json enthält ein passendes minimales hpe-networking-mcp-Launchprofil
für den täglichen Gebrauch. find-Instruments lässt die vollständigen JSON-Schemas standardmäßig aus; fordern Sie
include_schema=true nur dann an, wenn ein Client die vollständige Parameterstruktur benötigt.
Erstellen oder aktualisieren Sie den Router-Tool-Index und die API-Spec-Datenbank. Beide werden aus den OpenAPI-Specs abgeleitet, die in diesem Repository eingecheckt sind, sodass sie deterministisch neu erstellt werden und kein Web-Scraping benötigen:
uv run python scripts/ingest_tools.py --products allDer RAG-Prosatextkorpus wird getrennt davon von ingestion/ingest_docs.py erstellt,
wie oben im Schnellstart beschrieben. Er wird nicht als Release-Artefakt ausgeliefert.
Anmeldedaten, Regionenwahl, Env-Variablen für optionale Produkte und den vollständigen Ingestions-/Aktualisierungspfad finden Sie in der Anleitung Erste Schritte.
Streamable-HTTP-Modus
MCP_PORT=8010 bash scripts/run_http_router.shRichten Sie dann einen beliebigen MCP-fähigen Client auf http://127.0.0.1:8010/mcp aus. Der Server
stellt außerdem /livez, /readyz und /healthz bereit. Bindungen an Nicht-Loopback-Adressen erfordern
explicit MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINS und können mit
MCP_HTTP_BEARER_TOKEN geschützt werden. Für die stdio- und HTTP-Konfigurationen zum
Kopieren und Einfügen siehe MCP-Client-Rezepte.
Projektstruktur
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`Die vollständige Repository-Übersicht, einschließlich generierter/git-ignorierter Pfade, finden Sie in Systemübersicht.
Validierung
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 ist die Kompatibilitätsuntergrenze der plattformbezogenen API
(die 6.711 plattformbezogenen API-Tools), nicht die Gesamtzahl der registrierten Backend-Tools
von 6.728, die auch das rein protokollorientierte Central-Streaming-Tool,
den plattformübergreifenden site-health-Aggregator, die lokale GLP-Preflight-Diagnose
sowie lokale Tools ohne Zugangsdaten enthalten. Die Validierung ist bei
oder oberhalb der Untergrenze erfolgreich. Beide Gesamtzahlen finden sich im
Tool-Katalog.
Der Release-Helfer führt Unit-Tests aus, optional RAG/API-Auswertungen, sofern die jeweiligen
Indizes existieren, Untergrenzen-Prüfungen für den Tool-Katalog und Frischeprüfungen des lokalen
Tool-Indexes. Die Unit-Tests umfassen außerdem statische Guards für den aktiven MCP-/Pipeline-Code,
eingecheckte MCP-Konfigurationsbeispiele mit niedrigem Tokens, rein lokale Konfigurationsdateien,
Router-Produkt-/Toolset-Dokumentation, begrenzte generische Write-Only-GET-Tools, MCP-Liste mit
Standardgrenzen, RAG/Search-top_k-Grenzen, Werkzeuganzahl-Ansprüche, Tool-Anzahl-Docstrings,
sowie RAG/Index-Bezeichnungen doc-fact-Kategorie, Markdown-Links und -Bilder
lokal in Git getrackt, Pages-Sitemap- und Robots-Metadaten, dokumentierte Router-Beispielargumente,
Produkt-Workflow-Toolnamens-Tabellen und die Umgebungstabellen des Setup-Assistenten für optionale Produkte.
Verwandte Projekte und Dank
hpe-networking-mcp ist ein unabhängiges HPE-Networking-MCP-Toolkit, das durch Beobachtung offiziellen MCP-Ökosysteme und Community-Arbeit verbessert wird:
HewlettPackard/gl-mcp – offizieller GreenLake-Plattform-MCP-Server
modelcontextprotocol/python-sdk – MCP-Python-SDK
KarthikSKumar98/central-mcp-server – Community Aruba-Central-MCP-Server
nowireless4u/hpe-networking-mcp – einheitliche HPE-Networking-MCP-Referenz
Haftungsausschluss
hpe-networking-mcp ist ein unabhängiges Communityprojekt. Es ist kein offizielles HPE?/ oder ein HPE-Aruba-Networking-Produkt und wird weder von HPE empfohlen noch unterstützt.
Lizenz
MIT – siehe repository license. Generierte API-Metadaten möglich und Referenzen zur Upstream-Implementierung sind in THIRD_PARTY_NOTICES.md dokumentiert.
Available Tools
3 toolsfind_toolARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_k | No | ||
| origin | No | ||
| server | No | ||
| platform | No | ||
| capability | No | ||
| operation_id | No | ||
| include_schema | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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_toolARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| cursor | No | ||
| arguments | No |
TDQS
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.
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.
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.
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.
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.
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_toolADestructive
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| arguments | No |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Related MCP Servers
- AlicenseAqualityDmaintenanceA community MCP server for Cisco Secure Access that exposes the Secure Access REST API to AI clients as a curated catalog of tools for Admin, Deployments, Investigate, Policies, and Reports.421Apache 2.0
- FlicenseBqualityDmaintenanceAsynchronous MCP server for unified multi-platform network infrastructure management, providing 97 tools across 10 connectors including SSH, MikroTik, Palo Alto, Aruba, Graylog, LibreNMS, Cisco APIC/NDFC, and Panorama.9722
- AlicenseNot gradedqualityDmaintenanceMCP server for network operations that lets AI assistants interact with Cisco/Juniper network devices through safe, well-defined tools like compliance audits and configuration backups.MIT
- FlicenseNot gradedqualityDmaintenanceProduction-grade MCP server that exposes the complete HPE Aruba Networking Central REST API as 90 tools across 19 categories, enabling AI assistants to manage Aruba Central networks.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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