MCAP MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCAP MCP ServerShow me the topics in session_003.mcap"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCAP MCP Server
Query your robot's MCAP recordings with SQL — straight from your LLM.
Setup
{
"mcpServers": {
"mcap-query": {
"command": "uvx",
"args": ["mcap-mcp-server[all]"]
}
}
}No install, no database, no API keys. Requires uv.
Usage
Just talk to your LLM:
"Tell me what topics are in session_003.mcap"
"In session_017.mcap find all moments where voltage dropped below 22V"
"Correlate IMU acceleration with motor current."
"Compare average battery voltage across my last 5 runs"
"What version of mcap-mcp-server am I running? Update it"
Tools
Tool | Needs loading | What it does |
| no | Find MCAP files in your project (or any path) |
| no | Metadata, channels, attachments for a file |
| no | SQL table names & column types — for query planning |
| — | Decode MCAP into DuckDB (the LLM calls this automatically) |
| yes | Run SQL (full DuckDB — including ASOF JOIN) |
| no | Server version, available decoders, upgrade command |
Project documentation — configuration, Docker, development setup, and architecture.
Example SQL (under the hood)
-- Time-windowed stats
SELECT (timestamp_us / 1000000) as second,
AVG(voltage) as avg_v, MIN(voltage) as min_v
FROM battery GROUP BY second ORDER BY second
-- Cross-sensor correlation via ASOF JOIN
SELECT b.timestamp_us, b.voltage, i.linear_acceleration_x
FROM battery b ASOF JOIN imu i ON b.timestamp_us >= i.timestamp_us
-- Multi-recording comparison
SELECT 'run1' as run, AVG(voltage) FROM r1_battery
UNION ALL
SELECT 'run2', AVG(voltage) FROM r2_batteryPerformance
Metadata tools (list_recordings, get_recording_info, get_schema) return in < 1 ms regardless of file size. SQL queries execute in 1–20 ms once data is loaded. The one-time load_recording cost scales with file size:
Messages | File size | Load time | Memory | Query time |
1K | 23 KB | 8 ms | < 1 MB | 1 ms |
10K | 220 KB | 90 ms | 0.5 MB | 1–3 ms |
100K | 2.2 MB | 0.7 s | 5 MB | 1–5 ms |
500K | 11 MB | 3.9 s | 23 MB | 2–9 ms |
1M | 23 MB | 8 s | 46 MB | 2–13 ms |
2M | 48 MB | 18 s | 92 MB | 2–22 ms |
Measured on Apple M4 with JSON-encoded messages, 5 fields per message. Query times are median across aggregation, filter, and window function queries. Memory is the DuckDB in-memory footprint (default budget: 2 GB).
Tip: use
topicsandstart_time/end_timefilters onload_recordingto load only what you need.
Update
uvx mcap-mcp-server[all] --upgradeOr ask your LLM — the get_version tool returns the running version and the upgrade command.
License
GNU General Public License v3.0 — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/turkenberg/mcap_mcp_server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server