Problem
Sleep-staging and biosignal work constantly starts the same way: find a public corpus with the right modality pair, license, and access tier. PhysioNet, NSRR, Zenodo, HuggingFace, OpenNeuro, and Kaggle each have their own search, schema, and failure modes. An LLM client should not have to know any of that.
What it is
MedDataMCP is a unified MCP server for federated medical and biosignal dataset discovery. One query fans out across those six sources and returns ranked, normalized results.
Design
- Connector-based registry. Adding a new repository is one connector file plus one registry line.
find_paired_datasetsfor modality-pair discovery (for example PSG + IMU), which is the actual query sleep-staging work needs.- A normalized
DatasetRecordschema: id, source, title, modalities, license, access tier. - In-memory TTL cache, per-source error isolation, and boundary-aware modality keyword inference so one flaky source does not take down the rest.
- pytest coverage for connectors, registry fan-out, and modality detection.
The useful part is not the search UI. It is that an agent can ask a research question in one tool call and get a record it can actually act on.