MCP server exposing tools to search and fetch lore.kernel.org mailing list archives, with optional lei integration.
lore-mcp provides 8 tools with complete input schemas and descriptions. Naming follows verb_noun conventions well (search_lore, get_message_raw, get_thread_summary, etc.). Most parameters are typed and described. However, there are significant gaps: (1) Output schemas are NOT documented, tools return JSON but LLMs cannot predict field structure; (2) Error handling is minimal, no recovery guidance, error classification, or actionable error messages; (3) Many parameter descriptions lack format/constraint details (e.g., 'baseUrl' format=uri is present but others like 'query' in search_lore lack examples of valid syntax); (4) Parameters with complex relationships (e.g., url vs messageId being mutually exclusive via anyOf) are not explained in descriptions; (5) No tool descriptions mention when to use one tool over another (e.g., get_thread_summary vs summarize_thread_llm vs get_thread_mbox). Tool names are clear and domain-appropriate. Most parameter descriptions exist but are terse. Schemas are present and well-formed with proper types, but lack comprehensive field documentation.
Fetch a single message as raw-parsed headers + body from lore.kernel.org
Extract a patch series: aggregate/per-patch stats and optional truncated diffs.
Fetches thread in mbox format with optional message/body size limits.
Return a compact summary of a thread: meta + short bodies + key trailers (optionally stripping quoted text)
Lists available mailing list scopes from lore.kernel.org root.
Show lore.kernel.org/public-inbox search syntax and endpoints
Search lore.kernel.org. Optional scope=<list> to restrict to a mailing list. Uses lei if available, else Atom feed.
No output/return schemas documented. LLMs cannot predict field structure, types, or required fields returned by any tool. This forces trial-and-error field access and breaks downstream tool chaining.
Error handling is absent. No error recovery guidance, error classification, or actionable error messages. If a tool fails, the LLM has no idea whether to retry, ask the user, or abort.
Parameter descriptions lack detail. 'query' in search_lore mentions examples but does not explain valid syntax boundaries. 'maxMessages' lacks context on when to use 0 vs a specific count. 'tokenBudget' and 'contextTokens' lack units/interpretation guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
Summarize a full thread with a large-context LLM (map-reduce when needed) to avoid truncation and preserve key details.
Mutually exclusive parameters (url vs messageId, scope vs list) use anyOf but descriptions do not explain the relationship or when to use which. LLMs may pass both or neither.
Multiple tools operate on threads (get_thread_summary, summarize_thread_llm, get_thread_mbox) but descriptions do not explain when to choose one over another. LLMs cannot distinguish intent.
'list' parameter marked (Deprecated) but still present and accepted. Deprecation path is unclear, should LLMs use 'scope' exclusively? No migration guidance provided.
'lore_help' and 'list_scopes' have minimal descriptions (35 and 40 chars respectively). Users cannot determine when to call these discovery tools without seeing the actual output.
No pagination guidance for tools returning lists (search_lore, list_scopes). No 'limit' or 'offset' parameters, no documentation of how many items are returned by default, no mention of result truncation.
Caching behavior (cacheToMaildir, maildir parameters) is optional and context-dependent. Description says 'defaults to on' but does not explain side effects, when caching is useful, or how it affects subsequent calls.