MCP server that provides access to Tempo instances in a Kubernetes cluster, listing instances and proxying MCP tools from Tempo's embedded MCP servers
The Tempo MCP Gateway defines 1 visible tool with basic structure but significant documentation gaps. The 'list-instances' tool has a short description (87 chars, within the acceptable 10-1024 range) and a clear action verb, but the input schema is empty (no parameters documented), which is a critical flaw. Tool annotations are present (readOnlyHint=true, destructiveHint=false, openWorldHint=false), which is good, but parameter descriptions are entirely absent. The server registers proxied tools dynamically from remote Tempo instances, adding complexity that is not well-documented in the base tool definitions. Error handling in the visible code returns error strings via mcp.NewToolResultError(), which is minimal, no guidance on recovery actions or error categorization. The tool follows a sensible verb_noun pattern ('list-instances'), matching baseline conventions, but lacks the parameter-level documentation required for production-grade agents. The descriptions meet length requirements but lack the 'WHAT/WHEN/WHY' depth that LLMs rely on for tool selection context.
List all Tempo instances. The assistant should display the instances in a table.
Empty input schema for list-instances: no parameters are documented, yet the tool accepts a CallToolRequest with a Header field. Input schema completeness cannot be verified.
Proxy tool registration via registerProxiedTools() adds three required parameters (tempoNamespace, tempoName, tenant) dynamically at runtime, but these are not visible in static source analysis and are not documented in the base server definition. This violates the principle that tool schemas must be discoverable and stable.
Error handling returns bare error strings (e.g. 'Invalid priority') without recovery guidance. Errors do not categorize as retryable, user-fixable, or fatal, leaving the LLM no actionable next step.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 62 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Tool description for list-instances is minimal (87 chars) and does not explain prerequisites, expected output structure, or when to call this vs. other discovery tools. 'The assistant should display the instances in a table' is prescriptive but lacks agent context.
Output schema is not documented. The list-instances tool returns a structured map with 'instances' key, but the structure of the instances array (fields, types, required attrs) is not specified anywhere in the source code or comments.