Bagel Robotics MCP Server

by shouhengyi

240 downloads
Not rated
GitHub

About

Bagel Robotics MCP Server is a tool for extracting, transforming, and analyzing robotics data. It ingests common robotics log formats (ROS 1, ROS 2, PX4) and outputs data as a pandas DataFrame or PyArrow Dataset.

Details

Author
shouhengyi
Downloads
240
Categories
Other

- Extracts robotics data to pandas DataFrames or PyArrow Datasets
- Supports ROS 1 .bag, ROS 2 .mcap/.db3, and PX4 .ulg logs
- Processes data locally on your hardware (no cloud upload required)
- Provides ready-to-use Docker images for zero‑dependency setup
- Extensible to additional log formats via feature requests

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Bagel Robotics MCP Server
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install with Poetry (poetry install), then run poetry run python3 main.py to process data. Alternatively, use Docker with docker compose up --build <service> after mounting your local data folder. For a scripted workflow, use the reader factory to read topic messages by name.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "bagel robotics mcp server": {
            "bagel": {
                "command": "docker",
                "args": [
                    "compose",
                    "up",
                    "--build",
                    "ros2-kilted"
                ]
            }
        }
    }
}

McpServers

{
    "bagel": {
        "command": "docker",
        "args": [
            "compose",
            "up",
            "--build",
            "ros2-kilted"
        ]
    }
}

Bagel: Bag Extraction Tool

Bagel allows you to extract, transform, and analyze robotics data — fast.

How fast? Cast topic messages to a pandas DataFrame or PyArrow Dataset in under four lines of code.

from src.reader import factory

reader = factory.make_topic_message_reader("./doc/tutorials/data/ros2")
ds = reader.read(["/fluid_pressure"]) # return a pyarrow Dataset
df = ds.to_table().to_pandas() # cast into a pandas DataFrame

You can do much more! Whether you're performing granular robot-level troubleshooting, analyzing fleet-wide performance metrics, or creating high-level executive dashboards, Bagel gets the job done.

Get started today

Join our Discord server

A Sneak Peek

Bagel can visualize camera latency from a robolog:

<p align="center">

</p>

...or aggregate fleet-level exceptions over time:

<p align="center">

</p>

Why Do I Need Bagel?

Robots generate a torrent of sensor data, and our ability to process it is falling behind. Trying to upload massive datasets from the field over flaky networks just doesn’t scale.

Developers have been stuck with bad options:

- 🗑️ Drop data and hope you don't need it later.
- ✂️ Snip logs based on guesswork and miss the unknown unknowns.
- 💸 Pay a fortune in transfer and storage costs to keep everything.

Then came Bagel :bagel:!

Why pay for cloud compute when your robots and servers are sitting idle? Bagel brings the processing to your hardware.

Use your fleet's downtime to aggregate analytics, train models, and auto-triage issues right at the source. With Bagel, you only send the valuable, distilled insights to the cloud, not the raw firehose of data.

Log Formats

Bagel is designed to ingest a wide range of common robotics and sensor log formats out of the box.

| Format | Supported Encodings |
| ------------------------------ | -------------------------- |
| ✅ ROS 2 (.mcap, .db3) | ros1, ros2, protobuf |
| ✅ ROS 1 (.bag) | ros1 |
| ✅ PX4 (.ulg) | ULog |

Don’t See Your Format?

Bagel is built to be extensible. If your preferred format isn’t listed, we encourage you to open a feature request to start a discussion!

Getting Started

Tutorials

- Calculating Acceleration Statistics from a PX4 ULog
- Reading Topic Messages from a ROS 2 Bag

Running in Docker 🐳

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.

Mount Your Data

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 & Replace

Launch the App

Build and start the container with a single command.

docker compose up --build ros2-kilted

For future runs, you can omit the --build flag.

Your local robolog files are now accessible inside the container at /home/ubuntu/data.

Running Locally 🛠️

If local dependencies like ROS are already installed, you can run Bagel directly on your machine.

Prerequisites

First, ensure you have the following tools installed:

- Python 3.10+
- Poetry

Install & Run

Next, use Poetry to install the project dependencies and run the application.

poetry install
poetry run python3 main.py up
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.