rosout-mcp has 5 tools with reasonable coverage of ROS2 log querying operations. All tools have descriptions and input schemas are present with type definitions. However, there are significant gaps in parameter descriptions, output schema documentation, and error handling guidance. Tool names follow verb-noun convention correctly (rosbag_load, db_init, db_search, node_list, db_status). The db_search tool has the most complete parameter descriptions, explaining the nanosecond time format and log level constants. However, output schemas are not documented anywhere in the codebase, LLMs cannot infer what fields to expect from results. Error handling is minimal; there are no recovery guides or actionable error messages visible. Parameter consistency issues exist: db_search requires explaining the special -1 value for 'ignore' across multiple params, which is non-standard. The descriptions are adequate (80-120 chars each) but could be more specific about when to use each tool vs. alternatives.
Initialize in-memory database (clear all existing log data). Removes all existing log records from the in-memory database. Use this to start fresh or reset the database.
Search in-memory database logs with multiple filtering options. Provides comprehensive filtering capabilities for log analysis including time range, node name, log levels, and message content search.
Get in-memory database status and information. Provides information about database record count and basic statistics.
Get a list of unique node names from the database.
Load rosbag data into in-memory database (append mode - does not clear existing data). Converts ROS2 rosbag files to in-memory SQLite database format for efficient querying. Data is appended to existing database without clearing previous records.
Output schemas not documented. No tool specifies what fields it returns or their types. LLMs cannot plan downstream operations or extract required data without documented return types.
db_search uses non-standard -1 sentinel value to mean 'ignore filter' across 4 parameters (start_time, end_time, min_level, max_level). This forces LLMs to remember and apply a magic constant. Should use nullable fields or separate optional parameters instead.
No error handling documentation. Tools provide no guidance on recovery (e.g., 'Bag path not found: try list available bags', or 'Database error: check db_status for consistency'). Errors are likely returned as raw exceptions.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
node_list and db_status descriptions are vague. 'Get a list of unique node names' does not explain when to call this vs db_search, or what structure it returns. 'Provides information about database record count and basic statistics' is incomplete, what statistics? How are they useful?
db_search description mentions 'nanoseconds' and log level constants but does not explain the practical implications. An LLM may pass arbitrary large timestamps or invalid level values. No input validation guidance provided.
db_init description warns 'Use this to start fresh or reset the database' but does not mention that this is DESTRUCTIVE and cannot be undone. Missing destructive-operation pattern warning.