Bits to atoms. Atoms to bits.
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
If you still have a script called parse_bag_final_v7.py , we need to talk.
Bagel by Extelligence 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.
📦 Install
Bagel is on PyPI as bagel-mcp. No Docker
and no ROS install needed for recorded data.
**Claude Code**, one line (needs uv):
**pip**, into any Python 3.10 to 3.12 environment:
Then point your MCP client at the bagel-mcp command it installed (setup for
Claude Desktop, Cursor and Codex is in the Quickstart).
Open your agent and ask:
> Summarize the bag "~/logs/run_42.mcap".
The ros extra reads ROS 1 and ROS 2 bags. Flight logs, CAN / MDF4, live MQTT
and the rest are extras too. Live ROS
robots (rosbridge) and fleet/edge pipelines run in Docker.
🥯 Key Features
- **Ask in plain language**: No deep domain expertise needed.
- **Transparent calculations**: Deterministic SQL queries. No black-box LLM math.
- **Natural-language pipelines**: "Keep 10s around every hard brake, drop the rest":
one sentence becomes an auditable pipeline: previewed
before a byte is written, then run once, across a fleet, or standing at the edge.
- **Broad LLM support**: Claude Code, Gemini, Cursor, Codex, and more.
- **Installs your way**: pip / uvx for recorded data, Docker images for live robots and the edge.
- **Extensible capabilities**: Bagel can learn new tricks.
- **Wide format coverage**: Missing your data format? Open a ticket.
🥯 Try it in 60 seconds
No MCP client, no LLM, no config: run the same deterministic checks against a
bundled sample log and get a robot-health report card straight to your
terminal.
The ROS2 images (ros2-kilted, ros2-jazzy, ros2-iron, ros2-humble) run
demo the same way, against a lighter bundled sample (px4 is the one that
ships with a flight log rich enough to show every check). Point it at your
own log with demo /path/to/log (mount it with -v first), or keep reading
for the full MCP setup below.
⚡️ Quickstart
Two ways to run Bagel. Pick by data:
| You have | Run Bagel with |
| --- | --- |
| Recorded data: ROS 1 .bag and ROS 2 .db3 / .mcap bags, flight logs (PX4, ArduPilot, Betaflight), CAN / MDF4, CSV / JSON / Parquet, ROS text logs; live MQTT robots | **uvx or pip**, below: no Docker, no ROS install |
| Live ROS robots (rosbridge), fleet and edge deployments | **Docker**, further down: the images carry the ROS stacks and the standing-pipeline runtime |
🐍 Install with uvx or pip (no Docker)
Your MCP client launches the server itself over stdio, so there is nothing to
start or keep running. Pick uvx (nothing to manage: it fetches and caches
Bagel on first use) or pip (a normal install you control).
**With uvx.** Install uv
(curl -LsSf https://astral.sh/uv/install.sh | sh on macOS and Linux), then:
Claude Code:
Any client that takes a JSON MCP config (Claude Desktop, Cursor, Codex, ...):
**With pip.** Python 3.10 to 3.12; a virtual environment keeps it tidy:
For a JSON config, use the full path as the command:
"command": "/Users/you/.bagel-venv/bin/bagel-mcp", "args": ["--transport", "stdio"].
**Apple Silicon Macs:** use an ARM Python, not an Intel Python running through
Rosetta. Check with python3 -c "import platform; print(platform.machine())";
it should print arm64. If it prints x86_64, create a separate native environment:
This avoids the cryptography source build: upstream removed Intel macOS
support in version 49.
Fresh installs currently select MCP 1.30.0, whose dependency chain is
bagel-mcp → mcp → pyjwt[crypto] → cryptography. This applies to the
base package and bagel-mcp[ros], even without the upload extra.
On an Intel Mac, if installation fails while building cryptography, use the
Docker path below. Do not downgrade cryptography to restore an old wheel;
its older releases miss security fixes.
Format support comes as extras, so that a PX4 user never downloads the