data-aggregator-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NCBI_API_KEY | No | Raises the NCBI E-utilities rate limit (3 → 10 req/s) used by the omics, literature, and taxonomy lookups. | |
| UNPAYWALL_EMAIL | No | Enables the Unpaywall fallback leg of literature full-text retrieval. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| searchA | 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), CZ CELLxGENE (single-cell datasets), GBIF (biodiversity datasets), data.gov (US government open data), NASA CMR (Earth-science collections), UniProt (protein entries), BioStudies (EMBL-EBI study records), NGDC (BioProjects deposited in China, with their GSA read sets), the Metabolomics Workbench (metabolomics studies), MassIVE (mass-spectrometry datasets: GNPS metabolomics, proteomics), and Kaggle (machine-learning datasets, many with no DOI). DataCite, OmicsDI, NCBI omics, CELLxGENE, the Metabolomics Workbench, MassIVE and Kaggle match only records holding every query word: errors.all_words names one that matched none, and a hit of theirs lists in unshown_terms the query words it matched in text the hit leaves out, such as a protocol, which resolve shows. DataCite, OmicsDI, CELLxGENE, the Workbench and MassIVE are also searched for records holding only some of the words, ranked below hits naming more; keep queries to NCBI omics and Kaggle short. Returns compact DataResource records (fields with no value left out; long lists cut to their first few, named in truncated{}); a page holds what fits in one tool result, so it can return fewer than size hits, with errors.page_size saying so and next_cursor continuing; errors.next_page counts hits already fetched that name every query word and come on the next page, so to find every match, page while it is there; 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= to expand the query with NCBI-Taxonomy synonyms; results carry normalized taxa[] + plant cross-links. Pass disease= 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= to expand the query with UBERON synonyms (e.g. 'liver' also matches 'iecur'/'jecur'); the expansion is echoed in tissue_expansion. Pass chemical= 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= 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. |
| resolveA | Fetch the full DataResource for a known id (e.g. 'zenodo:1254563', 'datacite:10.5061/dryad.t4b8gtjgj', 'hf:davidcechak/Arabidopsis_thaliana_DNA_v0', 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= 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= (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. |
| fetchA | 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 (unverified) + MetaboLights (sha-256-verified) only, MassIVE/jPOST/iProX/PeptideAtlas/Panorama Public/GNPS/Metabolomics Workbench fail loud; DANDI dandisets (302→S3, sha-256-verified); CZ CELLxGENE H5AD/RDS assets (unverified); OpenML ARFF (md5-verified); RCSB PDB .cif/.pdb structure files (unverified); UniProtKB FASTA (unverified); BioStudies study files (unverified); GBIF Darwin Core Archives (unverified); data.gov dataset distributions (unverified). Fails loud if selected files exceed max_bytes unless force=true. Verifies md5/SHA-256 where the source publishes one; files marked unverified get no integrity check. Writes a .dataresource.json sidecar. |
| list_sourcesA | List wired data sources and their capabilities (layer, kinds, supported filters, auth requirement, rate limit, status). filters_supported names the search parameters a source applies itself: cursor = it pages past page 1; published_after/published_before/kind = filtered upstream, so its total is filtered (any other source is filtered after fetch); organism/disease/tissue/chemical/assay = the synonym expansion reaches its query. |
| operateA | 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. |
| relateA | 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| find_data | Find datasets/data for a topic, optionally scoped to an organism. |
| data_behind_paper | Find the datasets / accessions behind a paper (by DOI, PMID, or title). |
| search_resolve_fetch | Walk the search → resolve → fetch flow for a data need. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| sources | The wired data sources and their capabilities (same payload as the list_sources tool), as JSON. |
TDQS
Scored across 6 tools
Each tool targets a distinct phase of the data workflow: search finds, resolve expands a known id, operate queries remote tabular files without downloading, fetch writes files to disk, list_sources introspects capabilities, and relate proposes joins. The boundaries between operate (in-place query) and fetch (download) and between search (discovery) and resolve (known-id lookup) are clearly drawn in the descriptions.
Five tools are single snake_case verbs (search, resolve, operate, fetch, relate) and one is verb_noun (list_sources), a minor but readable deviation. No camelCase/snake_case mixing or synonym verbs like get/find/query for the same action.
Six tools is well-scoped for a federated data-aggregation server, covering discovery, expansion, remote query, download, source introspection, and cross-record linking. Each tool maps to a distinct, non-redundant capability with no filler.
The surface covers the full read-only lifecycle for a data-aggregation domain: find records (search), get full metadata/files (resolve), inspect tabular data (operate), download artifacts (fetch), understand coverage/limits (list_sources), and link datasets (relate). No obvious dead ends remain for a consumer of external archives.