Query robotics, drone, and IoT data in plain English through an MCP server, with an intelligent edge data reduction pipeline that keeps only the data that matters.
# Add to your Claude Code skills
git clone https://github.com/Extelligence-ai/bagelGuides for using mcp servers skills like bagel.
Last scanned: 8/13/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-08-13T05:39:51.225Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how bagel compares with popular alternatives.
bagel is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Extelligence-ai. Query robotics, drone, and IoT data in plain English through an MCP server, with an intelligent edge data reduction pipeline that keeps only the data that matters. It has 405 GitHub stars.
Yes. bagel passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/Extelligence-ai/bagel" and add it to your Claude Code skills directory (see the Installation section above).
bagel is primarily written in Python. It is open-source under Extelligence-ai on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh bagel against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
From $49 · 30 days · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
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.
Bagel is on PyPI as bagel-mcp. No Docker
and no ROS install needed for recorded data.
Claude Code, one line (needs uv):
claude mcp add bagel -- uvx --from "bagel-mcp[ros]" bagel-mcp --transport stdio
pip, into any Python 3.10 to 3.12 environment:
pip install "bagel-mcp[ros]"
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.
pip / uvx for recorded data, Docker images for live robots and the edge.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.
docker run -it --rm ghcr.io/extelligence-ai/bagel/px4:latest demo
sample.ulg - 41.5s, 2018 messages, 77 topics
Power ⚠️ min 21.07V, largest drop 2.37V at ~t=+4.8s, end 23.45V (battery_status_0)
IMU ✅ accel_z stddev 1.6x the log baseline at ~t=+36.8s (sensor_combined_0)
GPS — skipped: no GPS topic
Data gaps ✅ no gap > 1.05x median interval (checked battery_status_0, sensor_combined_0)
...
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.
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 |
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:
claude mcp add bagel -- uvx --from "bagel-mcp[ros]" bagel-mcp --transport stdio
Any client that takes a JSON MCP config (Claude Desktop, Cursor, Codex, ...):
{
"mcpServers": {
"bagel": {
"command": "uvx",
"args": ["--from", "bagel-mcp[ros]", "bagel-mcp", "--transport", "stdio"]
}
}
}
With pip. Python 3.10 to 3.12; a virtual environment keeps it tidy:
python3 -m venv ~/.bagel-venv
~/.bagel-venv/bin/pip install "bagel-mcp[ros]"
claude mcp add bagel -- ~/.bagel-venv/bin/bagel-mcp --transport stdio
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:
uv venv --seed --python cpython-3.12-macos-aarch64-none ~/.bagel-arm-venv
~/.bagel-arm-venv/bin/python -m pip install "bagel-mcp[ros]"
claude mcp add bagel -- ~/.bagel-arm-venv/bin/bagel-mcp --transport stdio
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
automotive parsers. List the ones you need, comma-separated:
uvx --from "bagel-mcp[ros,px4,automotive]" bagel-mcp --transport stdio, or
pip install "bagel-mcp[ros,px4,automotive]". If you ask about a format whose
extra is missing, Bagel's error names the exact command to add it.
| Extra | Adds |
|---|---|
ros |
ROS 1 .bag and ROS 2 .db3 bags (reading, and the reduce / snippet writers), in pure Python |
px4 |
PX4 .ulg |
ardupilot |
ArduPilot .bin |
betaflight |
Betaflight .bbl / .bfl |
automotive |
CAN captures (.blf, .asc + DBC) and ASAM MDF4 |
iot |
Live MQTT (incl. Sparkplug B) and InfluxDB sources |
viz |
Rerun export |
upload |
GCS and Azure Blob upload tasks |
cloudini |
Cloudini point-cloud tasks |
MCAP, CSV / JSON / Parquet, ROS text logs, PlotJuggler / Lichtblick / LeRobot exports and S3 upload need no extra.
PX4 log parsing does not require Git. Git and network access are used only for
optional field descriptions; pass download_description: false in the tool's
args to skip fetching those descriptions.
To upgrade, repeat the extras you installed with, so their dependencies
update too. uvx picks up new releases on its own (force it with
uvx --refresh --from "bagel-mcp[ros,px4]" bagel-mcp --help); with pip, run
pip install -U "bagel-mcp[ros,px4]", using your own list of extras.
Then prompt, pointing at your own file:
Summarize the metadata of the MCAP bag "~/logs/run_42.mcap".
[!NOTE] No ROS installation is needed for bag files: the
rosextra reads and writes them with the pure-Python rosbags library (sqlite3 and MCAP storage, zstd / bz2 / lz4 compression, message types from the bag itself or from the bundled interface definitions of every distro from Humble on). Live ROS topics (rosbridge) and the fleet/edge runtime stay with Docker.
[!TIP] Already have Claude Code? Just paste the link to thi