MCP Server for Consul service discovery and service mesh
Six tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. All tools are READ_ONLY, which is good for safety, but descriptions lack actionable context for LLM selection. Parameter descriptions are present but minimal (10-30 chars). No output schemas documented. Tool names follow verb_noun pattern correctly (get_*, create_*, analyze_*). Missing error handling guidance and recovery paths.
Analyzes a specific service including its health, connections, and metrics
Generates a Mermaid diagram of the service mesh topology
Retrieves health checks from Consul, optionally filtered to failing checks only
Gets service connections information, optionally filtered to failing connections only
Retrieves metrics for a specific service
Gets all services registered in Consul
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., service_id, health_status). Responses are unstructured.
Parameter descriptions are too brief (10-30 chars). 'If true, return only failing health checks' is minimal; missing context on when to use this filter vs. calling without it, or what 'failing' means (critical? warning?).
Tool descriptions lack actionable context. 'Gets all services registered in Consul' does not explain when to call this vs. get_service_connections or analyze_service. LLMs cannot disambiguate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No error handling guidance. If Consul is unreachable or a service does not exist, tools return nothing. Descriptions do not explain recovery paths (e.g., 'If service not found, try get_services() first').
analyze_service and get_service_metrics have default service_name='consul'. Defaults should not assume a specific service exists; this invites silent failures when 'consul' is not registered.