Advanced Android logcat viewer and debugging tool providing AI agents with real-time access to device debugging information via MCP protocol
FadCat provides 8 tools for Android debugging via ADB/logcat. Tool definitions are present with names, descriptions, and input schemas visible in src/mcp/server.py. However, several critical gaps prevent a higher score: (1) descriptions are minimal (avg ~50-80 chars, below the 194-char production baseline), lacking WHEN-to-use and recovery guidance; (2) parameter descriptions exist but are terse and lack format/constraint details (e.g., 'Device serial number' without serial format); (3) output schemas are not documented in the tool definitions, the code references Pydantic models (LogLine, ProcessInfo, StackTraceInfo, etc.) but these are not exposed as JSON Schema in tool registration; (4) no explicit error handling guidance, tools may fail but responses don't tell the LLM what to do next; (5) all tools are READ_ONLY and safe, but this is not annotated in the schema (tool annotations are claimed in FEATURES but not visible in tool definitions). The server uses fastmcp, which is modern, but tool definitions appear minimal in the provided code snippet.
Analyze app performance metrics (memory only)
Detect error types from logs
Filter current logcat by severity level
Get running processes for an app
Get list of connected Android devices
Get logcat stream from a device with optional filters
Parse Android stacktrace and identify issues
Output schemas not documented in tool definitions. Code references Pydantic models (LogLine, ProcessInfo, StackTraceInfo, PerformanceReport) but these are not exposed as JSON Schema in the tool registration. LLMs cannot plan downstream calls or extract structured data.
Descriptions are below production baseline (avg ~50-80 chars vs. 194-char median). Lack WHEN-to-use guidance, dependencies, and recovery hints. E.g., 'Get list of connected Android devices' doesn't explain when to call this (startup? refresh? fallback?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
Search in logcat history
Parameter descriptions lack format constraints and enums. E.g., 'level' accepts V/D/I/W/E/F but is free-form string rather than formal enum. 'device' should specify serial format. 'lines' and 'duration' lack min/max ranges. This invites hallucinated input from LLMs.
No error handling guidance. Tools may fail (ADB timeout, device not found, package not installed) but responses don't tell the LLM what to do next. E.g., 'Error: ADB command timeout' is bare, should suggest 'Device may be offline. Check with get_devices().'
Tool composition overlap: 'filter_by_level' and 'get_logcat_stream' both filter logs by level. It's unclear when to use filter_by_level, does it operate on a persistent stream? Requires state? Should be one tool.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are claimed in FEATURES but not visible in tool definitions. All tools are READ_ONLY and safe, but schema must explicitly declare this so clients can optimize (e.g., allow retry/caching).