Skip to content

Troubleshooting

Symptom Likely cause Fix
Claude doesn't see the tools Server not registered or unreachable claude mcp list — re-add if missing; verify curl http://localhost:3000/mcp works
EADDRINUSE: 3000 on start Port already in use lsof -i :3000 (or ss -tlnp \| grep 3000); start with PORT=8080
Source connects, queries return empty Wrong metric names for your stack Check resolvedSeries in the query_metrics response. The default queries assume prom-client conventions; pin custom queries via source-level metrics: overrides (prometheus.md)
Source connects, queries return zero Wrong service-filter label Check resolvedLabel in the response. Set PROMETHEUS_SERVICE_LABELS to put your label first
list_services returns nothing for Loki None of the default labels are populated Set LOKI_SERVICE_LABELS to include the label your shipper actually uses
Server starts with no sources No sources.yaml and no PROMETHEUS_URL/LOKI_URL Expected on first run — add via Web UI or env vars
${VAR} shows up literally in UI Env var not set when server started Set the var in shell/.env before launch; substitution happens at file load
Web UI source indicator stays red Health check failing Click Test — error message tells you what's wrong (DNS, TLS, 401, etc.)
Grafana Cloud auth fails Using bearer token instead of basic Grafana Cloud requires Basic Auth: numeric instance ID as username, API token as password (auth-and-tls.md)
Invalid service name for legitimate names Old version Slashes are allowed since v1.2.0 (integrations/unix, kubernetes/cadvisor); upgrade with npx @thotischner/observability-mcp@latest

Verify your setup

After starting the server:

```bash

1. Server health and source status

curl http://localhost:3000/api/health

2. MCP tools are reachable

curl -s -X POST http://localhost:3000/mcp \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' ```

Then open the Web UI at http://localhost:3000 → Sources — every configured source should show a green indicator.