data-aggregator-mcp
Search 17 research-data sources at once (data archives, omics repositories and papers) and get one list back. Organism, disease and tissue names are expanded with their synonyms in the 11 sources that accept them, records that share a DOI are collapsed to one, and downloads are checked against the source's checksum where it publishes one.
mcp-name: io.github.musharna/data-aggregator-mcp
Install
Claude Code:
claude mcp add data-aggregator -- uvx data-aggregator-mcp
VS Code and Cursor: the buttons above. Any other MCP client: run
uvx data-aggregator-mcp as a stdio server.
Claude Desktop, pip, and the operate extra
Claude Desktop (claude_desktop_config.json) and most other clients:
{
"mcpServers": {
"data-aggregator": {
"command": "uvx",
"args": ["data-aggregator-mcp"],
"env": { "NCBI_API_KEY": "your-optional-key" }
}
}
}
With pip:
pip install data-aggregator-mcp
data-aggregator-mcp # or: python -m data_aggregator_mcp
operate (SQL and previews over remote files) needs an optional extra:
pip install "data-aggregator-mcp[operate]".
What you can ask
"Find transcriptomes for Orobanche aegyptiaca." The species has been renamed. NCBI Taxonomy maps it to Phelipanche aegyptiaca, and the sources that accept synonyms match both names (the demo above).
"What data came out of this paper?"
resolve("pubmed:40098680")
links geo:GSE284240, bioproject:PRJNA1198054, and 18 sra: experiments
files PMC11910882.xml (open-access full text)
"Can I train a model on this dataset?"
resolve("hf:scikit-learn/iris", use="ml-training")
license_compat ALLOW: "CC0-1.0 grants the permission(s) required for
ml-training: commercial-use, modifications"
The verdict is read from the record's licence metadata. It is advice, not a legal opinion.
resolve also renders citations in any CSL style, checks Crossref for
retractions, scores FAIRness, and exports Croissant or RO-Crate. relate reports
how a set of records connect (a shared accession, DOI or explicit link).
How a search runs
A source that fails is named in the result's errors, never dropped silently.
Compared with other servers
| Server | Searches | One search | Checksum | Remote SQL | Licence check |
|---|---|---|---|---|---|
| data-aggregator-mcp | 17 sources: data archives, omics, papers | yes, DOI dedup | where published | yes | yes |
| Mobus | 20 general and ML data platforms | yes | — | row preview | yes |
| paper-search-mcp | papers: arXiv, PubMed, OpenAlex, Crossref and more | yes, deduplicated | — | — | — |
| ToolUniverse | 1000+ tools: models, datasets, APIs, packages | papers | — | — | — |
| BioMCP | genes, variants, trials, drugs, proteins, papers | yes (search all) |
— | — | — |
— means the project's README doesn't describe it (READMEs read 2026-10-04). Where they are ahead: BioMCP reaches clinical trials, ChEMBL and AlphaFold, which this server doesn't; ToolUniverse covers far more ground overall; paper-search-mcp covers far more literature sources; Mobus also compares datasets and checks schema compatibility. More detail: docs/POSITIONING.md.
Sources
| Source | Discover | Fetch | Checksum |
|---|---|---|---|
| Zenodo | ✅ | ✅ | md5 |
| DataCite → Figshare | ✅ | ✅ | md5 |
| DataCite → Dataverse | ✅ | ✅ | md5 |
| DataCite → OSF | ✅ | ✅ | md5 |
| DataCite → Dryad | ✅ | manifest only¹ | sha-256 (listed) |
| DataCite → Mendeley & others | ✅ | — | — |
| NCBI SRA | ✅ | ✅ (ENA FASTQ) | md5 |
| NCBI GEO | ✅ | ✅ (suppl/) |
none² |
| NCBI BioProject | ✅ | → SRA links | — |
| PubMed / OpenAIRE | ✅ | ✅ (OA full text) | none³ |
| Hugging Face datasets | ✅ | ✅ (resolve URL) | none² |
| DataONE (eco/env) | ✅ | ✅ (Member Node) | md5 / sha-256 |
| OmicsDI → PRIDE | ✅ | ✅ (HTTPS FTP) | none² |
| OmicsDI → MetaboLights | ✅ | ✅ (HTTPS FTP) | sha-256 |
| OmicsDI → other MS repos | ✅ | — | — |
| DataCite → OpenNeuro | ✅ | ✅ (snapshot) | none² |
| DANDI (neurophysiology) | ✅ | ✅ (302→S3) | sha-256 |
| CZ CELLxGENE (single-cell) | ✅ | ✅ (H5AD/RDS) | none² |
| OpenML (ML datasets) | ✅ | ✅ (ARFF) | md5 |
| RCSB PDB (structures) | ✅ | ✅ (.cif/.pdb) | none² |
| UniProtKB (proteins) | ✅ | ✅ (FASTA) | none² |
| BioStudies (EBI) | ✅ | ✅ (study files) | none² |
| GBIF (biodiversity) | ✅ | ✅ (Darwin Core)⁴ | none² |
| data.gov (DCAT-US) | ✅ | ✅ (file URL)⁴ | none³ |
| NASA CMR (Earth science) | ✅ | —⁵ | — |
| GWAS Catalog | ✅ | → PMID bridge | — |
¹ Dryad downloads are token / bot-challenge gated, so fetch returns an error;
resolve still lists the files.
² No upstream checksum, so fetch does not verify these bytes. It still returns
an error on an HTTP error or when the download exceeds max_bytes.
³ No upstream checksum. Files declared as PDF or XML (literature full text, and data.gov distributions with that mediaType) get an HTML sniff: an HTML login or paywall page served in their place returns an error. Other files are not checked.
⁴ Only records that carry a downloadable file (a GBIF Darwin Core Archive, a data.gov distribution URL); metadata-only records are discovery-only.
⁵ Discovery-only: granule downloads need an Earthdata login, which is not wired.
resolve returns the DOI and a data-access portal link.
Reference
Every tool and parameter, the HTTP transport (--transport http), and the
environment variables: docs/reference.md.
Develop
uv venv && uv pip install -e ".[dev]"
uv run pytest -q
uv run ruff check src tests
DATA_AGGREGATOR_MCP_LIVE=1 uv run pytest -k live -q # real-API probes
The README demo (examples/assets/demo.svg) is recorded from live calls by
examples/_demo_search.py; its header has the commands to re-record it.
License
MIT — see LICENSE.
Metadata
Release files for data-aggregator-mcp 0.62.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| data_aggregator_mcp-0.62.0.tar.gz | 1.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| data_aggregator_mcp-0.62.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.5 MB
Release files / data_aggregator_mcp-0.62.0.tar.gz
| Download URL | data_aggregator_mcp-0.62.0.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9d20a1c706bd72cea0b08c1eb9be82f19a4a8f911e5f5c6689346d1940f75a5f
|
|
BLAKE2b-256 checksum How to use checksums |
b18143fee01f41627b934f5f3d200d2cfda8f491c1b7dc756323df81fe5e5ca5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / data_aggregator_mcp-0.62.0-py3-none-any.whl
| Download URL | data_aggregator_mcp-0.62.0-py3-none-any.whl |
|---|---|
| Size | 299.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b4b425e7b6c3e6688baae7c0bf3535c83b190baff43161ea44d7c9d82a1fae52
|
|
BLAKE2b-256 checksum How to use checksums |
11d39f254ef9c35987d9c22600d793d9821c1aa095d0dfc16bc3f11e4e7a40ab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency log