Model Context Protocol server for ROS bag analysis
Project description
MCP ROS Bags
A Model Context Protocol (MCP) server for analyzing and querying ROS bag files. This server enables Claude and other MCP-compatible tools to interact with robot data stored in ROS bags.
Overview
This MCP server provides comprehensive tools for ROS bag analysis, supporting both ROS 1 and ROS 2 bag formats (.bag, .db3, .mcap). It enables AI assistants to query robot trajectories, sensor data, transforms, and logging information from recorded robot sessions.
Key Features
- Bag Management: List, inspect, and query ROS bag files
- Message Querying: Get messages by topic, timestamp, or time range
- Trajectory Analysis: Extract robot paths, waypoints, and motion profiles
- Sensor Data: Analyze laserscan topics, images
- Transform Trees: Query coordinate transforms and frame relationships
- Logging Analysis: Search and analyze ROS log messages
- Visualization: Generate plots and visual representations of data
- Search & Discovery: Find objects, patterns, and correlations in data
Installation
-
Clone the repository:
git clone https://github.com/binabik-ai/mcp-rosbags.git cd mcp-rosbags
-
Create and activate a Python virtual environment:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Optional: Install with ROS 2 support:
pip install -e .[ros2]
Configuration
Claude Desktop Configuration
Add this to your Claude Desktop configuration file:
{
"mcpServers": {
"rosbag_reader": {
"command": "/path/to/your/venv/bin/python",
"args": ["/path/to/mcp-rosbags/src/server.py"],
"env": {
"PYTHONPATH": "/path/to/mcp-rosbags/src",
"MCP_ROSBAG_DIR": "/path/to/your/rosbags",
"MCP_ROSBAG_CONFIG": "/path/to/mcp-rosbags/src/config"
}
}
}
}
Environment Variables
MCP_ROSBAG_DIR: Default directory containing ROS bag files (default:./rosbags)MCP_ROSBAG_CONFIG: Configuration directory (default:./config)
Server Configuration
The server uses configuration files in the src/config/ directory:
server_config.yaml: Main server configuration (caching, timeouts, etc.)message_schemas.yaml: Schema definitions for message field extraction
Usage
With Claude Desktop
After configuration, restart Claude Desktop and you can interact with your ROS bags:
"List all ROS bags in my directory"
"Show me the trajectory from the /odom topic"
"Find all error messages in the logs"
"Extract an image from the /camera/image topic at timestamp 1234567890 and describe what you see"
Tools Overview
The server provides the following categories of tools:
Core Tools
set_bag_path: Set current bag file or directorylist_bags: List available ROS bag filesbag_info: Get detailed bag informationget_message_at_time: Get message at specific timestampget_messages_in_range: Get messages within time range
Analysis Tools
- Trajectory: Extract robot paths, analyze motion patterns
- LiDAR: Process laserscan data, e.g., to detect obstacles
- Images: Extract and process camera images
- Transforms: Query coordinate transforms and frame trees
- Logging: Search and analyze ROS log messages
- Visualization: Generate plots and visual data representations
Search Tools
- Pattern matching in message data
- Correlation analysis between topics
- Time-based data alignment
Architecture
src/
├── server.py # Main MCP server
├── config/ # Configuration files
│ ├── server_config.yaml # Server settings
│ └── message_schemas.yaml # Message field schemas
├── core/ # Core utilities
│ ├── cache_manager.py # Caching system
│ ├── message_utils.py # Message processing
│ └── schema_manager.py # Schema handling
└── extractors/ # Specialized analysis tools
├── bag_management.py # Bag operations
├── image.py # Image processing
├── lidar.py # LiDAR analysis
├── logging.py # Log analysis
├── search.py # Search and correlation
├── tf_tree.py # Transform trees
├── trajectory.py # Path analysis
└── visualization.py # Data visualization
Supported Message Types
The server supports standard ROS message types including:
- Navigation:
nav_msgs/Odometry,nav_msgs/Path - Geometry:
geometry_msgs/PoseStamped,geometry_msgs/Twist - Sensors:
sensor_msgs/LaserScan,sensor_msgs/PointCloud2,sensor_msgs/Image - Transforms:
tf2_msgs/TFMessage,geometry_msgs/TransformStamped - Diagnostics:
diagnostic_msgs/DiagnosticArray - Logging:
rcl_interfaces/Log
Performance Features
- Intelligent Caching: Configurable caching system for frequently accessed data
- Schema-based Extraction: Efficient field extraction using predefined schemas
License
This project is licensed under the Apache License 2.0. See LICENSE for details.
Support
- Issues: Report bugs and request features on GitHub Issues
- Contact: dev@binabik.ai
Acknowledgments
Built with the Model Context Protocol and the rosbags library.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_binabik_ai_mcp_rosbag_server-0.1.0.tar.gz.
File metadata
- Download URL: iflow_mcp_binabik_ai_mcp_rosbag_server-0.1.0.tar.gz
- Upload date:
- Size: 38.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
973a46cbbe0b8effb3d137ca49097a5f5d8b70fdc3271f115f40e56103c34387
|
|
| MD5 |
1fc29a2bb86590f33b91b99620179d69
|
|
| BLAKE2b-256 |
31def05f8ed2c7ceb45d216ada7eb06d11ee8f64a3b05e47c3b7ab71cb42e794
|
File details
Details for the file iflow_mcp_binabik_ai_mcp_rosbag_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_binabik_ai_mcp_rosbag_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 48.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eae21742ba475ee8f72140acc898326261885acd245f6d02e442a1c0e06fe734
|
|
| MD5 |
b6884579227b3fdd3f328742afc66504
|
|
| BLAKE2b-256 |
5558d6e25e63249bcf11ffe63127e3bd288ca79be315b4d621e98a8deaa5a214
|