Skip to main content

data-aggregator-mcp

Search 18 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 12 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.

PyPI Python License: MIT CI Glama DOI

Install in VS Code Install in Cursor

mcp-name: io.github.musharna/data-aggregator-mcp

Live calls over stdio: a search for transcriptome data on Orobanche aegyptiaca that NCBI Taxonomy expands to Phelipanche aegyptiaca and that returns hits from SRA, BioProject, PubMed, OpenAIRE and DataCite; resolving one SRA hit to two FASTQ files with sizes and md5 checksums; fetching an OpenML ARFF file with its md5 verified; and SQL over a remote CSV on Hugging Face without downloading it

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

How one search runs: NCBI Taxonomy maps Orobanche aegyptiaca to its current name, Phelipanche aegyptiaca, and the sources that accept synonyms search both names; the query goes to 17 sources in parallel (10 archives, 6 omics, 1 literature); records that share a DOI become one, keeping the copy that can be downloaded; a record can then be resolved to files and checksums, fetched with the checksum verified where the source publishes one, or queried with SQL without downloading it

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 18 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 —
NGDC BioProject (China) ✅ → GSA read sets —

¹ 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.67.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for data-aggregator-mcp 0.67.0
File Size Uploaded
data_aggregator_mcp-0.67.0.tar.gz 1.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for data-aggregator-mcp 0.67.0
File Interpreter ABI Platform
data_aggregator_mcp-0.67.0-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / data_aggregator_mcp-0.67.0.tar.gz

Download URL data_aggregator_mcp-0.67.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
a91a0d3916a4cfc77746349743c2dcccb96bbdc55e53685d0c0c77a97595303d
BLAKE2b-256 checksum
How to use checksums
3c3e675034bd9ce94b8e94eb9ee85d3921339d7d9045b6ee7caf6779f63611af
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 7, 2026.

Transparency log

Release files / data_aggregator_mcp-0.67.0-py3-none-any.whl

Download URL data_aggregator_mcp-0.67.0-py3-none-any.whl
Size 308.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63b04990ae1ef355e4fff4a0a137193175cd53f0ea5230ecad14f3f78c59bbf6
BLAKE2b-256 checksum
How to use checksums
44b9fe782e0e5385ab52de6f2ae18d952c015ef551d5c7b42ddc1e1722b743fc
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 7, 2026.

Transparency log

Release history Release notifications | RSS feed

0.71.0

2 release files

0.70.0

2 release files

This release

0.67.0 This release

2 release files

0.54.1

2 release files

0.54.0

2 release files

0.53.0

2 release files

0.52.0

2 release files

0.51.0

2 release files

0.50.0

2 release files

0.49.0

2 release files

0.48.0

2 release files

0.47.0

2 release files

0.46.1

2 release files

0.46.0

2 release files

0.45.3

2 release files

0.45.2

2 release files

0.45.1

2 release files

0.45.0

2 release files

0.44.0

2 release files

0.43.0

2 release files

0.42.0

2 release files

0.40.0

2 release files

0.39.1

2 release files

0.39.0

2 release files

0.38.0

2 release files

0.37.0

2 release files

0.36.0

2 release files

0.35.0

2 release files

0.34.0

2 release files

0.33.0

2 release files

0.32.0

2 release files

0.31.0

2 release files

0.30.0

2 release files

0.29.0

2 release files

0.28.0

2 release files

0.27.0

2 release files

0.26.0

2 release files

0.25.0

2 release files

0.24.0

2 release files

0.23.0

2 release files

0.22.0

2 release files

0.21.0

2 release files

0.16.0

2 release files

0.11.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page