
How to add Bagel to Cursor
Chat with your robotics, drone, and IoT data — deterministic SQL over ROS, PX4, ArduPilot & Betaflight logs. Paste the config into ~/.cursor/mcp.json and restart Cursor.
Last updated June 14, 2026 · 383★ · sse · no auth
Cursor config for Bagel
git clone https://github.com/Extelligence-ai/bagel.git && cd bagel && docker compose run --service-ports ros2-kilted{
"mcpServers": {
"bagel": {
"url": "http://0.0.0.0:8000/sse"
}
}
}Remote server — no local install needed. Restart the client after saving the config.
Setup steps
- 1Open Cursor → Settings → MCP → Add new MCP server (or edit ~/.cursor/mcp.json directly).
- 2Paste the Bagel config below into the "mcpServers" object.
- 3Fill in placeholder secrets, then save.
- 4Cursor reloads MCP servers automatically — check Settings → MCP for a green status dot.
- 5Ask Cursor to use one of Bagel's tools to confirm it's connected.
Before you start
- Docker Desktop
- An MCP-enabled LLM client (e.g. Claude Code, Gemini CLI, Codex, Cursor, Copilot)
- A supported data source: ROS1/ROS2 bags, or PX4 / ArduPilot / Betaflight flight logs
What Bagel can do in Cursor
describe_data_sourceSummarize a data source without returning its messages: a brief summary, basic metadata (start time, message count, config parameters), and a list of available topics grouped by semantic meaning.
describe_topicGenerate a structured summary of a single topic: short summary, DuckDB schema (columns and types), original IDL definition, and guidelines for writing DuckDB SQL queries against it. Does not return actual data.
query_messagesRun a DuckDB SQL query against messages from a single topic, with optional start/end time windowing. Used to filter, aggregate, and downsample message data and answer questions about it.
read_loggingsExtract INFO, WARN, and ERROR log messages from a data source, with optional time filtering. Useful for debugging and diagnostics.
list_live_topicsConnect to a live data stream (e.g. a ROS bridge or PX4 telemetry) and list the topics currently available for subscription.
subscribe_live_topicsConnect to a live data stream and subscribe to one or more topics, persisting the messages to a local sink directory whose path can be fed into the other tools.
run_poml_capabilityRun a predefined capability described in a .poml file (task instructions plus output format), optionally injecting context values to parameterize it. This is how Bagel learns new 'tricks'.
Security
Runs locally via Docker and binds the SSE endpoint to http://0.0.0.0:8000/sse with no authentication, so anyone who can reach that port can query the server. To grant Bagel access to local data files, you must explicitly uncomment and edit the volumes section in compose.yaml. MCP tool outputs can be large; the docs suggest raising MAX_MCP_OUTPUT_TOKENS in Claude Code to avoid token-limit errors.
Bagel + Cursor FAQ
Where is the Cursor config file?
Cursor reads MCP servers from ~/.cursor/mcp.json. Paste the Bagel config there under the "mcpServers" key and restart the client.
Is Bagel safe to use with Cursor?
Runs locally via Docker and binds the SSE endpoint to http://0.0.0.0:8000/sse with no authentication, so anyone who can reach that port can query the server. To grant Bagel access to local data files, you must explicitly uncomment and edit the volumes section in compose.yaml. MCP tool outputs can be large; the docs suggest raising MAX_MCP_OUTPUT_TOKENS in Claude Code to avoid token-limit errors.
Does Bagel let the LLM do the math?
No. Bagel writes the relevant topic messages to an Apache Arrow file and generates deterministic DuckDB SQL queries to compute answers. The SQL is displayed so you can audit it and guide corrections, avoiding black-box LLM arithmetic.
Which data formats and stacks are supported?
Robotics: ROS1 and ROS2 (Noetic, Humble, Iron, Jazzy, Kilted images, plus a ROS1 Noetic + CV variant). Drones: PX4, ArduPilot, and Betaflight flight logs. IoT formats are listed as coming soon.
How do I connect it to Claude Code?
Start the matching Docker service (e.g. `docker compose run --service-ports ros2-kilted`), wait for Uvicorn to report it is running on http://0.0.0.0:8000, then run `claude mcp add --transport sse bagel http://0.0.0.0:8000/sse`. It also works with Gemini CLI, Codex, Cursor, and Copilot via the provided runbooks.