hpe-networking-mcp
hpe-networking-mcp — kit de herramientas MCP para HPE Networking
El banner refleja el catálogo backend actual: una amplia superficie de herramientas se mantiene disponible bajo demanda, mientras que el cliente MCP en sí solo ve tres herramientas de router por defecto.
Servidor Model Context Protocol (MCP) de bajo consumo de tokens para la automatización de HPE Networking: Aruba Central, HPE GreenLake Platform (GLP), ClearPass, Juniper Mist, Apstra, automatización de la migración de ArubaOS 8, EdgeConnect, HPE Aruba UXI y Axis Atmos Cloud.
MCP permite que un cliente de IA —Claude Code, Copilot, Cursor, VS Code o cualquier otro host compatible con MCP— acceda a un conjunto de herramientas común en lugar de un plugin específico por proveedor. hpe-networking-mcp es uno de esos servidores: apunta cualquier cliente MCP a él y expone un catálogo buscable de operaciones de redes de HPE detrás de una única superficie, ligera y de bajo consumo de tokens.
hpe-networking-mcp ofrece a los clientes de IA compatibles con MCP una forma de bajo consumo de tokens para buscar documentación de Aruba/HPE, consultar los detalles exactos de OpenAPI, inspeccionar el estado de Central, ejecutar flujos de trabajo de resolución de problemas, gestionar la configuración, llevar a cabo migraciones protegidas de ArubaOS 8 y utilizar operaciones protegidas de GreenLake Platform. Se basa en llamadas REST directas con httpx.
Aquí puede ver el recorrido visual completo de esta misma información —selector de audiencia, diagramas y flujo de seguridad de escritura— en el sitio hpe-networking-mcp GitHub Pages. Este README se mantiene intencionadamente breve; las guías canónicas viven en docs/.
Por qué importa el router
Apunte su cliente MCP a un servidor: src/hpe_networking_mcp/mcp_servers/tool_router.py. El perfil minimal recomendado mantiene la lista de herramientas visibles para el cliente en tres entradas mientras sigue permitiendo acceder al catálogo backend completo:
find_tool— descubre la herramienta backend adecuada.invoke_read_tool— ejecuta llamadas de solo lectura.invoke_tool— ejecuta únicamente llamadas de escritura o destructivas intencionadas.
Related MCP server: Network AI Assistant
Para quién es
Eres... | Empieza por |
Un usuario nuevo de MCP | El inicio rápido sin credenciales en cinco minutos que está debajo, y después Primeros pasos |
Un operador de red de Aruba | |
Una persona que contribuye a hpe-networking-mcp | Cómo funcionan MCP y RAG, Descripción de la arquitectura y Guía de contribución |
Inicio rápido sin credenciales en cinco minutos
Verifica la instalación y arranca el servidor HTTP de MCP antes de añadir credenciales de Aruba Central o GreenLake Platform.
Opción A — extraer la imagen publicada (sin descargar el repositorio):
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:latestCuando el arranque termine (cuestión de segundos), curl http://127.0.0.1:8010/livez responderá {"status":"ok"}. La publicación de bloqueo por bucle conver. mantiene el servidor fuera de tu LAN; la forma de permitidos con host:* es necesaria siempre que MCP_HOST no sea loopback. La imagen incluye el índice de especificaciones OpenAPI compilado durante el build; la clasificación de búsqueda semántica además necesita un ensamblado adicional de ingesta (--build-arg INSTALL_EXTRAS=ingestion, ver Producción deployment).
Opción B — compilar desde el código fuente (añade el asistente de asistente de configuración, diagnósticos de doctor y herramientas de índice locales):
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.shResultados esperados:
El asistente imprime cada fase completada y termina con un resumen de configuración completa; no se realizan llamadas a Central/GLP. En hosts Windows, compila y ejecuta desde una shell con finales de línea LF (WSL2 o un checkout configurado): los checkouts con CRLF rompen los scripts de entrada dentro de los builds Docker.
doctor.pyinforma de las comprobaciones locales de dependencias, rutas de configuración e índice: todo leeOKo enumera qué corregir, sin llamar a ninguna API del proveedor.El router HTTP imprime una línea
Uvicorn running on http://127.0.0.1:8010y sigue ejecutándose en primer plano.
Conecta cualquier cliente compatible con MCP a http://127.0.0.1:8010/mcp y, a continuación, prueba una llamada de descubrimiento sin credenciales:
find_tool("list Aruba Central devices")Resultado esperado: las coincidencias ordenadas se leen directamente del índice de herramientas local que acaba de construir el asistente; cada una está anotada con su capacidad y estado de compuerta de escritura. No se contacta con ninguna API del proveedor.
Conectarlo en tu cliente
Apunta cualquier cliente compatible con MCP a http://127.0.0.1:8010/mcp (o una configuración stdout de hpe-mcp-router) y verá solo las tres herramientas de enrutador. Configuraciones listas para copiar y pegar para Claude, Pélop, Vesyap, Cursor y otros viven en Recetas de clientes; los ejemplos incluidos están en examples/mcp-clients/.
La búsqueda de documentación es una compilación local aparte
ask_docs y el resto de la superficie de RAG necesitan un corpus de texto que este proyecto deliberadamente no incluye. Ese corpus es documentación extraída de proveedores, y no republicarla es una decisión nuestra; consulta ingestion/source_manifest.json, que siempre ha dicho: "No commit scraped content". Constrúyelo tú mismo, bajo tu propio aceptación de los términos de cada proveedor:
uv run --extra ingestion python ingestion/ingest_docs.pyPresupuesta también el tiempo. El rastreo se mide en horas, y la primera consulta de RAG descarga además el modelo de incrustACIÓN nomic-embed-text-v1.5 (de ~250 MB) en tu caché de Hugging Face. Sin credenciales no es igual que sin conexión: lo anterior de inicio no requiere credenciales de proveedor, pero la construcción del corpus y la primera consulta en ambos casos necesitan acceso a la red.
Seguridad de escritura de un vistazo
find_toolsolo busca en el catálogo local de herramientas; nunca llama a una API de proveedor.invoke_read_toolbloquea cualquier herramienta backend que no esté marcada como solo lectura.invoke_toolestá deliberadamente marcada como destructive porque también puede ejecutar herramientas backend de escritura/destructivas — úsala solo cuando una escritura sea lo que se busca.Usa
dry_run=Trueprimero, cuando se soporte; la ejecución real requiere entonces oconfirm=Trueo que MCP lo pida, según el esquema de la herramienta.Las escrituras son opt-in en todas las platafoformas, Central incluesta: con el perfil predeterminado
HPE_MCP_ACCESS_PROFILE=customuna puerta de escritura de cada herramienta queda cerrada hasta que él la ajustado. Usasafe-read-onlypara bloquear toda escritura independientemente de las puertas de cada plataforma, ofull-read-writepara habilitar las escrituras normales en todas las plataformas cargadas.El modo lectura/escritura completa no omite el modo dry-run, la confirmación, la intervención del MCP ni otros salvaguardados específicos, como la exclusiva puerta de deshacer de AOS8.
Las credenciales están en
config/credentials.yamlo en variables de entorno, y nunca se confiesen.
| Variable | El valor por defecto | Effect |
| ---------------------------- | ---------------------- | history--------------------------------------------------------------------------------------- |
| HPE_MCP_ACCESS_PROFILE | custom | safe-read-only deniega todas las escrituras; full-read-write permite todas; custom usa las puertas por plataforma que aparecen abajo |
| HPE_MCP_<PLATFORM>_WRITES | 0 | Establece 1 para exponer las herramientas de escritura y destructivas de esa plataforma. |
Las operaciones destructivas (reboot_device, disconnect_client) comparten la misma compuerta que las escrituras; no existe un nivel "operativo" separado que la evite.
Ver Tool router para el modelo completo de discovery / dispatch / write-safety.
Proyecto snapshot
Tool catalog | Perfiles no aditivos: 380 opciones fundamentales / 2,842 opcionales de solo reading / 5,822 opcionales de lectura-escritura; total backend de API REST/OpenAPI de plataforma: 6,711; Central Streaming de protocolo: 1; estado-desde salud del sitio multiplataforma: 1; índice backend completo: 6,728; direct-all: 6,736. | |
Motor de intentos (API de plataforma) | 3,159 lectura / 165 diagnóstico / 2,545 escritura / 842 destructivas | |
RAG | 392,471 fragmentos de texto, de proa a poesía, en LanceDB, extraídos de 30 fuentes con rastreo | |
Búsqueda estructural | 2,734 endpoints / 6,363 esquemas / 31,432 campos / 104 avisos / 345 registros de ciclo de vida | |
Proveniente de API | Waste ReadMe registries, fuentes oficiales de Mist/Apstra, firmas editables de MMM y SNAXL, Axis con anclado SHA | |
Plataformas opcionales | ClearPass, Mist, Apstra, AOS8, EdgeConnect, UXI, Axis Atmos Cloud y las herramientas de diagramas | |
Seguridad | Puertas de escritura por plataforma, dry-run + confirmación, controles HTTP de host/origen y bearer token, y config de live-test con credenciales. |
Todas las marcas mencionadas y los componentes: OpenAPI, SNXXX, hpe-router.
Los recuentos completos por backend se encuentran en el Catálogo de herramientas. Consulta las notas de la versión 0.9.0 para conocer todo lo añadido en la última versión etiquetada y la matriz de brechas de capacidad para ver comparaciones reproducibles de herramientas/benchmarks.
Guías orientadas a tareas
Necesidad | Guía |
Configuración completa, credenciales y conexión del cliente MCP | |
Configuración de cliente stdio o HTTP streamable para copiar/pegar | |
Modos del enrutador, conjuntos de herramientas y envío seguro en profundidad | |
Prompts reales con las formas de llamada esperadas | |
Activar ClearPass, Mist, Apstra, AOS8, EdgeConnect, UXI o Axis | |
Ruta de trabajo específica por producto con tipos de flujo | |
Solucionar problemas de configuración, credenciales, HTTP o catálogo | |
Arquitectura, flujo de datos y diagramas de seguridad | |
Recuento de herramientas y cobertura de cada backend | |
La vista visual completa basada en tareas | |
Todas las páginas de documentación, agrupadas por finalidad | |
Migrar desde | |
Contribuir, obtener soporte o reportar un problema de seguridad | |
Historial de versiones |
Conceptos esenciales de la configuración local
El perfil de cliente MCP predeterminado se mantiene ligero:
HPE_MCP_ROUTER_MODE=minimal
HPE_MCP_TOOLSETS=central,glp,ragActiva los productos opcionales solo cuando sean necesarios:
HPE_MCP_ACCESS_PROFILE=custom
HPE_MCP_PRODUCTS=clearpass,mist,apstra,aos8,edgeconnect,uxi,axis,design
HPE_MCP_PRODUCT_ACCESS=read-onlyProducto | Variables |
ClearPass |
|
Juniper Mist |
|
Apstra |
|
ArubaOS 8 |
|
EdgeConnect |
|
HPE Aruba UXI |
|
Axis Atmos Cloud |
|
Diagramas de diseño de red (Draw.io / Graphviz / NeXt) | ninguno requerido; opcional |
Consulta la matriz de productos opcionales para conocer el modelo completo de configuración y seguridad.
Para una sesión de confianza y con plena capacidad de escritura, usa python3 scripts/setup_wizard.py --access-profile full-read-write para que todos los controles heredados queden alineados, o usa el archivo autónomo examples/mcp-clients/stdio/full-read-write.mcp.json.
.claude/launch.json incluye un perfil de inicio mínimo correspondiente para hpe-networking-mcp para el uso diario. find_tool omite los esquemas JSON completos de forma predeterminada; solicita include_schema=true solo cuando un cliente necesite obtener la forma completa de los parámetros.
Compila o actualiza el índice de herramientas del enrutador y la base de datos de especificaciones de API. Ambos se derivan de las especificaciones OpenAPI incluidas en este repositorio, por lo que se reconstruyen de forma determinista y no necesitan scraping:
uv run python scripts/ingest_tools.py --products allEl corpus de prosa de RAG se construye por separado con ingestion/ingest_docs.py, como se describe en la guía de inicio anterior. No se distribuye como un recurso de la versión.
Consulta Primeros pasos para las credenciales, la selección de la región, las variables de entorno de productos opcionales y la ruta completa de ingesta/refresco.
Modo HTTP streamable
MCP_PORT=8010 bash scripts/run_http_router.shA continuación, apunta cualquier cliente compatible con MCP a http://127.0.0.1:8010/mcp. El servidor también ofrece los endpoints /livez, /readyz y /healthz. Las interfaces no loopback obligan a especificar MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINS y pueden protegerse con MCP_HTTP_BEARER_TOKEN. Consulta las Recetas de cliente MCP para ver configuraciones de stdio y HTTP listas para copiar y pegar.
Estructura del proyecto
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`El mapa completo del repositorio, incluidas las rutas generadas o ignoradas por git, se encuentra en Descripción general del sistema.
Validación
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 es el límite mínimo de compatibilidad de la API de la plataforma (las herramientas de la API de plataforma expuestas al proveedor, 6.711), no el total completo de backend registrados de 6.728, que también incluye la herramienta de Central Streaming solo de protocolo, el agregador de plataforma cruzada site-health, el diagnóstico local GLP preflight y las herramientas locales sin credenciales; la validación se supera al alcanzar el límite o superarlo. Consulta el Catálogo de herramientas para conocer ambos totales.
El asistente de versión ejecuta las pruebas unitarias, la evaluación opcional de RAG/API cuando existen índices, las verificación de límites del catálogo de herramientas y las comprobaciones de actualización del índice de herramientas local. Las pruebas unitarias también incluyen protecciones estáticas para el código activo de MCP/pipeline, los ejemplos de configuración de MCP de bajo token incorporados, los archivos de configuración de solo local, las rutas de la documentación del router y del conjunto de herramientas, las herramientas GET genéricas de solo lectura acotadas, los límites de lista de MCP por defecto, los límites de top_k de la búsqueda RAG y de la búsqueda general, las afirmaciones públicas sobre el número de herramientas, los docstrings que comunican el número de herramientas, las comprobaciones de hechos documentales del renderizado de RAG/índice, los enlaces e imágenes de Markdown locales rastreados, el sitemap y metadatos de robots de Pages, los argumentos de ejemplo documentados para el router, las tablas de nombres de herramientas de trabajo de flujo de productos y las tablas de variables de entorno de productos opcionales del asistente.
Proyectos relacionados y agradecimientos
hpe-networking-mcp es un kit de herramientas MCP independiente de HPE Networking, derivado delos proyectos oficiales del ecosistema MCP y del trabajo de la comunidad:
HewlettPackard/gl-mcp - servidor MCP oficial de la plataforma GreenLake
modelcontextprotocol/python-sdk - SDK de Python para MCP
karthikskumar98/central-mcp-server - servidor de la comunidad para Aruba Central MCP
nowireless4u/hpe-networking-mcp - referencia unificada de MCP para redes HPE
Aviso legal
hpe-networking-mcp es un proyecto comunitario independiente. No es un producto oficial de HPE o HPE Aruba Networking y no cuenta con el respaldo ni la asistencia de HPE.
Licencia
MIT - consulta la licencia del repositorio. La metadata de API generada y las referencias de implementación ascendentes están documentadas en THIRD_PARTY_NOTICES.md.
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