AI-powered FRC robot log analysis via MCP. Analyzes .wpilog telemetry from the roboRIO.
wpilog-mcp demonstrates solid fundamentals with 39 tools covering a specialized robotics telemetry analysis domain. Strengths: all tools have descriptions (avg 180 chars, within baseline 34-392), consistent verb-noun naming (list_, get_, analyze_, etc.), and logical grouping (discovery, analysis, export). Weaknesses: input schemas are present but inconsistently detailed, many tools lack parameter descriptions, several numeric parameters are unbounded, no enums or format constraints visible, and output schemas are undocumented. Error handling is minimal; most tools lack recovery guidance. The specialized domain (WPILib, FRC robotics) means descriptions are well-optimized for that audience but assume significant domain knowledge. Overall, this is a competent domain-specific tool set that benefits from more rigorous parameter annotation and output documentation.
Analyze autonomous routine performance
Analyze CAN bus utilization and error patterns
Analyze game piece cycle times
Detect robot code loop timing violations
Detect AdvantageKit replay divergence
Analyze swerve drive module performance
Analyze vision system detection rates and latency
Numeric parameters (start_time, end_time, threshold, iqr_multiplier, min_prominence, limit, offset) lack min/max bounds and format specifications. LLMs can pass invalid values (e.g., negative timestamps, unbounded limit values causing timeouts).
Output schemas are not documented in the provided tool definitions. LLMs cannot predict which fields to extract for downstream operations. E.g., does get_statistics return min/max/mean/stddev/median? What fields does list_available_logs enrich with TBA data?
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Analyze CAN bus health and error counts
Compare two entries (e.g., setpoint vs actual)
Compare statistics across multiple loaded logs
Find outliers using IQR method
Export entry data to a CSV file for external analysis in Excel, Python, or MATLAB.
Find timestamps where values cross thresholds
Find local maxima and minima
Generate comprehensive match report
Extract Git SHA, branch, and build info
Generate a chronological timeline of critical robot events: enable/disable, match phases, brownouts, joystick disconnects, errors, and warnings.
Get detailed information about a specific entry including metadata and sample values.
Get current game rules and scoring info for the selected year
Detect match phases (auto/teleop) from DriverStation data
Comprehensive overview of all capabilities, grouped by category
Compute comprehensive statistics on numeric entries
Check TBA integration status and configuration
List all data types in the log
Check server health and version information
List WPILOG files available in the configured log directory with friendly names. IMPORTANT: When TBA is configured, this tool automatically enriches each log with match data including alliance scores, win/loss results, and actual match times. Check the 'tba' field in each log entry for match outcomes—don't guess from telemetry! Use this tool first to find logs and get match results, then pass the path to other tools.
List all entries in a log file. Returns log metadata (time range, duration, truncation status) and entry list with types and sample counts. Optionally filter by name pattern.
List all loaded logs and cache status
List all supported WPILib struct types
Estimate moment of inertia and drivetrain characteristics
Analyze battery voltage and current distribution
Predict battery health from voltage/current data
Profile mechanism velocity/acceleration characteristics
Compute derivatives (velocity from position, acceleration from velocity)
Read values from an entry. Supports time range filtering and pagination.
Search entries by type, name pattern, or sample count
Search string entries for text patterns
Recommend tools for a given analysis task
Compute correlation between two entries
Many discovery and analysis tools lack parameter descriptions. E.g., list_entries 'pattern' param says it's optional substring match, but get_types, list_struct_types, health_check have no parameter descriptions at all. This forces LLMs to guess intent.
No enums or constrained choices visible for string parameters. E.g., find_condition 'condition' param accepts 'above', 'below', 'crossing' but is not declared as an enum, LLMs may hallucinate values like 'equal', 'increasing', 'decreasing'. search_entries 'type' param lacks an enum of valid WPILib types.
Error handling not visible. Tools like read_entry (unbounded limit), analyze_swerve (assumes swerve drive present), and get_ds_timeline (assumes DriverStation data exists) have no documented error cases or recovery guidance. LLMs don't know what to do if a tool fails.
Tool descriptions vary in actionability. list_available_logs is excellent (185 chars, explains TBA enrichment, directs when to call first). Many others like analyze_swerve (47 chars) are vague: 'Analyze swerve drive module performance' doesn't explain WHEN to use it vs other analysis tools or what data structures are assumed.