MCP server for OpenTelemetry instrumentation assistance, providing tools for code analysis, documentation retrieval, GitHub integration, and instrumentation guidance.
The OpenTelemetry MCP server has reasonable naming conventions (all tools use get_/fetch pattern) and complete parameter schemas with types and descriptions. However, descriptions are inconsistent in depth and quality. Most tool descriptions are 10-50 characters (below the 194-char baseline), missing context on WHEN to use each tool and what distinguishes similar tools. Output schemas are not documented anywhere in the code provided. Error handling information is absent from tool definitions. No recovery guidance or actionable error messages are specified. The server provides 9 tools covering OpenTelemetry documentation, repositories, and examples, domain coverage is reasonable but tool composition could be tighter (e.g., get_docs_by_language and get_demo_services_by_language have overlapping concerns).
Fetch OpenTelemetry demo services filtered by programming language
Fetch documentation for OpenTelemetry demo services
Fetch OpenTelemetry documentation for a specific programming language
Fetch instrumentation score rules with optional filtering by rule ID, impact level, or target
Fetch the instrumentation score specification document
Fetch list of OpenTelemetry repositories and their metadata from GitHub
Fetch issues from an OpenTelemetry repository
Descriptions are uniformly brief (10-55 chars) and lack context on tool selection criteria. Baseline is 194 chars; these descriptions do not explain WHEN to call each tool or what distinguishes get_docs_by_language from get_demo_services_by_language.
Output schemas are not documented in the provided code. Tools return data but LLMs cannot plan downstream calls without knowing field names, types, and required references (e.g., what fields does get_instrumentation_score_rules return? Are there IDs for chaining?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 49 | - | v1 |
Fetch OpenTelemetry semantic conventions specification
Search for issues in an OpenTelemetry repository by keywords
No error handling guidance in tool definitions. If a repository is not found, if the GitHub API rate-limits, or if a language code is invalid, there are no recovery paths documented. LLMs receive no actionable error classification (retryable vs. user-fixable vs. fatal).
Potential tool composition overlap: get_docs_by_language and get_demo_services_by_language both filter by language but serve different purposes. Naming and descriptions should clarify the distinction: one returns language-specific SDK docs, the other returns instrumented demo services in that language.
Parameter descriptions could reference format constraints. E.g., 'convention_type' in get_semantic_conventions says 'Type of semantic convention to fetch (e.g., 'trace', 'metrics', 'logs')', this reads like an example, not an enum. Declare valid values formally in schema and describe them as a set.
Tools that return lists (get_opentelemetry_repos, get_repo_issues, search_repo_issues) lack pagination hints in their schemas. No visible documentation of limits, offset/page parameters, or total count fields. If repos or issues lists are large, the response could exhaust context.