Skip to main content
Glama

hpe-networking-mcp — HPE Networking MCP 도구 키트

License Python MCP CI Docs Release Image

hpe-networking-mcp banner showing 6,144 generated operations, 6,728 backend tools, 3 minimal router tools, and nine platform surfaces with optional local RAG

배너는 현재 백엔드 카탈로그를 보여줍니다. 대규모 도구 표면은 필요할 때마다 계속 제공되는 반면, MCP 클라이언트 자체는 기본적으로 세 개의 라우터 도구만 볼 수 있습니다.

HPE 네트워킹 자동화를 위한 저토큰 Model Context Protocol(MCP) 서버: Aruba Central, HPE GreenLake Platform(GLP), ClearPass, Juniper Mist, Apstra, ArubaOS 8 마이그레이션 자동화, Excel과 유사한 마이그레이션 도구입니다.

MCP를 사용하면 AI 클라이언트(Claude Code, Copilot, Cursor, VS Code 또는 기타 MCP 호스트)가 공급업체별 플러그인 대신 공통 도구함을 호출할 수 있습니다. hpe-networking-mcp는 그러한 서버 중 하나입니다. 모든 MCP 클라이언트를 이 서버에 연결하면 소규모 저토큰 표면을 통해 검색 가능한 HPE 네트워킹 작업 카탈로그가 노출됩니다.

hpe-networking-mcp는 MCP를 지원하는 AI 클라이언트가 Aruba/HPE 문서를 검색하고, 정확한 OpenAPI 세부 정보를 조회하고, Central 상태를 점검하고, 문제 해결 워크플로를 실행하고, 구성을 관리하고, 보호된 ArubaOS 8 마이그레이션을 실행하고, 보호된 GreenLake Platform 작업을 사용할 수 있는 저토큰 방법을 제공합니다. httpx를 사용한 직접 REST 호출을 기반으로 합니다.

동일한 정보에 대한 전체 시각적 안내(대상자 선택기, 다이어그램, 쓰기 안전 흐름)는 hpe-networking-mcp GitHub Pages 사이트를 참조하세요. 이 README은 의도적으로 간결하게 유지됩니다. 자세한 가이드는 docs/ 아래에 있습니다.

라우터가 중요한 이유

MCP 클라이언트를 하나의 서버인 src/hpe_networking_mcp/mcp_servers/tool_router.py에 연결하세요. 권장되는 minimal 프로필은 클라이언트에 노출되는 도구 목록을 세 개로 유지하면서도 전체 백엔드 카탈로그를 여전히 사용할 수 있게 합니다.

  1. find_tool — 올바른 백엔드 도구를 발견합니다.

  2. invoke_read_tool — 읽기 전용 호출을 전달합니다.

  3. invoke_tool — 의도된 쓰기/파괴적 호출만 전달합니다.

Related MCP server: Network AI Assistant

어떤 사용자를 위한 것인가요?

사용자 유형

시작 방법

MCP을 처음 사용하는 사용자

아래의 5분 무인증 퀵스타트, 그 다음 Getting started

Aruba 네트워크 운영자

Example promptstyped product workflows

hpe-networking-mcp 개발자

How MCP and RAG work, Architecture overview, Contributing guide

5분 무인증 퀵스타트

Aruba Central 또는 GreenLake Platform 자격 증명을 추가하기 전에 설치를 확인하고 MCP HTTP 서버를 시작합니다.

옵션 A — 게시된 이미지를 가져오기(체크아웃 없음):

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:latest

시작이 완료되면(수 초 내) curl http://127.0.0.1:8010/livez{"status":"ok"}로 응답합니다. 루프백 전용 게시로 서버가 LAN에 노출되지 않으며, host:* 허용 목록 형식은 MCP_HOST가 루프백이 아닐 때 항상 필요합니다. 이 이미지에는 빌드 시점에 임베딩된 OpenAPI 사양 인덱스가 포함되어 있습니다. 시맨틱 검색 순위를 매기려면 추가로 ingestion-extra 재빌드(--build-arg INSTALL_EXTRAS=ingestion, Production deployment 참조)가 필요합니다.

옵션 B — 소스에서 빌드(설정 마법사, doctor 진단 및 로컬 인덱스 도구 추가):

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.sh

예상 결과:

  • 마법사는 각 완료 단계를 출력하고 마지막에 완료 요약을 출력하며, Central 또는 GLP 호출은 수행되지 않습니다. Windows 호스트에서는 LF 줄바꿈을 사용하는 셸(WSL2나 설정된 체크아웃)에서 빌드하고 실행해야 합니다. CRLF 체크아웃은 Docker 빌드 내부의 엔트리 스크립트를 손상시킵니다.

  • doctor.py는 로컬 의존성, 구성 경로 및 인덱스 검사 상태를 보고합니다. 모든 항목이 OK를 표시하거나 수정할 사항을 나열하는, 어떤 공급업체 API도 호출하지 않습니다.

  • HTTP 라우터는 Uvicorn running on http://127.0.0.1:8010 행을 출력하고 포그라운드에서 계속 실행됩니다.

MCP을 지원하는 모든 클라이언트를 http://127.0.0.1:8010/mcp에 연결한 다음, 자격 증명 없는 검색 호출을 시도하세요.

find_tool("list Aruba Central devices")

예상된 결과: 마법사가 방금 만든 로컬 도구 인덱스에서 전체 결과를 가져오고, 각 항목의 레벨과 쓰기 게이트 상태를 주석으로 표시합니다. 어떤 업체 API도 접촉되지 않습니다.

클라이언트에 연결

MCP을 지원하는 클라이언트를 http://127.0.0.1:8010/mcp(또는 stdio hpe-mcp-router 구성)에 연결하면 세 개의 라우터 도구만 표시됩니다. Claude, Copilot, VS Code, Cursor용 복사/붙여넣기 구성은 MCP client recipes에 있으며, 함께 제공되는 예시는 examples/mcp-clients/ 아래에 있습니다.

문서 검색은 별도의 로컬 빌드입니다

ask_docs와 나머지 RAG 표면에는 이 프로젝트가 의도적으로 포함하지 않는 텍스트 말뭉치가 필요합니다. 그 말뭉치는 공급업체 인증 스크리닝, 재배포하는 것은 우리가 할 일이 아닙니다. — ingestion/source_manifest.json 파일은 항상 "스크래핑된 콘텐츠를 커밋하지 마세요"라고 명시합니다. 각 공급업체의 약관을 절차한 후 직접 빌드하세요.

uv run --extra ingestion python ingestion/ingest_docs.py

시간을 충분히 계획하세요. 크롤링에 따라 수 시간이 걸리며, 첫 번째 RAG 쿼리는 ~250 MB nomic-embed-text-v1.5 임베딩 모델을 Hugging Face 캐시 안에 추가로 다운로드합니다. 자격 증명이 없다는 것은 오프라인과 위치하지 않습니다. 위 퀵스타는록 공급업체 자격 증명이 필요하지 않지만, 말뭉치 빌드와 도착 쿼리는 모두 네트워크 접근이 필요합니다.

쓰기 안전 한눈에 보기

  • find_tool은 로컬 도구 카탈로그만 검색하며 공급업체 API를 절대 호출하지 않습니다.

  • invoke_read_tool는 읽기 전용으로 표시되지 않은 백엔드 도구는 모두 차단합니다.

  • invoke_tool은 쓰기/파괴적 백엔드 도구도 전달할 수 있기 때문에 일부로 파괴적(deprecative)으로 표시되어 있습니다 — 쓰기가 의도된 경우에만 사용하세요.

  • 지원될 때 먼저 dry_run=True를 사용하세요. 실제 실행에는 도구 스키마에 따라 confirm=True 또는 MCP 확인(elicitation)이 필요합니다.

  • 쓰기는 Central를 포함한 모든 플랫폼에서 허용(opt-in)됩니다. 기본 HPE_MCP_ACCESS_PROFILE=custom 환경에서는 각 플랫폼의 쓰기 게이트를 직접 열기 전까지 닫혀 있습니다. 플랫폼별 게이트와 관계없이 모든 쓰기를 차단하려면 safe-read-only를 사용하고, 모든 로드된 플랫폼에서 일반 쓰기를 활성화하려면 full-read-write를 사용하세요.

  • 전체 읽기/쓰기 모드는 dry-run, 확인, elicitation, 또는 별도의 AOS8 롤백 게이트와 같은 전용 보호 장치를 무시하지 않습니다.

  • 자격 증명은 config/credentials.yaml 또는 환경 변수에 유지되며 커밋되지 않습니다.

변환

기본값

효과

HPE_MCP_ACCESS_PROFILE

custom

safe-read-only는 모든 쓰기를 거부하고, full-read-write는 모두 허용하며, custom은 아래의 플랫폼별 게이트를 사용합니다

HPE_MCP_<PLATFORM>_WRITES

0

1로 설정하면 해당 플랫폼 쓰기 및 파괴적 도구가 노출됩니다

파괴적 작업(reboot_device, 로드맵) — 쓰기와 동일한 플래그로 게이트되며, 이 게이트를 우회하는 별도의 "운영" 계층은 존재하지 않습니다.

이 모델의 전체 검색/전달/쓰기 안전 구조는 다음에서 확인하세요.. Tool router

프로젝트 스냅샷

영역

현재 스냅샷

도구 카탈로그

추가되지 않는 프로파일 핵심 도구 380개 / 읽기 전용 옵션 스타터 2,842개 / 읽기-쓰기 옵션 스타터 5,822개; REST/OpenAPI 플랫폼 API 백엔드 총 6,711개; 프로토콜 전용 Central Streaming 1개; 플랫폼 간 사이트 헬스 1개; 전체 백엔드 인덱스 6,728개; small-all 6,736개

기능 합계(플랫폼 API)

읽기 3,159개 / 진단 165개 / 쓰기 2,545개 / 파괴적 842개

RAG

LanceDB에 392,471개의 산문 덩어리, 30개 스크래핑 소스 분포

구조화 조회

2,734개 엔드포인트, 6,363개 스키마, 31,432개 필드, 104개 보안 공지, 345개 생애주기 기록

API 출처

Aruba ReadMe 저장소, 공식 Juniper Mist/Apstra 소스, 고정된 GLP 및 EdgeConnect 스냅샷, SHA 고정 Axis 생성기

옵션 플랫폼

ClearPass, Juniper Mist, Apstra, ArubaOS 8, EdgeConnect, UXI, Axis Atmos Cloud, 대기열이 필요 없는 design 다이어그램 도구

안전

플랫폼별 쓰기 게이트, dry-run + 확인, HTTP 호스트/오리진 및 bearer 제어, 자격 증명으로 잠긴 라이브 테스트 구성

다음 백엔드별 전체 도구 수는 도구 카탈로그에 정리되어 있습니다. 최신 태그 릴리스에 추가된 모든 내용은 0.9.0 릴리스 노트에서, 재현 가능한 도구/벤치마크 비교는 기능 격차 매트릭스에서 확인하세요.

작업 중심 가이드

필요 사항

가이드

전체 설정, 자격 증명, MCP 클라이언트 연결

시작하기

복사/붙여넣기용 stdio 또는 스트리밍 HTTP 클라이언트 구성

MCP 클라이언트 레시피

라우터 모드, 도구 세트, 안전한 디스패치 심층 분석

도구 라우터

예상 호출 형태가 포함된 실제 프롬프트

예제 프롬프트

ClearPass, Mist, Apstra, AOS8, EdgeConnect, UXI 또는 Axis 활성화

선택 제품 시작 가이드

타입 지정 제품별 워크플로 로드맵

제품 워크플로

설정, 자격 증명, HTTP 또는 카탈로그 문제 해결

문제 해결

아키텍처, 데이터 흐름, 안전 다이어그램

시스템 개요

모든 백엔드의 도구 수 및 적용 범위

도구 카탈로그

종합적인 작업 기반 시각적 게이트웨이

hpe-networking-mcp GitHub Pages

목적별로 정리된 모든 문서 페이지

docs/README.md

secure-ssid/centralmcp에서 마이그레이션

MIGRATION.md

기여, 지원 요청, 보안 이슈 신고

CONTRIBUTING.md, SUPPORT.md, SECURITY.md

버전 이력

CHANGELOG.md

로컬 설정 필수 사항

기본 MCP 클라이언트 프로파일은 간결하게 유지합니다.

HPE_MCP_ROUTER_MODE=minimal
HPE_MCP_TOOLSETS=central,glp,rag

선택 제품은 필요할 때만 활성화하세요.

HPE_MCP_ACCESS_PROFILE=custom
HPE_MCP_PRODUCTS=clearpass,mist,apstra,aos8,edgeconnect,uxi,axis,design
HPE_MCP_PRODUCT_ACCESS=read-only

제품

변수

ClearPass

CLEARPASS_BASE_URL, CLEARPASS_API_TOKEN

Juniper Mist

MIST_HOST, MIST_API_TOKEN

Apstra

APSTRA_BASE_URL, 권장: APSTRA_USERNAME/APSTRA_PASSWORD, 선택: APSTRA_API_TOKEN

ArubaOS 8

AOS8_BASE_URL, 권장: AOS8_USERNAME/AOS8_PASSWORD, 선택: AOS8_API_TOKEN, 선택: AOS8_CLIENT_IP, 선택: AOS8_SESSION_TTL_SECONDS

EdgeConnect

EDGECONNECT_BASE_URL, EDGECONNECT_API_TOKEN, 선택: EDGECONNECT_AUTH_HEADER, 엔드포인트별 EDGECONNECT_AI_SESSION_AUTHORIZATION

HPE Aruba UXI

UXI_CLIENT_ID, UXI_CLIENT_SECRET, 선택: UXI_BASE_URL, 선택: UXI_TOKEN_URL

Axis Atmos Cloud

AXIS_BASE_URL, AXIS_API_TOKEN

네트워크 설계 다이어그램 (Draw.io / Graphviz / NeXt)

필수 없음, 선택: HPE_MCP_DIAGRAM_ICON_DIR

전체 설정 및 안전 모델에 대한 자세한 내용은 선택 제품 매트릭스를 참조하세요.

신뢰할 수 있고 완전한 쓰기 권한이 있는 세션을 사용하려면 python3 scripts/setup_wizard.py --access-profile full-read-write를 실행하여 모든 레거시 게이트가 정렬되도록 하거나, 자체 포함된 examples/mcp-clients/stdio/full-read-write.mcp.json 파일을 사용하세요.

.claude/launch.json에는 일상적인 사용을 위한 최소 hpe-networking-mcp 런치 프로파일이 포함되어 있습니다. find_tool은 기본적으로 전체 JSON 스키마를 생략하므로, 클라이언트가 전체 매개변수 형태를 필요로 할 때에만 include_schema=true를 요청하세요.

라우터 도구 인덱스와 API 스펙 데이터베이스를 빌드하거나 새로고침하세요. 둘 다 이 저장소에 커밋된 OpenAPI 스펙에서 파생되므로, 동일하게 재빌드되며 스크래핑이 필요 없습니다.

uv run python scripts/ingest_tools.py --products all

RAG 텍스트 코퍼스는 앞서 설명한 대로 ingestion/ingest_docs.py에서 별도로 빌드됩니다. 릴리스 자산으로 배포되지는 않습니다.

자격 증명, 지역 선택, 선택 제품 환경 변수 및 전체 수집/새로고침 경로에 대해서는 시작하기를 참조하세요.

스트리밍 HTTP 모드

MCP_PORT=8010 bash scripts/run_http_router.sh

그런 다음 MCP 호환 클라이언트를 http://127.0.0.1:8010/mcp로 지정하세요. 서버는 /livez, /readyz, /healthz도 함께 노출합니다. non-loopback 바인딩에는 명시적인 MCP_ALLOWED_HOSTS/MCP_ALLOWED_ORIGINS가 필요하며, MCP_HTTP_BEARER_TOKEN으로 보호할 수 있습니다. 복사/붙여넣기용 stdio 및 HTTP 구성은 MCP 클라이언트 레시피를 참조하세요.

프로젝트 구조

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`

생성된 경로와 git-ignored 경로를 포함한 전체 저장소 맵은 시스템 개요에 있습니다.

검증

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는 플랫폼 API 호환성 최소 기준입니다(플랫폼 대상 6,711개 API 도구). 이는 전체 등록 백엔드 수인 6,728개와는 다릅니다. 6,728개에는 프로토콜 전용 Central Streaming 도구, 크로스 플랫폼 site-health 애그리게이터, 로컬 GLP 사전 점검 진단 도구, 자격 증명 없는 로컬 도구도 포함됩니다. 검증은 최소 기준 이상에서 통과합니다. 두 합계는 모두 도구 카탈로그를 참조하세요.

릴리스 헬퍼는 단위 테스트, 인덱스가 있을 경우 선택적 RAG/API 평가, 도구 카탈로그 최소값 확인, 로컬 도구 인덱스의 최신 상태 확인을 실행합니다. 단위 테스트에는 활성 MCP/파이프라인 코드, 커밋된 저토큰 MCP 구성 예제, 로컬 전용 구성 파일, 라우터 제품/툴셋 문서, 제한된 일반 읽기 전용 GET 도구, MCP 목록 기본 상한, RAG/검색 top\_k 상한, 공개된 도구 수 주장, 도구 수 docstring, 렌더링된 RAG/인덱스 문서-사실 주장, 추적되는 Markdown 로컬 링크/이미지, Pages 사이트맵 및 robots 메타데이터, 문서화된 라우터 예제 인수, 제품 워크플로 도구명 표, 위저드 선택 제품 환경 변수 표에 대한 정적 가드도 포함됩니다.

관련 프로젝트 및 감사의 말

hpe-networking-mcp는 공식 MCP 생태계와 커뮤니티 작업을 참고하여 개선된 독립적인 HPE Networking MCP 툴킷입니다.

고지 사항

hpe-networking-mcp는 독립적인 커뮤니티 프로젝트입니다. 공식 HPE 제품이 아니며 HPE Aruba Networking 제품도 아니고, HPE의 보증을 받거나 HPE가 지원하지 않습니다.

라이선스

MIT - 저장소 라이선스를 참조하세요. 생성된 API 메타데이터와 업스트림 구현 참조는 THIRD_PARTY_NOTICES.md에 문서화되어 있습니다.

Available Tools

3 tools
find_toolA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
originNo
serverNo
platformNo
capabilityNo
operation_idNo
include_schemaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_toolA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
cursorNo
argumentsNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_toolA
Destructive

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.)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
argumentsNo

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A4.6/5.0
Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

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