{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_9ccmk4wn9uzu","handle":"loki-tail-mcp","url":"https://wellknown.network/agents/loki-tail-mcp","links":{"self":"https://wellknown.network/agents/loki-tail-mcp/record.json","html":"https://wellknown.network/agents/loki-tail-mcp","markdown":"https://wellknown.network/agents/loki-tail-mcp/record.md","api":"https://wellknown.network/api/v1/agents/loki-tail-mcp","status":"https://wellknown.network/api/v1/agents/loki-tail-mcp/status","claim":"https://wellknown.network/agents/loki-tail-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/loki-tail-mcp/claim.json","badge":"https://wellknown.network/agents/loki-tail-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/loki-tail-mcp/history","tools":"https://wellknown.network/api/v1/agents/loki-tail-mcp/tools"},"ard":{"identifier":"urn:air::server:loki-tail-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"loki-tail-mcp","summary":"MCP server for Grafana Loki: LLM-friendly log search with fuzzy container-name rescue","description":"# loki-tail-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server for\n[Grafana Loki](https://grafana.com/oss/loki/), designed around how LLMs\nactually query logs: compact output, hard row caps, and a\n**fuzzy container-name rescue** that turns the classic\nempty-result-because-wrong-name failure into an auto-corrected retry or\nan actionable suggestion list. Built on the\n[Python MCP SDK](https://github.com/modelcontextprotocol/python-sdk)\n(FastMCP); runs as a local stdio server or a containerized Streamable\nHTTP service with bearer auth.\n\n## Tools\n\n| Tool | Notes |\n|---|---|\n| `loki_tail_container` | \"What is service X saying?\" — the primary tool. Accepts approximate names: service vocabulary (`vpn`, `proxy`), bare names (`sonarr`), typos. On zero results it distinguishes *valid-but-quiet* from *unknown name*, auto-substitutes a unique fuzzy match (flagged in the output), or suggests candidates. |\n| `loki_query_range` | Raw LogQL range query — multi-container correlation (`{container=~\"a\\|b\"} \\|= \"...\"`) and metric queries (`count_over_time(...)`). |\n| `loki_query_instant` | Instant query at a point in time (metric queries). |\n| `loki_list_containers` | Durable container names (ephemeral CI/batch names hidden). |\n| `loki_list_labels` / `loki_list_label_values` | Raw label discovery. |\n| `loki_patterns` | Log pattern mining — thousands of lines → ranked recurring templates with counts. Requires the server-side [pattern ingester](https://grafana.com/docs/loki/latest/operations/query-patterns/) (`pattern_ingester.enabled: true`). |\n| `loki_log_volume` | Rank containers by log bytes over a window — \"which service suddenly got noisy\". |\n| `loki_detected_fields` | Fields Loki can auto-extract from a stream (name/type/cardinality/parser) — discover `\\| logfmt \\| status>=500` opportunities before writing LogQL. |\n\n### The name-resolution design\n\nMatching always runs against **live label values**, never a hardcoded\nlist, so it survives renames. Resolution tries, in order: exac…","publisher":null,"homepage":"https://github.com/snickery/loki-tail-mcp","repository":"https://github.com/snickery/loki-tail-mcp","version":"0.2.0","license":null,"protocols":["mcp"],"tags":["grafana","logql","logs","loki","mcp","model-context-protocol"],"pricing":null,"endpoints":[{"url":"pypi:loki-tail-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":1,"provenance":"declared"}],"categories":["dev"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"loki-tail-mcp","registry":"pypi","observedAt":"2026-11-03T11:24:44.364Z","publishedAt":"2026-10-25T10:44:13.099964Z","latestVersion":"0.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"loki-tail-mcp","url":"https://pypi.org/project/loki-tail-mcp/","firstSeenAt":"2026-09-09T23:26:06.731Z","fetchedAt":"2026-11-03T11:23:16.355Z","normalizedAt":"2026-11-03T11:23:16.355Z"}]},"firstSeenAt":"2026-09-09T23:26:06.731Z","updatedAt":"2026-11-03T11:24:44.364Z"}