MCP server providing read-only access to Loki, Prometheus, and Tempo APIs.
- Multi-instance support: Configure multiple LGTM stacks and switch between them
- Bearer token authentication: Works with Grafana Cloud and self-hosted deployments
- Query tools: Execute LogQL, PromQL, and TraceQL queries
- Metadata discovery: Expose labels, metrics, and tags as MCP resources
- Syntax documentation: Built-in query language references
- OpenTelemetry tracing: All HTTP client calls are traced and exported via OTLP/gRPC
Create a config file at ~/.config/lgtm-mcp/config.yaml:
version: "1"
default_instance: "local"
instances:
local:
loki:
url: "http://localhost:3100"
prometheus:
url: "http://localhost:9090"
tempo:
url: "http://localhost:3200"
grafana-cloud:
loki:
url: "https://logs-prod-us-west-0.grafana.net"
username: "${GRAFANA_CLOUD_LOKI_USERNAME}"
token: "${GRAFANA_CLOUD_TOKEN}"
prometheus:
url: "https://prometheus-prod-01-us-west-0.grafana.net/api/prom"
username: "${GRAFANA_CLOUD_PROMETHEUS_USERNAME}"
token: "${GRAFANA_CLOUD_TOKEN}"
tempo:
url: "https://tempo-prod-us-west-0.grafana.net"
username: "${GRAFANA_CLOUD_TEMPO_USERNAME}"
token: "${GRAFANA_CLOUD_TOKEN}"Environment variables are expanded using ${VAR} syntax.
For Grafana Cloud, a token with read-only permissions is sufficient. See Creating access policies for details.
Add the MCP server using the Claude Code CLI:
claude mcp add lgtm -- uvx --from git+https://github.com/pokgak/lgtm-mcp lgtm-mcpOr manually add to your Claude Code MCP settings (~/.claude/settings.json):
{
"mcpServers": {
"lgtm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/pokgak/lgtm-mcp", "lgtm-mcp"]
}
}
}Add to your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"lgtm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/pokgak/lgtm-mcp", "lgtm-mcp"]
}
}
}If you've cloned the repository locally:
{
"mcpServers": {
"lgtm": {
"command": "uv",
"args": ["run", "lgtm-mcp"],
"cwd": "/path/to/lgtm-mcp"
}
}
}Loki (Logs)
loki_patterns- Start here! Detect log patterns and frequency (requirespattern_ingesterenabled)loki_stats- Get quick stats (stream count, bytes) without fetching logsloki_volume- Get log volume breakdown by labelsloki_query_logs- Retrieve log entries (use after patterns to get specific examples)loki_instant_query- Metric-type LogQL at single pointloki_get_labels- List label namesloki_get_label_values- Get values for a labelloki_get_series- Find matching log streams
Prometheus (Metrics)
prometheus_instant_query- Execute PromQL instant queryprometheus_range_query- Execute PromQL range query (broken)prometheus_range_query_chart- Range query with ASCII chart visualizationprometheus_get_metric_names- List metricsprometheus_get_label_names- List label namesprometheus_get_label_values- Get values for a labelprometheus_get_series- Find matching seriesprometheus_get_metadata- Get metric metadata
Tempo (Traces)
tempo_trace_summary- Start here! Get trace summary with stats (duration p50/p95/p99, error count, span tree)tempo_get_trace- Retrieve full trace data (use after summary for details)tempo_search_traces- Search with TraceQLtempo_get_tag_names- List tag namestempo_get_tag_values- Get values for a tagtempo_get_services- List service names
Utility
list_instances- List configured instancesset_default_instance- Change default instance
Resources expose metadata for query generation:
lgtm://{instance}/loki/labels- Loki label nameslgtm://{instance}/prometheus/labels- Prometheus label nameslgtm://{instance}/prometheus/metrics- Metric nameslgtm://{instance}/tempo/tags- Tempo tag nameslgtm://syntax/logql- LogQL syntax referencelgtm://syntax/promql- PromQL syntax referencelgtm://syntax/traceql- TraceQL syntax reference
The server automatically instruments all HTTP client calls with OpenTelemetry. Traces are exported via OTLP/gRPC.
By default, traces are sent to http://localhost:4317. Override with:
export OTEL_EXPORTER_OTLP_ENDPOINT="http://your-collector:4317"Service name: lgtm-mcp
# Install with dev dependencies
uv pip install -e ".[dev]"
# Run type checks
mypy src/
# Run linter
ruff check src/
# Run tests
pytest