Skip to main content
Glama
liatrio-labs

otel-instrumentation-mcp

by liatrio-labs

---

OpenTelemetry MCP Server

A Model Context Protocol (MCP) server that bridges AI coding assistants (like ClaudeCode, OpenCode, Windsurf, and Cursor) with the OpenTelemetry ecosystem. It provides real-time access to OpenTelemetry repositories, documentation, examples, semantic conventions, and the instrumentation score specification to help engineers implement high-quality observability in their applications.

Why use this?

OpenTelemetry has extensive documentation and many implementation patterns. This MCP server helps AI assistants:

  • Navigate the complexity of OpenTelemetry documentation

  • Provide accurate, up-to-date instrumentation code

  • Follow best practices and semantic conventions

  • Generate instrumentation that scores qualitatively high

  • Avoid common pitfalls and anti-patterns

Related MCP server: AI Workflow Intelligence

Features

The MCP server provides tools and prompts to help AI assistants with OpenTelemetry tasks:

  • Repository & Issue Access - Browse OpenTelemetry repositories and search issues

  • Examples & Documentation - Language-specific examples and documentation

  • Semantic Conventions - Access to standardized attribute definitions

  • Instrumentation Scoring - Evaluate telemetry quality based on best practices

  • AI Prompts - Analyze code and generate instrumentation suggestions

Additional capabilities:

  • Self-Instrumented - Full distributed tracing with OpenTelemetry

  • Multi-Transport - Supports stdio (local), HTTP, and SSE protocols

  • Production Ready - Kubernetes manifests, health checks, graceful shutdown

  • GitHub Integration - Authenticated API access via GitHub App or Personal Access Token

Security Notice

Currently supported authentication methods:

  • GitHub Personal Access Token (PAT) - For individual, local use.

  • GitHub App - For hosted deployments.

IMPORTANT: OAuth support is planned for future implementations. Ensure your credentials are properly secured and never commit them to version control.

Quick Start

Prerequisites

  • Python 3.13+

  • uv package manager

  • GitHub authentication (Personal Access Token or GitHub App credentials)

Installation

  1. Clone the repository:

git clone https://github.com/liatrio-labs/otel-instrumentation-mcp.git
cd otel-instrumentation-mcp
  1. Install dependencies:

uv sync
  1. Set up GitHub authentication (choose one):

Option A: Personal Access Token

export GITHUB_TOKEN="github_pat_..."

Option B: GitHub App (recommended for production)

export GITHUB_APP_ID="123456"
export GITHUB_INSTALLATION_ID="654321"
export GITHUB_APP_PRIVATE_KEY_PATH="/path/to/private-key.pem"

NOTE: Additional environment variables can be set, like the OTEL_EXPORTER_OTLP_ENDPOINT. For a list of available environment variables, see .env.examples

  1. Run the MCP server:

uv run otel-instrumentation-mcp

Local Development

For development with hot reload and local Kubernetes:

# Install development dependencies
task install

# Run with Tilt (includes local Kubernetes, OpenTelemetry Collector, hot reload)
tilt up

# Or run development server standalone with hot reload
task dev

# Run tests
task test

# Run linting and formatting
task lint

# Run all checks (test + lint)
task checks

Usage Examples

Configuration with AI Assistants

Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "otel-instrumentation-mcp": {
      "command": "uv",
      "args": ["run", "otel-instrumentation-mcp"],
      "cwd": "/path/to/otel-instrumentation-mcp",
      "env": {
        "GITHUB_TOKEN": "your_github_token"
      }
    }
  }
}

VS Code

VS Code supports MCP servers through the GitHub Copilot extension (requires Copilot Chat). Add to your workspace's .vscode/mcp.json file:

{
  "servers": {
    "otel-instrumentation-mcp": {
      "command": "uv",
      "args": ["run", "otel-instrumentation-mcp"],
      "cwd": "/path/to/otel-instrumentation-mcp",
      "env": {
        "GITHUB_TOKEN": "your_github_token"
      }
    }
  }
}

Alternatively, add to your VS Code settings.json for global configuration:

{
  "mcp": {
    "servers": {
      "otel-instrumentation-mcp": {
        "command": "uv",
        "args": ["run", "otel-instrumentation-mcp"],
        "cwd": "/path/to/otel-instrumentation-mcp",
        "env": {
          "GITHUB_TOKEN": "your_github_token"
        }
      }
    }
  }
}

Note: Ensure uv is in your PATH or use the full path to the uv executable. After adding the configuration, reload VS Code and the MCP server should appear in Copilot Chat's available tools.

Windsurf or Cursor

Add to your MCP configuration file:

{
  "mcpServers": {
    "otel-instrumentation-mcp": {
      "command": "uv",
      "args": ["run", "otel-instrumentation-mcp"],
      "cwd": "/path/to/otel-instrumentation-mcp",
      "env": {
        "GITHUB_TOKEN": "your_github_token"
      }
    }
  }
}

Testing and Development

MCP Inspector

npx @modelcontextprotocol/inspector uv run otel-instrumentation-mcp

Using HTTP/SSE Transports (Remote Access)

For network-accessible deployments:

# HTTP Transport
SERVICE_PORT=8080 uv run otel-instrumentation-mcp
# Access at: http://localhost:8080/mcp/

# SSE Transport
MCP_TRANSPORT=sse MCP_PORT=8080 uv run otel-instrumentation-mcp
# Access at: http://localhost:8080/

Note: Remote access currently requires GitHub authentication configured via environment variables. OAuth support for client authentication is coming soon.

Real-World Example: Instrumenting Your Code

Once configured, you can ask your AI assistant to help with OpenTelemetry instrumentation:

User: Help me add OpenTelemetry instrumentation to my Python Flask application

AI Assistant: I'll help you add OpenTelemetry instrumentation to your Flask
application. Let me first check the latest OpenTelemetry documentation and
examples for Python.

[Uses get_opentelemetry_docs_by_language tool]
[Uses get_opentelemetry_examples_by_language tool]
[Uses get_semantic_conventions tool]

Based on the latest OpenTelemetry documentation, here's how to properly
instrument your Flask application...

[Provides relatively accurate* up-to-date instrumentation code following best
practices]

Production Deployment

Kubernetes

The repository includes Kubernetes manifests with:

  • Deployment with health checks and resource limits

  • Service for internal communication

  • OpenTelemetry Collector integration

  • ConfigMaps for feature flags

  • Support for different environments via the Kustomize overlay pattern (dev, local, prod)

# Example
kubectl apply -k manifests/overlays/prod

Configuration

Environment Variables

Variable

Description

Default

SERVICE_NAME

Service name for telemetry

otel-instrumentation-mcp-server

SERVICE_VERSION

Service version

0.15.0

SERVICE_INSTANCE_ID

Instance identifier

local

SERVICE_PORT

Port for HTTP transport (overrides MCP_PORT)

-

MCP_TRANSPORT

Transport type (stdio, http, sse)

stdio

MCP_HOST

Host binding for HTTP/SSE

Auto-detected

MCP_PORT

Port for HTTP/SSE transport

8080

OTEL_EXPORTER_OTLP_ENDPOINT

OTLP collector endpoint

http://localhost:4317

GitHub Authentication

Choose one authentication method:

GitHub App (Recommended):

  • GITHUB_APP_ID - GitHub App ID

  • GITHUB_INSTALLATION_ID - Installation ID

  • GITHUB_APP_PRIVATE_KEY_PATH - Path to private key

Personal Access Token:

  • GITHUB_TOKEN - GitHub personal access token

Development

Running Tests

# Run all tests
task test

# Run specific test
task test-single -- tests/test_main.py::test_list_opentelemetry_repos_tool

# Run with coverage
task test-coverage

Linting and Formatting

# Run all checks
task checks

# Format code
task lint

Development Server

# Start with hot reload
task dev

# Custom port
SERVICE_PORT=3000 task dev

Observability

The MCP server is fully instrumented with OpenTelemetry, providing:

  • Distributed tracing for MCP operations

  • Custom semantic conventions for MCP and GenAI specific attributes

  • Integration with standard OpenTelemetry collectors

  • High instrumentation quality (measured with Instrumentation Score)

View traces in your preferred backend (Jaeger, Honeycomb, Datadog, Dash0, etc.) by configuring OTEL_EXPORTER_OTLP_ENDPOINT.

Architecture

  • FastMCP Framework - Provides MCP protocol implementation

  • OpenTelemetry SDK - Full observability with auto-instrumentation

  • Async Python - High-performance async/await patterns

  • GitHub GraphQL API - Efficient data fetching from repositories

  • Multi-transport - Flexible deployment options (stdio, HTTP, SSE)

Roadmap

Coming Soon

  • OAuth Support - Full OAuth flow for MCP authentication

  • Caching Layer - Native caching for GitHub API responses to improve performance

  • Weaver Custom Semantic Conventions - Support for custom semantic convention registries through Weaver.

Known Limitations

  • OAuth flow for MCPs isn't implemented yet.

  • GitHub API rate limits apply organizationally when self-hosting through an app.

  • Currently optimized for OpenTelemetry repositories only.

Contributing

We welcome contributions! Please submit issues and pull requests on GitHub. See CONTRIBUTING.md to get started.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Support

Notice of Attribution

This is a derived worked from @sgsharma's original otel-instrumentation-mcp at this commit.

Available Tools

9 tools
get_instrumentation_score_rulesA

Get Instrumentation Score rules

Returns scoring rules from the Instrumentation Score specification. Rules can be filtered by ID, impact level, or target type.

Args: rule_ids: Comma-separated list of rule IDs to fetch (e.g., "RES-001,SPA-001") impact_levels: Comma-separated list of impact levels (e.g., "Critical,Important") targets: Comma-separated list of targets (e.g., "Resource,Span")

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idsNo
impact_levelsNo
targetsNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It indicates a read operation (returns rules) but omits details on authorization needs, rate limits, data volume, error handling, or whether unfiltered calls return all rules. Minimal but adequate for a simple retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: a two-sentence overview followed by a clean bullet-style args list. Every sentence adds value, with no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should clarify what is returned. It states 'returns scoring rules' but does not specify the structure, whether filtering is case-sensitive, or default behavior when no parameters are provided. Some gaps remain for a fully self-contained tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0% description coverage (no descriptions on properties). The description compensates fully by explaining each parameter's purpose, expected format (comma-separated lists), and providing example values for each, which adds critical meaning beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves scoring rules from the Instrumentation Score specification, with filtering options. It distinguishes itself from sibling tool get_instrumentation_score_spec by specifying it returns individual rules, not the spec.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions filtering parameters but provides no explicit guidance on when to use this tool versus its siblings, such as get_instrumentation_score_spec or the OpenTelemetry search tools. No when-to-use or when-not-to-use advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_instrumentation_score_specA

Get the Instrumentation Score specification

Returns the main specification document for the Instrumentation Score standard, which provides a standardized metric for assessing OpenTelemetry instrumentation quality.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description correctly indicates it's a read operation returning the spec document. It could be improved by stating the format (e.g., text, JSON) but is adequate for a simple retrieval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with no wasted words. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains what is returned (specification document) but could specify the media type or structure. Overall, it's sufficiently complete for a parameterless tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline is 4. The description adds context about the spec's purpose, adding value beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets the 'Instrumentation Score specification', using a specific verb and resource. It distinguishes from the sibling 'get_instrumentation_score_rules' which focuses on rules rather than the spec.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when the spec is needed but lacks explicit guidance on when to use this tool vs alternatives like get_instrumentation_score_rules or other documentation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_opentelemetry_docs_by_languageB

Get OpenTelemetry documentation by language and version

Returns OpenTelemetry documentation for a specific programming language and version

Args: language: Programming language (e.g. python, java, go) version: Version to retrieve (e.g. "v1.2.3", "latest", or None for latest)

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNopython
versionNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It does not disclose any behavioral traits such as authentication needs, rate limits, or error behavior (e.g., what happens if the version is not found). The description is minimal and lacks transparency beyond the basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences plus a compact argument list. Every sentence is necessary and front-loads the main purpose. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (2 simple parameters, no output schema) and the presence of related siblings, the description covers the essential function and parameter details. However, it lacks behavioral information and does not describe the return format, which would be helpful for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate. It explains both parameters: language (with examples like python, java, go) and version (with examples like v1.2.3, latest, or None for latest). This adds meaningful semantics beyond the schema's type and default fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns OpenTelemetry documentation for a specific language and version. It uses a specific verb ('Get') and identifies the resource ('OpenTelemetry documentation'). However, it does not differentiate from sibling tools like get_opentelemetry_examples_by_language, which is a minor gap.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There are no explicit when-not-to-use or prerequisite conditions. The sibling tools handle related topics (examples, rules, specs), but no usage context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_opentelemetry_examplesB

Get OpenTelemetry examples

Returns a list of OpenTelemetry demo services and examples

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description only states that the tool returns a list without any additional behavioral context such as the structure of the list, potential filtering, or any side effects. For a simple read tool, more transparency about the output would be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two short sentences, front-loading the purpose. No extraneous information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no parameters and no output schema, the description lacks details about what constitutes an 'example', the format of the returned list, or how it relates to the sibling tools. More context would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description adds no param-specific information, but none is needed. Baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets OpenTelemetry examples and returns a list of demo services and examples. However, it does not differentiate from the sibling tool 'get_opentelemetry_examples_by_language', which suggests this may return all examples without filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool versus other sibling tools like 'get_opentelemetry_examples_by_language' or 'search_opentelemetry_issues'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_opentelemetry_examples_by_languageB

Get OpenTelemetry examples by language

Returns OpenTelemetry examples for a specific programming language

Args: language: Programming language (e.g. python, java, go)

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNopython

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description does not disclose any behavioral traits such as read-only, pagination, or error conditions. For a retrieval tool, basic safety info is absent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three lines, includes a redundant title line (same as tool name). Could be more concise by removing the first line or merging with description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers basic purpose and parameter. Missing info about response format or potential limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description adds meaning by stating 'Programming language (e.g. python, java, go)'. However, it is minimal and does not list supported languages or format requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly specifies verb 'Get', resource 'OpenTelemetry examples', and filter 'by language'. Distinguishes from sibling 'get_opentelemetry_examples' which likely returns all examples without language filter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies use when examples for a specific language are needed, but no explicit when-not-to-use or alternatives mentioned. Sibling tools exist but are not referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_semantic_conventionsB

Get OpenTelemetry semantic conventions from the semantic-conventions repository

Returns semantic conventions from the OpenTelemetry semantic-conventions repository as markdown documentation files.

Args: category: Optional category filter (e.g., "http", "database", "messaging") count: Maximum number of files to retrieve (default: 50)

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
countNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It reveals that the tool returns markdown documentation files, which is helpful. However, it does not disclose other behaviors like readability, authentication needs, or effects of invalid parameters. Acceptable but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with slight redundancy (first two both describe returning conventions). Could be more concise by merging, but not overly verbose. Front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose and parameters adequately for a retrieval tool with two optional params. Lacks details on return value structure (list of files, content?) and error handling. With no output schema, more specificity would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description compensates well by explaining both parameters: 'category' as optional filter, 'count' as maximum number of files with default 50. This adds meaningful context beyond the schema's type/default fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'Get' and resource 'OpenTelemetry semantic conventions' from the repository, and specifies output format as 'markdown documentation files'. While not extremely detailed, it effectively distinguishes from sibling tools focused on instrumentation scoring and docs by language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies use by listing optional parameters (category, count), but no explicit guidance on when to use or avoid this tool vs alternatives. Sibling tools cover different topics, so context is somewhat clear but lacks explicit usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_opentelemetry_issuesC

Get OpenTelemetry repository issues

Returns issues from a specific OpenTelemetry repository

Args: repo: Repository name (e.g. opentelemetry-python)

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoopentelemetry-python

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as whether returned issues are open/closed, pagination, limits, or authentication needs. It only states it returns issues.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but the second sentence ('Returns issues from a specific OpenTelemetry repository') is redundant with the first, slightly reducing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description does not describe what the returned data contains (e.g., issue IDs, titles) or mention pagination/limits. This leaves the agent with incomplete information for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description adds an example value ('opentelemetry-python') but does not specify allowed values, format, or constraints beyond naming the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'Get OpenTelemetry repository issues' and explains it returns issues from a specific repo. It is clear but does not distinguish from sibling 'search_opentelemetry_issues' which may offer filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives like search_opentelemetry_issues. The description only implies it is for specific repos.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_opentelemetry_reposB

List OpenTelemetry repositories

Returns a list of OpenTelemetry repositories

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description indicates the tool returns a list, which is basic behavioral information. Since there are no annotations to contradict, and no parameters, the description is minimally sufficient but lacks any additional details like pagination or filtering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two short sentences, but it is slightly redundant ('List...' and 'Returns a list...'). Still, it is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, output schema, or annotations, the description provides the minimum. It confirms the tool returns a list but does not specify any constraints or ordering, which could be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema coverage is 100% by default. The baseline for 0 parameters is 4, and the description does not need to add parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'OpenTelemetry repositories', making the purpose clear. However, it does not distinguish this tool from siblings like 'list_opentelemetry_issues', leaving room for ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as 'list_opentelemetry_issues' or other OpenTelemetry tools. The description lacks usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_opentelemetry_issuesB

Search OpenTelemetry repository issues

Search for issues in a specific OpenTelemetry repository using keywords

Args: repo: Repository name (e.g. opentelemetry-python) keywords: Keywords to search for in issues

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoopentelemetry-python
keywordsNometrics

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description lacks disclosure of behavioral traits such as result limit, pagination, authentication needs, or error handling. Minimum detail on what the tool does beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly concise but repeats the purpose in two sentences (title then explanation). It could be more streamlined. Structure is adequate with clearly labeled args.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema or annotations, the description covers the essential purpose and parameters but lacks details on return format, ordering, or limitations. It is functionally complete for a simple search but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains both parameters (repo and keywords) with examples, adding meaning beyond the bare schema which has no descriptions. Schema coverage is 0%, so this compensation is valuable, though more detail (e.g., keyword format) could be added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches issues in a specific OpenTelemetry repo using keywords, distinguishing it from list_opentelemetry_issues which likely lists all. However, it does not explicitly contrast with siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when searching with keywords but provides no guidance on when not to use it or alternatives like list_opentelemetry_issues. No prerequisites or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv0.5.0
    • First observedget_instrumentation_score_rules
    • First observedget_instrumentation_score_spec
    • First observedget_opentelemetry_docs_by_language
    • First observedget_opentelemetry_examples
    • First observedget_opentelemetry_examples_by_language
    • First observedget_semantic_conventions
    • First observedlist_opentelemetry_issues
    • First observedlist_opentelemetry_repos
    • First observedsearch_opentelemetry_issues

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct purpose: rules, spec, docs, examples, semantic conventions, repos, issues, and search. There's no overlap; even the two 'by language' tools differentiate between documentation and examples.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, using clear prefixes like get_, list_, search_. Suffixes like _by_language are applied uniformly, making the naming predictable and easy to navigate.

Tool Count5/5

With 9 tools, the server is well-scoped for its purpose as a reference and documentation resource for OpenTelemetry instrumentation. Each tool serves a clear role without being excessive or insufficient.

Completeness4/5

The tool set covers essential aspects: rules, spec, docs, examples, conventions, and repository interaction. A minor gap is the lack of a direct tool to compute or evaluate an instrumentation score, but the provided tools offer foundational information for that purpose.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language querying and analysis of OpenTelemetry traces, metrics, and logs stored in Elasticsearch/OpenSearch, allowing AI assistants to investigate performance issues, find root causes, and explore system behavior.
    12 npm
    14
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to access live runtime observability data such as logs, deploys, and health metrics for evidence-based incident triage.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Connects AI assistants to GitHub repositories, pull requests, issues, commits, and code search while enabling repository visibility controls, CI/CD monitoring, sandboxed local filesystem access, and code quality/security analysis.
    13
    1
    MIT