Log analysis MCP server — tail, search, and summarize logs from files and Docker containers
Server provides 7 tools with basic schemas and descriptions. All tools are READ_ONLY and well-scoped (tail, search, filter, summarize operations on logs). Descriptions are present but generic (avg ~60 chars, below 194-char baseline). Input schemas visible with types and defaults, but parameter descriptions are minimal. No output schemas documented. Error handling absent, no guidance on what happens when a file doesn't exist, regex fails, or Docker daemon is unreachable. Tool names follow verb_noun pattern (tail, search, filter_level, summarize, docker_logs, docker_grep, docker_errors) but lack specificity, 'filter_level' could be clearer as 'filter_by_log_level'. No tool annotations (readOnlyHint, idempotentHint). Composition is sound, each tool has one responsibility. Missing: output schema documentation, error recovery guidance, parameter constraints (e.g., valid log levels as enum), and actionable error messages.
Summarize and group errors from a Docker container's logs.
Search Docker container logs with a regex pattern.
Tail last N lines from a Docker container's logs.
Filter log file by level: ERROR, WARN, INFO, DEBUG. Supports JSON and plain text logs.
Search a log file with a regex pattern. Returns matching lines.
Summarize and group errors by pattern from a log file.
Tail last N lines from a log file.
No output schemas documented. LLMs cannot predict what fields to expect (e.g., does tail return {lines: [...], count: int} or {content: string}?). Breaks downstream tool chaining and forces LLMs to guess field names.
No error handling or recovery guidance. If a file doesn't exist, regex is invalid, or Docker daemon is unreachable, the tool will fail silently or return a raw exception. LLMs have no guidance on what to do next (retry? ask user? try alternative?).
Parameter 'level' in filter_level lacks enum constraint. Description says 'ERROR, WARN, INFO, DEBUG' but LLMs may pass 'error', 'warning', 'debug', or other variants. Should declare as enum: ['ERROR', 'WARN', 'INFO', 'DEBUG'].
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
Parameter descriptions are minimal (avg ~20 chars). E.g., 'path' is just 'Path to the log file', no guidance on absolute vs relative paths, symlink handling, or permission requirements. Descriptions should be 50 - 200 chars with format/constraint hints.
No tool annotations. All tools are read-only and idempotent, but lack readOnlyHint and idempotentHint annotations. This prevents agents from optimizing retry logic and understanding safety guarantees.