Configuration
Configuration is layered: defaults → TOML file → environment variables → CLI arguments. Each layer overrides the previous.
Environment variables
Variable |
Default |
Description |
|---|---|---|
|
|
Root directory to scan for MCAP files |
|
|
Scan subdirectories |
|
|
Max memory for loaded data (minimum: 64) |
|
|
SQL query timeout (seconds) |
|
|
Default result row limit |
|
|
Maximum allowed row limit |
|
|
Log level |
|
|
Transport: |
|
|
Port for SSE transport |
|
|
Max nesting depth for message flattening |
TOML config file
Optional. Place a mcap-mcp-server.toml in the working directory:
[server]
data_dir = "/data/recordings"
recursive = true
transport = "stdio"
[limits]
max_memory_mb = 4096
query_timeout_s = 60
default_row_limit = 1000
max_row_limit = 50000
[decoder]
flatten_depth = 3
[logging]
level = "INFO"
MCP client integration
Cursor (.cursor/mcp.json)
{
"mcpServers": {
"mcap-query": {
"command": "uvx",
"args": ["mcap-mcp-server[all]"]
}
}
}
Set
MCAP_DATA_DIRonly if recordings live outside the project directory.
Claude Desktop (claude_desktop_config.json)
Same format as Cursor.
Docker (SSE)
docker run -d \
-v /data/recordings:/data:ro \
-e MCAP_DATA_DIR=/data \
-e MCAP_TRANSPORT=sse \
-p 8080:8080 \
ghcr.io/turkenberg/mcap-mcp-server:latest
Then in Cursor: "url": "http://localhost:8080/sse".