This MCP server allows AI agents to read and analyze application log data.
The Log Reader Server provides a single tool with a clearly defined purpose and reasonable input schema. The tool name 'log-reader' is descriptive and the description explains what it does. However, there are significant gaps in parameter-level guidance, output schema documentation, and error handling patterns. The tool accepts filters as an object but the schema lacks proper enumeration constraints and some descriptions are too generic. Output is returned as markdown-wrapped JSON without a documented structure for the LLM to parse. Error handling is minimal, the catch block returns a generic message instead of actionable recovery guidance.
A tool to read and analyze application log data via MCP.
Output schema is not documented. The tool returns markdown-wrapped JSON but provides no formal definition of the structure, field types, or pagination. LLMs cannot reliably parse or chain this output.
Log level and channel parameters accept free-form strings instead of enums. The description says '(error, info, etc.)' but this is a hint, not a constraint. LLMs will hallucinate invalid values like 'warning', 'critical', or misspellings.
Error handling returns a generic message 'Failed to read logs. Check server logs for details.' instead of actionable recovery steps. This gives the LLM no guidance on whether to retry, adjust parameters, or abort.
No pagination support. The tool description does not mention result limits, offsets, or cursors. If logs exceed typical context window (e.g., 1000+ records), the response will be truncated silently or exhaust tokens.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
Date filter format is documented as YYYY-MM-DD but the schema uses a string type without a regex pattern or format declaration. The code normalizes dates via Carbon::parse(), which is lenient and may accept unexpected formats, leading to silent bugs.
Query parameter description is vague: 'Free text search in logs.' Does it search message, context, extra fields, or all? Does it support regex or just substring matching? LLMs cannot infer intended behavior.