Streamable HTTP MCP for Elasticsearch, SkyWalking, and Prometheus
Observability MCP demonstrates solid definition quality with 8 well-named tools following verb_noun conventions (list_*, search_*, query_*, get_*). All tools have descriptions (avg 95 chars, within 10-1024 baseline). Input schemas are complete with proper JSON Schema types, enums, and constraints (e.g., limit 1-1000, level enums). However, output schemas are not documented, responses are inferred from implementation but not formally declared in tool definitions. Parameter descriptions are present but terse (avg 45 chars vs 72 baseline). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Error handling is minimal, no recovery guidance or actionable error messages visible in source.
List visible values for one Prometheus label.
Return a complete test-environment SkyWalking trace span chain.
List allowed search targets, excluding system indices by default.
List services that have reported to the test SkyWalking environment.
Execute an instant Prometheus-compatible query.
Execute a range Prometheus-compatible query.
Output schemas not documented. Tool definitions lack return type documentation, forcing LLMs to infer response structure. This violates pattern:tool and pattern:response-shaper.
No tool annotations despite all tools being read-only. Missing readOnlyHint annotations prevent LLMs from understanding safety properties and optimizing caching/retry logic.
Minimal error handling. No recovery guidance in error responses. When Elasticsearch or SkyWalking calls fail, LLMs receive no actionable next steps (e.g., 'Try a narrower index' or 'Check service availability').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Search production/formal environment logs stored in Elasticsearch.
Search test/testing environment logs stored in SkyWalking.
Parameter descriptions are terse (avg 45 chars vs 72 baseline). query_instant and query_range lack format guidance for PromQL expressions and timestamp formats, inviting invalid input.
No pagination guidance in list_skywalking_services. Unlike search_logs (which has cursor), this tool lacks next_cursor or offset/limit pattern, risking context window overflow on large result sets.