# musharna/data-aggregator-mcp [Health: Active]

**Category:** 🔬 Research  
**Repository:** https://github.com/musharna/data-aggregator-mcp  
**GitHub Stars:** 2  
**Views:** 3  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/musharna-data-aggregator-mcp

## Description
Search and fetch research datasets across Zenodo, DataCite (Dryad/Figshare/Dataverse/OSF), NCBI omics (GEO/SRA/BioProject), and literature (PubMed/OpenAIRE) behind one normalized model — DOI deduplication, NCBI-Taxonomy synonym expansion, paper→data linking, and checksum-verified download. uvx data-aggregator-mcp.

## Tools
Capabilities this server exposes over MCP:

- **search** — Search public research-data archives, omics registries, and the literature for datasets, software, publications, and sequencing data. Fans out across Zenodo, DataCite (Dryad, Figshare, Dataverse, OSF, Mendeley, OpenNeuro), NCBI omics (GEO, SRA, BioProject), literature (PubMed + OpenAIRE), HuggingFace Hub (datasets), DataONE (eco/environmental federation), OmicsDI (proteomics/metabolomics), RCSB PDB (macromolecular structures), GWAS Catalog (genotype-phenotype studies), OpenML (ML datasets), DANDI (neurophysiology dandisets), and CZ CELLxGENE (single-cell datasets). Returns compact DataResource records; per-source failures are reported in errors{}. Use resolve for the full record (SRA resolve attaches the ENA FASTQ manifest; publication resolve attaches links[] to datasets/accessions, normalized identifiers (pmid/pmcid/doi), and — when open access — a full-text file), then fetch to download files. Pass organism=<name> to expand the query with NCBI-Taxonomy synonyms; results carry normalized taxa[] + plant cross-links. Pass disease=<name> to expand the query with MeSH descriptor synonyms (e.g. 'breast cancer' also matches 'Breast Neoplasms'); the expansion is echoed in mesh_expansion. Pass tissue=<name> to expand the query with UBERON synonyms (e.g. 'liver' also matches 'iecur'/'jecur'); the expansion is echoed in tissue_expansion. Pass chemical=<name> to expand the query with ChEBI compound synonyms (e.g. 'caffeine' also matches '1,3,7-trimethylxanthine'); the expansion is echoed in chemical_expansion. Pass assay=<name> to expand the query with EDAM assay/method synonyms (e.g. 'ChIP-seq' also matches 'ChIP-sequencing'); echoed in assay_expansion. Pass collapse_mirrors=true to opt into conservative cross-repo mirror collapse: same-dataset copies under different/no DOIs are folded into one record, with the folded copies annotated under mirrors[]. An ontology param that matches no term in its registry (e.g. organism='yeast' — NCBI Taxonomy indexes no such common name) is reported in unresolved[] and the search runs WITHOUT that expansion, so a dropped filter is never silent. Clients that support form elicitation are asked for a replacement term before the search runs.
- **resolve** — Fetch the full DataResource for a known id (e.g. 'zenodo:7654321', 'datacite:10.5061/dryad.x', 'hf:owner/name', a bare Zenodo record id, or a DOI), including the complete files[] manifest. Publication resolve also attaches normalized identifiers (pmid/pmcid/doi) and, when open access, a full-text file. Pass cite=<format> to render a citation onto the result (citation field); omitted means no citation. Pass trust=true to attach retraction status (via Crossref) under trust{}. Pass fair=true to attach an RDA-grounded FAIRness score (0–100 + F/A/I/R sub-scores + actionable gaps) computed from the record under fair{}. Pass use=<intent> (commercial/redistribute/modify/ml-training) to attach a licence-compatibility advisory (ALLOW/REVIEW/DENY, not legal advice) under license_compat{}. Pass format=provenance for a one-call RO-Crate 1.1 data-availability dossier (under provenance{}) composing version-currency, licence+SPDX, FAIR score, retraction status, and the source/DOI/ID chain — it auto-attaches fair + trust.
- **fetch** — Download a resource's files to local disk and return the PATHS (never the file contents). Fetchable backends: Zenodo (md5-verified); SRA via ENA FASTQ (md5-verified); GEO supplementary files (unverified); DataCite sub-repos — Figshare/Dataverse/OSF (md5-verified), OpenNeuro (snapshot manifest, unverified), Dryad is manifest-only (resolve lists files, fetch fails loud), Mendeley + other DataCite repos fail loud; PubMed/OpenAIRE open-access full text (EuropePMC XML / Unpaywall PDF, unverified); HuggingFace Hub (unverified); DataONE Member-Node objects (md5/SHA-256-verified); OmicsDI — PRIDE + MetaboLights only (unverified), MassIVE/GNPS/PeptideAtlas/Metabolomics Workbench fail loud; DANDI dandisets (302→S3, unverified); CZ CELLxGENE H5AD/RDS assets (unverified); OpenML ARFF (md5-verified); RCSB PDB .cif/.pdb structure files (unverified). Fails loud if selected files exceed max_bytes unless force=true. Verifies checksums; writes a .dataresource.json sidecar.
- **list_sources** — List wired data sources and their capabilities (layer, kinds, supported filters, auth requirement, rate limit, status).
- **operate** — Inspect or query a remote tabular file (Parquet/CSV/TSV) WITHOUT downloading it. op='schema' returns columns+types; 'preview' a small sample; 'head' the first n rows; 'sql' a read-only SELECT against the file (exposed as the view 'data', e.g. "SELECT * FROM data WHERE x > 1"). op='peek' profiles every column WITHOUT downloading — type, null-rate, approximate distinct count, min/max, and numeric quartiles (a DuckDB SUMMARIZE; like head/sql it reads the whole file, so it honors the source-size ceiling). Addresses a file by catalog id + file name (resolve the id first to see files[] and access_modes). Requires the [operate] extra; fails loud if the file is not an operable tabular file.
- **relate** — Given 2-10 resource ids, return metadata-level join/harmonization HINTS: how the datasets relate and on what key they could be joined. Detects shared accessions (BioProject/SRA/GEO), shared cross-identifiers (doi/pmid/pmcid), explicit links between the inputs, and version lineage. HINTS ONLY — it does not read file columns, fetch files, or execute any join/merge/conversion; each hint names the shared value as evidence. Resolve ids first if you only have a search result. Per-id resolve failures are reported, not fatal.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "data-aggregator-mcp": {
    "command": "uvx",
    "args": ["data-aggregator-mcp"]
  }
}
```

## Documentation

## What musharna/data-aggregator-mcp does

The musharna/data-aggregator-mcp MCP server provides six tools for discovering and working with public research resources: `search`, `resolve`, `fetch`, `list_sources`, `operate`, and `relate`. It covers general data archives, sequencing and omics registries, publications, machine-learning datasets, biodiversity and environmental catalogs, structures, single-cell data, and other specialized repositories described by the source configuration.

Search results use normalized `DataResource` records. DOI-based deduplication can combine records that represent the same dataset, and optional mirror collapse folds conservative cross-repository copies into a single result. Publication resolution can expose linked datasets and accessions, normalized identifiers, and open-access full text when available.

## How it works

`search` fans a query out to the configured sources and reports source-specific failures in an `errors` object rather than hiding them. Organism terms can expand through NCBI Taxonomy; disease, tissue, chemical, and assay terms can use MeSH, UBERON, ChEBI, and EDAM synonym registries. Unresolved ontology terms are reported and do not silently become filters. Clients that support form elicitation may be asked for a replacement term.

Use `resolve` with a catalog identifier, DOI, or supported repository identifier to obtain the complete file manifest. It can also add citation output, Crossref-based retraction status, FAIR scoring, licence-compatibility guidance, or a provenance dossier. `fetch` writes selected files to local disk, returns paths rather than file contents, verifies checksums where the source provides them, and creates a `.dataresource.json` sidecar.

`operate` reads remote Parquet, CSV, or TSV files without downloading them. It supports schema inspection, previews, row retrieval, column profiling, and read-only SQL against a `data` view. `relate` compares two to ten resource IDs and returns evidence-based metadata hints based on shared accessions, identifiers, explicit links, or version lineage. It does not join or transform file contents.

## Setup and configuration

Run the musharna/data-aggregator-mcp MCP server with `uvx data-aggregator-mcp`, or install it with pip and run `data-aggregator-mcp` or `python -m data_aggregator_mcp`. The optional `operate` capability requires the `[operate]` extra. The default transport is stdio, which lets fetched files be written to the client machine.

The server also supports Streamable HTTP through `data-aggregator-mcp --transport http`. HTTP mode serves the `/mcp/` endpoint and includes host and origin controls. Non-loopback binds require an explicit allowed host. In HTTP deployments, `fetch` writes to the server filesystem, so returned paths may not be readable by the calling client.

An `NCBI_API_KEY` may be supplied for NCBI access, but the provided setup does not identify any mandatory credential or paid API dependency.

## Tools and capabilities

- Search across configured archives, literature services, omics registries, and specialist catalogs.
- Resolve records into normalized metadata, identifiers, files, citations, trust signals, FAIR scores, and provenance.
- Download supported resources with source-specific checksum or verification behavior.
- Inspect remote tabular files with DuckDB-backed schema, preview, profiling, and SQL operations.
- Compare resource metadata to identify possible accessions, cross-identifiers, links, and lineage.
- List source capabilities, supported filters, authentication requirements, rate limits, and status.

The source support is not uniform. Some repositories are metadata-only or manifest-only, while others support downloads with verified checksums. `fetch` fails explicitly for unsupported backends and refuses selections over the configured size ceiling unless forced.

## Getting started with this musharna/data-aggregator-mcp MCP server
Always refer to the official documentation for the most accurate and up-to-date information.

_Full upstream README: https://allmcps.com/mcp/musharna-data-aggregator-mcp/readme_

