Skip to main content

A generic SQL query interface for MCAP robotics data via the Model Context Protocol

Project description

MCAP MCP Server

Query your robot's MCAP recordings with SQL — straight from your LLM.

codecov License

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 topics and start_time/end_time filters on load_recording to 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcap_mcp_server-0.5.1.tar.gz (72.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcap_mcp_server-0.5.1-py3-none-any.whl (44.2 kB view details)

Uploaded Python 3

File details

Details for the file mcap_mcp_server-0.5.1.tar.gz.

File metadata

  • Download URL: mcap_mcp_server-0.5.1.tar.gz
  • Upload date:
  • Size: 72.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mcap_mcp_server-0.5.1.tar.gz
Algorithm Hash digest
SHA256 1ecbdc9bc8441d438c57e783183aa2ff8f58e688f0ad27a43377bb49823c458d
MD5 ed35875b46322696b44fda1f1575e52d
BLAKE2b-256 37fa41ff18595b03b51763424799ad631fe4aa9ecdf57a79bba1bc68abdd495c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcap_mcp_server-0.5.1.tar.gz:

Publisher: ci.yml on turkenberg/mcap_mcp_server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcap_mcp_server-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mcap_mcp_server-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 edf9003509e3dde17e33b751c93cea153b8627fc559492b08f78347c140a07dc
MD5 11f84c5d9c4d6141270811dbe2447045
BLAKE2b-256 b367d2310325417a32057ff3b3a0f95f7a7b404663e2d7fe74d07a0e6e4eea2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcap_mcp_server-0.5.1-py3-none-any.whl:

Publisher: ci.yml on turkenberg/mcap_mcp_server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page