MCP server for managing infrastructure across SSH, Telnet, Kubernetes, Grafana, Proxmox, and Cisco devices
Infrastructure MCP has 36 tools with consistent naming (verb_noun pattern: list_, get_, run_, etc.) and basic descriptions. However, critical gaps undermine production readiness: (1) Input schemas are inferred from the tool list but NOT visible in source code, no explicit JSON Schema definitions found in the provided code samples. (2) Parameter descriptions exist but are minimal (avg ~40 chars vs baseline 72 chars). (3) Output schemas are completely undocumented, no tool returns a documented response structure. (4) Error handling is structured (toolerr package with categories, recommendations, retryable flags) but only 2 tools shown; unclear if all 36 use it. (5) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 10 WRITE-risk tools. (6) Secrets handling appears correct (no credentials in params, SSH/Telnet via inventory), but no audit logging visible. Average per-tool score: 58.
Backup Cisco device running configuration
Get Cisco device interface information
Get Cisco device inventory information
Get Cisco device logs
Get Cisco device version information
Get CPU usage information from a Linux server
Get disk usage information from a Linux server
List Docker images on a server
Output schemas completely undocumented. No tool returns a documented response structure. LLMs cannot plan downstream calls or extract required fields without trial-and-error.
Input schemas inferred but not explicitly visible in source code. No JSON Schema definitions found for any of the 36 tools. Cannot verify parameter types, constraints, or required fields.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 10 WRITE-risk tools (run_command, docker_restart, proxmox_start_vm, proxmox_stop_vm, proxmox_snapshot). Agents cannot distinguish safe from destructive operations.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2025-06-18+ | v2 |
Get logs from a Docker container
List running Docker containers on a server
Restart a Docker container
Get Docker container statistics
List failed systemd services on a Linux server
Get Grafana alerts
Get Grafana annotations
List Grafana dashboards
Execute a Grafana query
Get recent journal errors from a Linux server
Get kernel version from a Linux server
Describe a Kubernetes resource
Get Kubernetes events
List Kubernetes pods
Get logs from a Kubernetes pod
List Kubernetes nodes
List servers known to the inventory, optionally filtered by tag. Never returns credentials.
Get memory usage information from a Linux server
List Proxmox nodes
Create a Proxmox VM snapshot
Start a Proxmox virtual machine
Stop a Proxmox virtual machine
List Proxmox tasks
List Proxmox virtual machines
Check if a Linux server requires a reboot
Execute a command on a remote server via SSH or Telnet
List running processes on a Linux server
Get system uptime from a Linux server
Parameter descriptions are minimal (avg ~40 chars vs baseline 72 chars). E.g., 'target' described as 'inventory name of the target server' lacks format/constraint guidance. No enums for constrained values (e.g., resource_type in kubectl_describe).
No pagination support visible. Tools like list_servers, docker_ps, kubectl_get_pods, grafana_dashboards lack limit/offset/cursor parameters. Large result sets will blow context windows.