MCP server exposing fast, structured search over lore.kernel.org to LLM developer tools.
34 tools with mostly clear verb-noun naming (lore_search, lore_message, lore_patch). Descriptions present but vary in quality, many are terse (10-50 chars) and lack WHEN/WHY context. Tool #23 (lore_maintainer_profile) has excellent schema with typed parameters and constraints; most others lack visible input schemas in source. Output schemas not documented. Error handling guidance absent. Sampling tools (#32-34) reference ctx.sample() but no fallback error messaging visible. READ_ONLY risk classification applied uniformly but no permission gates or audit trail patterns evident.
File / function activity over lore
Every lore message that mentions an address
Aggregate profile for one from_addr
Classify a single Linux kernel patch into exactly one of: bugfix, feature, cleanup, doc, test, merge, revert, backport, security.
Coverage stats: per-list rows + tier freshness
Count + distinct-authors + date range
Message-vs-message diff (patch / prose / raw)
Exact-equality scan on a column
32 of 34 tools lack visible input schemas in source code. Only lore_maintainer_profile and lore_summarize_thread show typed parameter definitions. Cannot verify parameter constraints, types, or descriptions for majority of tools.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | <=2025-11-25 | v2 |
Expand Message-ID / SHA / CVE
One-call deep view of a patch
Summarize open reviewer concerns + enumerate trailers seen; falls back to an extractive trailer scan.
Chronological patch activity on one file (with histogram)
Universal search (like lore's ?q=)
Correlate a bug report to candidate fixes across threads
Indexed search on header / trailer fields
Set-membership scan on a column
Declared vs. observed ownership for a kernel path
Fetch one message (prose + patch split)
Semantic nearest-neighbour on free text
Raw patch text for one message
Diff two patch versions of a series
Literal substring search in patch bodies
Find messages mentioning a file path
DFA-only regex scan
Search lore (fused tiers)
Sibling versions of a patch series
Nearest-neighbour on a seed message-id
Was this mainline SHA picked up by -stable?
Case-insensitive substring on subject
Substring inside a named trailer
Hot files in a list/subsystem (top-N + histogram)
Summarize a conversation thread in prose. Uses `ctx.sample()` when the client advertises sampling; falls back to a deterministic extractive top-K sentence ranker. Cost: expensive — expected p95 2000 ms on the sampled path (one round-trip to the client's LLM) / 120 ms on the extractive path.
Walk a full conversation thread
Classify a thread (rfc/superseded/nacked/...)
Tool descriptions are terse (10-50 chars for most tools). Lack WHEN/WHY context. E.g., 'Search lore (fused tiers)' does not explain when to use lore_search vs lore_find vs lore_header_search. LLMs cannot disambiguate.
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields. E.g., does lore_message return message_id, thread_id, author_email? Unknown.
Sampling tools (#32-34) reference ctx.sample() fallback but no error messages or recovery guidance visible. If sampling fails or client does not support it, LLM has no guidance on next steps.
No permission gates, audit trails, or scope declarations visible. All tools marked READ_ONLY but no mechanism to enforce least-privilege access or log who called what.