Bagel lets you chat with your robotics data.
For example, you can ask Bagel to check a PX4 drone's IMU data for hard landings:
Bagel can also propose fixes for detected errors in your robot:
Bagel works with a wide range of common robotics and sensor log formats out of the box. Don't see your format? Open a ticket.
| Format |
|---|
✅ ROS 2 (.mcap, .db3) |
✅ ROS 1 (.bag) |
✅ PX4 (.ulg) |
Don't forget to join our Discord server!
We are using ROS2 Kilted and Claude Code as example.
source /opt/ros/kilted/setup.sh # Source ROS2 dependencies
uv sync --group ros2 # Install PyPI packages
uv run main.py up mcp # Start Bagel MCP serverOpen another terminal and run:
# Add Bagel MCP server to Claude Code
claude mcp add --transport sse bagel http://localhost:8000/sse
# Launch Claude Code
claude
# Happy prompting
> Summarize the metadata of robolog "./doc/tutorials/data/ros2".The Bagel MCP server is not exclusively tied to Claude. You're free to integrate your preferred LLMs with Bagel.
- Claude Code Tutorial with a PX4 ULog
- Gemini CLI Tutorial with a ROS2 Bag
- Cursor Tutorial with a PX4 ULog
- Build a Data Pipeline from a PX4 ULog
- Read Topic Messages from a ROS2 Bag
To run Bagel without installing local dependencies like ROS, you can use our provided Docker images. Make sure you have Docker Desktop installed. This example uses ROS 2 Kilted.
First, give the container access to your robolog files. Open the compose.yaml file and find the service you want to use (e.g., ros2-kilted). Edit the volumes section to link your local data folder to the container's data folder.
services:
ros2-kilted:
...
# volumes: <-- ✅ Uncomment
# - <path-to-local-data>:/home/ubuntu/data <-- ✅ Uncomment & ReplaceYour local robolog files will be accessible inside the container at /home/ubuntu/data.
Build and start the Bagel MCP server in a container with this command.
docker compose run --build --service-ports ros2-kilted uv run main.py up mcp