Lightweight telemetry SDK for MCP servers. Captures MCP tool invocations, HTTP requests, business events, and UI interactions with built-in payload sanitization.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"listo-mcp-observability","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# listo-mcp-observability Lightweight telemetry SDK for Python MCP servers. Captures MCP tool invocations, HTTP requests, business events, and UI interactions with built-in payload sanitization. Python port of [@listo-labs-ltd/mcp-observability](https://github.com/Listo-Labs-Ltd/mcp-observability) (TypeScript). ## Features - **Easy setup** — 3 lines with `create_mcp_observability_easy()` - **Local dashboard** — Real-time metrics at `/telemetry/dashboard` - **Centralized analytics** — Send to Listo in production - **MCP tool tracking** — Decorator-based (`@obs.track_tool()`) or programmatic wrapping - **Payload sanitization** — Redacts password, token, apiKey, secret, authorization, userid, email, phone, and more - **Sampling** — Configurable rates with guaranteed error/session capture - **Zero runtime dependencies** — Core uses only Python stdlib - **Event categories** — Classify business and UI events as conversion, engagement, impression, navigation, or system - **Batch ingestion** — `POST /telemetry/events` for efficient multi-event ingestion - **Platform detection** — Identify which AI platform (Claude, ChatGPT, etc.) initiated each session and tool call - **Sink composition** — `combine_sinks()` to route events to multiple destinations ## Installation ```bash # From PyPI pip install listo-mcp-observability # With uv uv add listo-mcp-observability # With optional MCP SDK support pip install "listo-mcp-observability[mcp]" # With optional Starlette dashboard support pip install "listo-mcp-observability[starlette]" ``` ## Quick Start ```python from mcp.server.fastmcp import FastMCP from mcp_observability import create_mcp_observability_easy mcp = FastMCP("my-server") obs = create_mcp_observability_easy(service_name="my-server") @mcp.tool() @obs.track_tool("search_hotels") async def search_hotels(query: str) -> str: return f"Results for {query}" ``` ## Environment Variables | Variable | Description | Default | |----------|-------------|---------|…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.