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.0.tar.gz (84.0 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.0-py3-none-any.whl (44.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mcap_mcp_server-0.5.0.tar.gz
  • Upload date:
  • Size: 84.0 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.0.tar.gz
Algorithm Hash digest
SHA256 7a39e4bd5e162dd353ce4d69770bbad1a1fc2985e8e2c641c2f815280c7e1f5a
MD5 a0e3104adc908fe2b2ad82d81ea55adc
BLAKE2b-256 cb46504977adbaaf8ecea9bf69078f3c358715b081c5a4d6cbd9982021c5a6dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcap_mcp_server-0.5.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcap_mcp_server-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3487a7d08b9056df47e2a72ce32175d5ee7c35eec2dc7e6df62c0be650c5abae
MD5 c073758576532c51ba410af0adfe7575
BLAKE2b-256 c796275b203fac6779f18f111a642840fab4a6b8cdcbf10fbf463f295f8aade1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcap_mcp_server-0.5.0-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