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 |
|---|---|---|
list_recordings |
no | Find MCAP files in your project (or any path) |
get_recording_info |
no | Metadata, channels, attachments for a file |
get_schema |
no | SQL table names & column types — for query planning |
load_recording |
— | Decode MCAP into DuckDB (the LLM calls this automatically) |
query |
yes | Run SQL (full DuckDB — including ASOF JOIN) |
get_version |
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_battery
Performance
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] --upgrade
Or ask your LLM — the get_version tool returns the running version and the upgrade command.
License
GNU General Public License v3.0 — see LICENSE.
Metadata
Release files for mcap-mcp-server 0.5.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcap_mcp_server-0.5.1.tar.gz | 72.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcap_mcp_server-0.5.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 117.1 kB
Release files / mcap_mcp_server-0.5.1.tar.gz
| Download URL | mcap_mcp_server-0.5.1.tar.gz |
|---|---|
| Size | 72.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ecbdc9bc8441d438c57e783183aa2ff8f58e688f0ad27a43377bb49823c458d
|
|
BLAKE2b-256 checksum How to use checksums |
37fa41ff18595b03b51763424799ad631fe4aa9ecdf57a79bba1bc68abdd495c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.
Transparency logRelease files / mcap_mcp_server-0.5.1-py3-none-any.whl
| Download URL | mcap_mcp_server-0.5.1-py3-none-any.whl |
|---|---|
| Size | 44.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
edf9003509e3dde17e33b751c93cea153b8627fc559492b08f78347c140a07dc
|
|
BLAKE2b-256 checksum How to use checksums |
b367d2310325417a32057ff3b3a0f95f7a7b404663e2d7fe74d07a0e6e4eea2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.
Transparency logSecurity for mcap-mcp-server 0.5.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mcap_mcp_server-0.5.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 5, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.