Plain-English analysis of robotics, drone, and IoT data, with intelligent edge data reduction.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Bagel lets you ask questions about robotics, drone, and IoT data in plain English. Every calculation over your message data is DuckDB SQL, not model guesswork, and Bagel shows you the query so you can audit it.
Is my IMU sensor overheating?
Bagel also has an intelligent edge data reduction pipeline: describe an event and Bagel runs the detection on the robot, keeping the windows that matter and dropping the rest. An MCP server puts all of it in your LLM's hands: Claude Code, Gemini, Cursor, or a fully local model.
Bagel was the first MCP server to ship a real analysis toolkit for robotics data, and it keeps the LLM where it belongs: in front of your logs, never in your robot's control loop.
[!TIP] Already have Claude Code? Just paste the link to this repo and tell Claude what environment you want:
Set up https://github.com/Extelligence-ai/bagel for ROS2 Kilted.
Claude will clone the repo, start Docker, and wire up the MCP connection for you.
Install Docker Desktop and Claude Code (or another MCP-enabled LLM).
[!TIP] Port 8000 already in use? Set
MCP_SERVER_PORTto something else, for exampleMCP_SERVER_PORT=8100 docker compose run --service-ports ros2-kilted, and use that port in step 2.
Pick the service that matches your environment:
| Service | Use case |
|---|---|
ros2-kilted | ROS2 Kilted (latest) |
ros2-jazzy | ROS2 Jazzy |
ros2-iron | ROS2 Iron |
ros2-humble | ROS2 Humble |
ros1-noetic | ROS1 Noetic |
ros1-noetic-cv | ROS1 Noetic + CV |
px4 | PX4 flight logs |
ardupilot | ArduPilot flight logs |
betaflight | Betaflight flight logs |
iot | IoT / MQTT (live) |
[!TIP] To give Bagel access to your local files, edit
compose.yamlbefore starting Docker: uncomment and update thevolumessection under your chosen service.
Wait for this output:
In a new terminal:
[!NOTE] The MCP endpoint is bound to
localhostonly (not exposed to the LAN) for security. To share it with other machines, drop the127.0.0.1prefix incompose.yamland put an authenticated proxy in front: see SECURITY.md.
Summarize the metadata of the ROS2 bag "./data/sample/ros2/mcap".
Thatβs it: youβre chatting with your data.
Swap step 2 for a local model: your data and your LLM stay on the machine:
Model picks, expectations, and troubleshooting: Local LLMs guide.
Bagel works with any MCP-enabled LLM. Setup runbooks for tested alternatives:
Canβt find your LLM? Open a ticket.
Bagel ships an agent plugin: four skills that teach the agent when and how
to drive the server (log triage, pipeline authoring, live sinks, visualization
export) plus the MCP connection, wired automatically. The same plugin/
directory serves both Claude Code and OpenAI Codex.
Codex and ChatGPT users: install bagel from the
OpenAI Plugins Directory
(one click), or clone the repo and add it as a plugin marketplace (the repo
carries .agents/plugins/marketplace.json). Directory installs bundle the
skills only, so also connect the server once in ~/.codex/config.toml:
Repo-marketplace and Claude Code installs wire this connection automatically.
Then start the container for your data format (see Quickstart): the plugin
connects to http://localhost:8000/mcp by default. Any other MCP client can
discover the same workflows server-side via the list_agent_capabilities tool.
A robot records more data than you can afford to move. Bagel turns a question into a detector, runs it where the data is recorded, and ships only the windows around real events.
Here it is in one conversation:
The session above: a 20-minute (1,200 s) recording and the prompt "keep 10 seconds before and after every deceleration harder than β10 m/sΒ²". The preview detects 7 events, merges them into 4 windows, and keeps 92 s of the 1,200 (7.6%); the run writes a 2.1 GB bag down to 161 MB. These figures are illustrative demo output, not a measured benchmark: the ratio is event-window duration over total duration, so it depends entirely on your workload.
| Industry | Formats |
|---|---|
| Robotics | ROS1, ROS2, MCAP (any profile), Copper (via MCAP export), ROS text logs (~/.ros/log) |
| Drones | PX4, ArduPilot, Betaflight |
| Automotive | ASAM MDF4 (.mf4), CAN captures (.blf/.asc + DBC) Β· beta |
| IoT | MQTT (live, Sparkplug B), PostgreSQL / TimescaleDB, InfluxDB 3 |
| Hardware state | WaffleForm snapshots (.waffleform.yaml), auto-detected via waffle-iron Β· beta |
You already have ros2 *, PlotJuggler, and grep. Bagel doesn't replace them: it
answers the questions they make you work for, then hands off to them:
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/bagel)<a href="https://allmcps.com/mcp/bagel"><img src="https://allmcps.com/api/badge/bagel?style=directory" alt="Bagel on AllMCPs" /></a>