Data Aggregator
PYPI · DATA-AGGREGATOR-MCP · SCANNED SEP 20
Find & fetch research datasets across 17 archives, omics registries, and literature sources.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 0 of 29 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 53 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability73
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3412 tokens (~487/item across 7 items; 6 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management87
- Stability observed for 26 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 97% of tool parameters carry a description.Partial
- Structured output schemas are declared (83% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Data Aggregator MCP server?
Data Aggregator runs locally as a PyPI package, launched with uvx data-aggregator-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · data-aggregator-mcp
claude mcp add musharna-data-aggregator-mcp -- uvx data-aggregator-mcp
{
"mcpServers": {
"musharna-data-aggregator-mcp": {
"command": "uvx",
"args": [
"data-aggregator-mcp"
]
}
}
} {
"servers": {
"musharna-data-aggregator-mcp": {
"command": "uvx",
"args": [
"data-aggregator-mcp"
]
}
}
} codex mcp add musharna-data-aggregator-mcp -- uvx data-aggregator-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"musharna-data-aggregator-mcp": {
"type": "local",
"command": [
"uvx",
"data-aggregator-mcp"
],
"enabled": true
}
}
} openclaw mcp add musharna-data-aggregator-mcp --command uvx --arg data-aggregator-mcp
mcp_servers:
musharna-data-aggregator-mcp:
command: "uvx"
args: ["data-aggregator-mcp"] {
"McpServers": {
"musharna-data-aggregator-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"data-aggregator-mcp"
]
}
}
} assistant mcp add musharna-data-aggregator-mcp -t stdio -c uvx -a data-aggregator-mcp
{
"mcpServers": {
"musharna-data-aggregator-mcp": {
"command": "uvx",
"args": [
"data-aggregator-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −3
- Stability: pass → 0.80 functional
- 17 Sept 26 0
- Stability: 0.97 → pass security
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 −3
- Stability: pass → 0.80 functional
- 10 Sept 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed pypi/data-aggregator-mcp@0.45.3
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 29 packages
| Packages resolved | 29 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
fetch ~378
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dest | string | – | Destination dir (default managed cache) |
| extract | boolean | – | Unpack downloaded zip/tar archives into the destination (default false). Path-traversal-guarded; counts against max_bytes. |
| files | string | – | Glob over file names (default all) |
| force | boolean | – | Override max_bytes |
| id | string | yes | Source-prefixed id or bare Zenodo id |
| max_bytes | integer | – | Byte ceiling before failing loud |
| Name | Type | Req | Description |
|---|---|---|---|
| bytes | integer | – | – |
| paths | array | – | – |
| resumed | array | – | – |
| skipped | array | – | – |
No examples provided.
list_sources ~103
List wired data sources and their capabilities (layer, kinds, supported filters, auth requirement, rate limit, status).
| Name | Type | Req | Description |
|---|---|---|---|
| check_health | boolean | – | When true, probe 5 sources (zenodo, datacite, omics, literature, huggingface) and attach a 'health' field ({status: up|down, latency_ms, detail}) to those entries; every other source gets health: nul… |
| Name | Type | Req | Description |
|---|---|---|---|
| sources | array | yes | – |
No examples provided.
operate ~268
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.
| Name | Type | Req | Description |
|---|---|---|---|
| columns | array | – | Optional column projection for head. |
| file | string | – | File name within the record; optional when exactly one operable file is present. |
| id | string | yes | DataResource id (e.g. 'zenodo:7654321') |
| n | integer | – | Row count for head/preview |
| op | string | yes | – |
| query | string | – | Read-only SELECT for op='sql'. |
No output schema declared.
No examples provided.
relate ~147
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ids | array | yes | 2-10 source-prefixed resource ids to relate. |
| Name | Type | Req | Description |
|---|---|---|---|
| errors | object | – | – |
| hints | array | – | – |
| input_ids | array | yes | – |
| note | – | – | – |
| resolved | array | yes | – |
No examples provided.
resolve ~785
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cite | string | – | Optional citation format to render onto the result: 'bibtex', 'ris', 'csl-json', or any CSL style name ('apa', 'mla', 'vancouver', ...). DOI-bearing records render via DOI content negotiation; non-DO… |
| fair | boolean | – | When true, attach an RDA-grounded FAIRness assessment under fair{}: a 0–100 overall score plus findable/accessible/interoperable/reusable sub-scores, the count of indicators evaluated, and actionable… |
| format | string | – | Optional export to render onto the result. 'croissant' attaches a file-level Croissant JSON-LD manifest (croissant field); 'ro-crate' attaches a minimal RO-Crate 1.1 manifest (ro_crate field); 'prove… |
| id | string | yes | Source-prefixed id, bare Zenodo id, or DOI |
| trust | boolean | – | When true, attach trust signals (retraction status via Crossref) to the result under trust{}. One extra Crossref call; only meaningful for DOI-bearing records (a DataCite data DOI Crossref does not r… |
| use | string | – | When set, attach a licence-compatibility advisory under license_compat{} for an intended use of the record. Supported intents: 'commercial', 'redistribute', 'modify', 'ml-training' (training = a deri… |
| Name | Type | Req | Description |
|---|---|---|---|
| access | – | – | – |
| access_modes | array | – | – |
| accessions | array | – | – |
| citation | – | – | – |
| creators | array | – | – |
| croissant | – | – | – |
| description | – | – | – |
| doi | – | – | – |
| fair | – | – | – |
| files | array | – | – |
| funding | array | – | – |
| id | string | yes | – |
| identifiers | object | – | – |
| is_latest | – | – | – |
| kind | string | yes | – |
| last_updated | – | – | – |
| license | – | – | – |
| license_compat | – | – | – |
| links | array | – | – |
| metrics | – | – | – |
| mirrors | array | – | – |
| organism | array | – | – |
| provenance | – | – | – |
| ro_crate | – | – | – |
| source | string | yes | – |
| subjects | array | – | – |
| superseded_by | – | – | – |
| taxa | array | – | – |
| title | string | yes | – |
| trust | – | – | – |
| year | – | – | – |
No examples provided.
search ~1,708
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)…
| Name | Type | Req | Description |
|---|---|---|---|
| assay | string | – | Optional assay/method name. Resolved via EDAM topics (EBI OLS); the query is expanded with the canonical name + exact synonyms (e.g. 'ChIP-seq' also matches 'ChIP-sequencing'/'ChIP-exo'). An unknown… |
| chemical | string | – | Optional chemical/compound name. Resolved via ChEBI (EBI OLS); the query is expanded with the canonical name + exact synonyms (e.g. 'caffeine' also matches '1,3,7-trimethylxanthine'), capped to a bou… |
| collapse_mirrors | boolean | – | Opt into conservative cross-repo content dedup (default false). On top of the always-on exact-DOI dedup, folds records that are the SAME dataset deposited under different (or no) DOIs — e.g. a Zenodo… |
| cursor | string | – | Opaque pagination token from a prior search's next_cursor. When set, all other search params are read from the cursor. |
| disease | string | – | Optional disease/phenotype name. Resolved via MeSH (NCBI E-utilities); the query is expanded with the canonical descriptor + entry-term synonyms (e.g. 'breast cancer' also matches 'Breast Neoplasms')… |
| kind | string | – | Keep only results of this kind. |
| multi_query | boolean | – | Opt into diverse multi-query recall expansion: an LLM generates up to a few deliberately-diverse reformulations of your query, each is fanned out across all sources, and the deduped union is re-ranke… |
| organism | string | – | Optional organism name. Resolved via NCBI Taxonomy; the query is expanded with the canonical name + synonyms (e.g. 'Orobanche aegyptiaca' also matches 'Phelipanche aegyptiaca'). The expansion is echo… |
| provenance | boolean | – | Opt into a whole-search RO-Crate 1.1 Run Crate (default false). Attaches provenance_crate{} — a machine-readable manifest documenting this search: the query, the sources queried, the ontology expansi… |
| published_after | integer | – | Keep results with year >= this. |
| published_before | integer | – | Keep results with year <= this. |
| query | string | – | Free-text search query |
| rank | string | – | Result ordering. 'relevance' (default) = upstream/merged order. 'semantic' re-ranks the fetched page by embedding similarity to the query (needs EMBEDDING_API_BASE; degrades to relevance order with a… |
| size | integer | – | Max results (1-50, default 10) |
| sources | array | – | Restrict fan-out to these sources (default: all). Available: zenodo, dataone, gbif, cellxgene, datacite, dandi, omics, literature, huggingface, datagov, nasacmr, omicsdi, openml, pdb, uniprot, gwas,… |
| tissue | string | – | Optional tissue/anatomy name. Resolved via UBERON (EBI OLS); the query is expanded with the canonical term + exact synonyms (e.g. 'liver' also matches 'iecur'/'jecur'). The expansion is echoed in tis… |
| understand | boolean | – | Opt into LLM query understanding: a free-text query is rewritten into a keyword core + structured params (organism/disease/tissue/chemical/assay, kind, year) before fan-out; extracted entities are va… |
| Name | Type | Req | Description |
|---|---|---|---|
| assay_expansion | – | – | – |
| chemical_expansion | – | – | – |
| count | integer | yes | – |
| errors | object | – | – |
| mesh_expansion | – | – | – |
| next_cursor | – | – | – |
| provenance_crate | – | – | – |
| query | string | yes | – |
| query_expansion | – | – | – |
| query_understanding | – | – | – |
| results | array | – | – |
| taxon_expansion | – | – | – |
| tissue_expansion | – | – | – |
| total | integer | yes | – |
| unresolved | array | – | – |
No examples provided.
What is the Data Aggregator MCP server?
Data Aggregator is an MCP server listed in the public MCP registry as io.github.musharna/data-aggregator-mcp. Find & fetch research datasets across 17 archives, omics registries, and literature sources. This page covers its PyPI package (data-aggregator-mcp).
Is the Data Aggregator MCP server safe to use?
Data Aggregator scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Data Aggregator MCP server expose?
Data Aggregator exposes 6 tools: search, resolve, fetch, list_sources, operate, relate. Their descriptions and schemas cost roughly 3,389 tokens of context every time the server is loaded.
Is the Data Aggregator MCP server still maintained?
Data Aggregator is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.