Research-data acquisition MCP — find and fetch datasets across archives, omics registries, and literature
SaferSkills independently audited data-aggregator-mcp (MCP Server) and scored it 45/100 (orange). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 1 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
A base64 string of 128+ characters appears in a documentation file. Encoded prompt injection hides the hostile instruction in base64 — invisible to keyword filters — and relies on the agent's ability to decode it at runtime. There is no normal authoring reason to embed a multi-hundred-byte base64 blob in skill docs.
*.sig, SIGNATURES) outside the documentation.Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
data-aggregator-mcp is an MCP server that lets AI agents search 21 public research-data sources at once and get back one deduplicated list.
<!-- mcp-name: io.github.musharna/data-aggregator-mcp -->
<p align="center"> <img src="https://raw.githubusercontent.com/musharna/data-aggregator-mcp/main/examples/assets/demo.svg" alt="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" width="820"> </p>
Claude Code:
claude mcp add data-aggregator -- uvx data-aggregator-mcpOne-click install for VS Code or Cursor:
Any other MCP client: run uvx data-aggregator-mcp as a stdio server.
<details> <summary>Claude Desktop, pip, and the <code>operate</code> extra</summary>
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_mcpoperate (SQL and previews over remote files) needs an optional extra: pip install "data-aggregator-mcp[operate]".
</details>
"Find transcriptomes for Orobanche aegyptiaca." The species was 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 license 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).
<p align="center"> <img src="https://raw.githubusercontent.com/musharna/data-aggregator-mcp/main/docs/assets/architecture.svg" alt="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 21 sources in parallel (11 archives, 9 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" width="820"> </p>
A source that fails is named in the result's errors, never dropped silently.
What each source can fetch, and which checksum it is verified against: docs/sources.md.
An agent using this server was compared with the same agent using web search, on held-out dataset-finding tasks scored by recall against independently built answer keys, 3 runs per task. Mean recall, server against web search: Claude Haiku 5.5 0.47 against 0.32 (higher on 8 of 10 tasks), Sonnet 5.5 0.54 against 0.52 (5 of 10), Opus 5.5 0.72 against 0.58 (6 of 10). With Haiku the server met round 5's pre-registered "better" rule (higher on at least 8 of 10 tasks, interval above 0) but not the stricter bar for a win across model tiers (9 of 10, Holm-adjusted sign test, p = 0.22); Sonnet and Opus met neither. With Opus it returned fewer wrong entries and answered in about a third of the time; with Sonnet it was faster on 9 of 10 tasks; with Haiku it cost less on 9 of 10.
The two latest Opus 5.5 rounds (2026-10-19, rules written before the runs):
| Tools given to the agent | Round 4 (5 tasks) | Round 5 (10 tasks) |
|---|---|---|
| this server | 0.66 | 0.72 |
| web search | 0.66 | 0.58 |
| ToolUniverse | 0.59 | 0.63 |
| no tools (memory only) | 0.02 | 0.09 |
In round 5 this server was higher on 6 of 10 tasks, where the pre-set rule needed 8. Web search hit the 15-minute limit in 11 of 30 runs, and a run that times out scores
against 599 s (median), with fewer tool calls and fewer wrong entries (precision 0.95 against 0.62). It cost more per run than web search ($2.08 against $1.51, API-equivalent).
We chose the tasks and ran the benchmark ourselves; an outside re-run is welcome. Method and controls: benchmarks/h2h; the Haiku and Sonnet runs: 2026-10-20 re-run.
| Server | Searches | One search | Checksum | Remote SQL | License check |
|---|---|---|---|---|---|
| data-aggregator-mcp | 21 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; ToolUniverse covers far more ground overall; paper-search-mcp covers far more literature sources; Mobus also compares datasets and checks schema compatibility. More: docs/POSITIONING.md.
Every tool and parameter, the HTTP transport (--transport http) and the environment variables: docs/reference.md. Sources that need every word of a query, and how they are searched: every-word sources. Tests, linting and the live API probes: CONTRIBUTING.md.
MIT. See LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.