🔎 data-aggregator-mcp
One MCP server to find and fetch research data across archives, omics registries, and literature — behind a single normalized model.
search one query across 12 sources — Zenodo, DataCite (Dryad /
Figshare / Dataverse / OSF / OpenNeuro / Mendeley), NCBI omics
(GEO / SRA / BioProject), literature (PubMed / OpenAIRE), HuggingFace
datasets, DataONE (eco / environmental), OmicsDI (proteomics /
metabolomics), DANDI (neurophysiology), CZ CELLxGENE (single-cell),
OpenML (ML datasets), RCSB PDB (structures), and the GWAS Catalog —
deduplicated, normalized, and cross-linked. resolve any hit to its file
manifest, citation, trust signals, and the data it points at. fetch it to
disk with checksum verification.
mcp-name: io.github.musharna/data-aggregator-mcp
✨ Why this
Most data MCPs wrap a single source. This one unifies them behind six tools
and one DataResource model, so an agent searches once and gets back comparable
records:
- Multi-domain, one model — generalist archives + raw omics + literature, deduplicated by DOI (the fetchable record wins over bare metadata).
- Taxonomy synonym expansion —
organism="Orobanche aegyptiaca"also matchesPhelipanche aegyptiaca(NCBI Taxonomy), so a species rename doesn't cost you results. - Paper → data bridge — resolve a paper and get links to the GEO / SRA / BioProject / DataCite records it produced.
- Verified fetch — streams to disk with md5 verification where the source exposes a checksum, optional archive unpacking, and a fail-loud integrity sniff that rejects an HTML paywall page served as a "PDF".
- Citations, access & full text — render a citation in any CSL style, get
normalized access/license, and pull open-access full text — all in one
resolve. - Trust signals — usage
metrics(citations / views / downloads / likes), version status (is_latest/superseded_by), andlast_updatedfreshness, surfaced wherever the source exposes them. - Interop exports —
resolve(format="croissant")or"ro-crate"hands a dataset to an ML or research-packaging pipeline as standard JSON-LD. - Operate on data in place —
operatereads the schema, previews rows, or runs a read-only SQLSELECTagainst a remote Parquet/CSV/TSV without downloading it (Parquet footer + DuckDB httpfs range reads). Optional[operate]extra; base install is unchanged. - Relate across records —
relatetakes a handful of resolved ids and reports how they connect — shared accession, shared cross-identifier, an explicit link, or version lineage — naming the literal shared value as evidence. Metadata hints only: it never reads files or executes a join.






