musharna/data-aggregator-mcp

musharna/data-aggregator-mcp

от musharna
Объединяет поиск и загрузку исследовательских данных из 12+ источников (Zenodo, NCBI, PubMed) через единую модель. Полезен ученым, работающим с омиксными данными, публикациями и ML-датасетами — оди...

🔎 data-aggregator-mcp

One MCP server to find and fetch research data across archives, omics registries, and literature — behind a single normalized model.

PyPI Python Downloads License: MIT CI Glama

search one query across 12 sourcesZenodo, DataCite (Dryad / Figshare / Dataverse / OSF / OpenNeuro / Mendeley), NCBI omics (GEO / SRA / BioProject), literature (PubMed / OpenAIRE), HuggingFace datasets, DataONE (eco / environmental), OmicsDI (proteomics / metabolomics), DANDI (neurophysiology), CZ CELLxGENE (single-cell), OpenML (ML datasets), RCSB PDB (structures), and the GWAS Catalog — deduplicated, normalized, and cross-linked. resolve any hit to its file manifest, citation, trust signals, and the data it points at. fetch it to disk with checksum verification.

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

data-aggregator-mcp stdio demo — initialize, tools/list (search, resolve, fetch, operate, relate, list_sources), and a live list_sources call showing the wired sources across archives, omics, and literature

✨ Why this

Most data MCPs wrap a single source. This one unifies them behind six tools and one DataResource model, so an agent searches once and gets back comparable records:

  • Multi-domain, one model — generalist archives + raw omics + literature, deduplicated by DOI (the fetchable record wins over bare metadata).
  • Taxonomy synonym expansionorganism="Orobanche aegyptiaca" also matches Phelipanche aegyptiaca (NCBI Taxonomy), so a species rename doesn't cost you results.
  • Paper → data bridge — resolve a paper and get links to the GEO / SRA / BioProject / DataCite records it produced.
  • Verified fetch — streams to disk with md5 verification where the source exposes a checksum, optional archive unpacking, and a fail-loud integrity sniff that rejects an HTML paywall page served as a "PDF".
  • Citations, access & full text — render a citation in any CSL style, get normalized access/license, and pull open-access full text — all in one resolve.
  • Trust signals — usage metrics (citations / views / downloads / likes), version status (is_latest / superseded_by), and last_updated freshness, surfaced wherever the source exposes them.
  • Interop exportsresolve(format="croissant") or "ro-crate" hands a dataset to an ML or research-packaging pipeline as standard JSON-LD.
  • Operate on data in placeoperate reads the schema, previews rows, or runs a read-only SQL SELECT against a remote Parquet/CSV/TSV without downloading it (Parquet footer + DuckDB httpfs range reads). Optional [operate] extra; base install is unchanged.
  • Relate across recordsrelate takes a handful of resolved ids and reports how they connect — shared accession, shared cross-identifier, an explicit link, or version lineage — naming the literal shared value as evidence. Metadata hints only: it never reads files or executes a join.
Инструменты были проиндексированы:
fetch

Загружает файлы ресурса на локальный диск и возвращает ПУТИ (но не содержимое файлов). Бэкенды для загрузки: Zenodo (проверен по md5); SRA через ENA FASTQ (проверен по md5); дополнительные файлы GEO (не проверены); субрепозитории DataCite - Figshare/Dataverse/OSF (проверены по md5), OpenNeuro (манифест снимка, не проверен), Dryad только манифест (resolve перечисляет файлы, fetch завершается ошибкой), Mendeley и другие репозитории DataCite завершаются ошибкой; полнотекстовый доступ PubMed/OpenAIRE (XML EuropePMC / PDF Unpaywall, не проверен); HuggingFace Hub (не проверен); объекты DataONE Member-Node (проверены по md5/SHA-256); OmicsDI - только PRIDE + MetaboLights (не проверены), MassIVE/GNPS/PeptideAtlas/Metabolomics Workbench завершаются ошибкой; DANDI dandisets (302→S3, не проверены); ресурсы CZ CELLxGENE H5AD/RDS (не проверены); OpenML ARFF (проверен по md5); файлы структур RCSB PDB .cif/.pdb (не проверены). Явно завершается ошибкой, если выбранные файлы превышают max_bytes, если только force=true. Проверяет контрольные суммы; записывает sidecar-файл .dataresource.json.

Параметры
  • deststring

    Destination dir (default managed cache)

  • extractboolean

    Unpack downloaded zip/tar archives into the destination (default false). Path-traversal-guarded; counts against max_bytes.

  • filesstring

    Glob over file names (default all)

  • forceboolean

    Override max_bytes

  • idstringобязательный

    Source-prefixed id or bare Zenodo id

  • max_bytesinteger

    Byte ceiling before failing loud

list_sourcesтолько чтение

Перечисли проводные источники данных и их возможности (слой, виды, поддерживаемые фильтры, требования аутентификации, ограничение частоты запросов, статус).

Параметры
  • check_healthboolean

    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: null. Default false: returns the static catalog with no network.

operateтолько чтение

Инспектирует или запрашивает удалённый табличный файл (Parquet/CSV/TSV) БЕЗ его скачивания. op='schema' возвращает столбцы и типы; 'preview' возвращает небольшой образец; 'head' возвращает первые n строк; 'sql' выполняет SELECT только для чтения по файлу (представленному как представление 'data', например, "SELECT * FROM data WHERE x > 1"). op='peek' профилирует каждый столбец БЕЗ скачивания — тип, доля null, приблизительное количество уникальных, мин/макс и числовые квартили (DuckDB SUMMARIZE; как head/sql, он читает весь файл, поэтому учитывает ограничение размера источника). Обращается к файлу по идентификатору каталога + имени файла (сначала разрешите идентификатор, чтобы увидеть files[] и access_modes). Требует расширения [operate]; громко завершается с ошибкой, если файл не является оперируемым табличным файлом.

Параметры
  • columnsstring[]

    Optional column projection for head.

  • filestring

    File name within the record; optional when exactly one operable file is present.

  • idstringобязательный

    DataResource id (e.g. 'zenodo:7654321')

  • ninteger

    Row count for head/preview

  • openumобязательный
  • querystring

    Read-only SELECT for op='sql'.

relateтолько чтение

Принимает от 2 до 10 идентификаторов ресурсов и возвращает ПОДСКАЗКИ по объединению/гармонизации на уровне метаданных: как связаны наборы данных и по какому ключу их можно объединить. Обнаруживает общие номера доступа (BioProject/SRA/GEO), общие перекрёстные идентификаторы (doi/pmid/pmcid), явные связи между входными данными и версионную цепочку. ТОЛЬКО ПОДСКАЗКИ: не читает столбцы файлов, не загружает файлы и не выполняет объединение/слияние/преобразование; каждая подсказка указывает общее значение в качестве доказательства. Если у вас только результат поиска, сначала разрешите идентификаторы. Сбои разрешения отдельных идентификаторов выводятся, но не фатальны.

Параметры
  • idsstring[]обязательный

    2-10 source-prefixed resource ids to relate.

resolveтолько чтение

Получает полный DataResource для известного идентификатора (например, 'zenodo:7654321', 'datacite:10.5061/dryad.x', 'hf:owner/name', чистого Zenodo record id или DOI), включая полный массив files[]. Publication resolve также прикрепляет нормализованные идентификаторы (pmid/pmcid/doi) и, при открытом доступе, полный текст файла. Параметр cite=<format> добавляет цитирование в результат (поле citation); если опущен, цитирование не добавляется. Параметр trust=true прикрепляет статус отзыва (через Crossref) в объект trust{}. Параметр fair=true прикрепляет оценку FAIRness на основе RDA (0–100 + подоценки F/A/I/R + возможные пробелы), вычисленную из записи, в объект fair{}. Параметр use=<intent> (commercial/redistribute/modify/ml-training) прикрепляет справку о совместимости лицензий (ALLOW/REVIEW/DENY, не юридическая консультация) в объект license_compat{}. Параметр format=provenance создаёт за один вызов досье доступности данных RO-Crate 1.1 (в объекте provenance{}), содержащее актуальность версии, лицензию+SPDX, оценку FAIR, статус отзыва и цепочку источник/DOI/ID — автоматически прикрепляет fair + trust.

Параметры
  • citestring

    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-DOI records support 'csl-json' only. Omitted = no citation. Failures degrade quietly (citation stays null).

  • fairboolean

    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 gaps each naming its RDA FAIR Data Maturity Model indicator id. Pure/local — no network call. Only the machine-evaluable subset is scored (never fabricates what the metadata cannot show).

  • formatenum

    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); 'provenance' attaches a one-call RO-Crate 1.1 data-availability dossier (provenance field) bundling version-currency, licence+SPDX, FAIR score, retraction status, and the source/DOI/ID chain — it auto-attaches fair{} and trust{} so the dossier is complete in one call (unknown signals are reported as unknown, never as a clean claim).

  • idstringобязательный

    Source-prefixed id, bare Zenodo id, or DOI

  • trustboolean

    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 register leaves retracted=null = unknown, never a false clean claim).

  • usestring

    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 derivative+commercial use, our stated interpretation). The verdict is ALLOW/REVIEW/DENY computed from a bundled choosealicense.com licence matrix keyed on the normalized SPDX id, naming the governing clause — a metadata-derived advisory, NOT legal advice. An unrecognized or absent licence yields REVIEW (never a fabricated ALLOW/DENY); an unknown intent is an error.

searchтолько чтение

Ищет в общедоступных архивах исследовательских данных, омиксных реестрах и литературе наборы данных, программное обеспечение, публикации и данные секвенирования. Охватывает Zenodo, DataCite (Dryad, Figshare, Dataverse, OSF, Mendeley, OpenNeuro), NCBI omics (GEO, SRA, BioProject), литературу (PubMed + OpenAIRE), HuggingFace Hub (datasets), DataONE (экологическая/экологическая федерация), OmicsDI (протеомика/метаболомика), RCSB PDB (макромолекулярные структуры), GWAS Catalog (исследования генотип-фенотип), OpenML (наборы данных ML), DANDI (нейрофизиологические датасеты) и CZ CELLxGENE (одноклеточные наборы данных). Возвращает компактные записи DataResource; ошибки по каждому источнику сообщаются в errors{}. Используйте resolve для полной записи (resolve для SRA прикрепляет манифест ENA FASTQ; resolve для публикации прикрепляет links[] к наборам данных/доступам, нормализованные идентификаторы (pmid/pmcid/doi) и, если открытый доступ, полный текст файла), затем fetch для загрузки файлов. Укажите organism=<name>, чтобы расширить запрос синонимами NCBI-Taxonomy; результаты содержат нормализованные taxa[] + перекрёстные ссылки на растения. Укажите disease=<name>, чтобы расширить запрос синонимами дескрипторов MeSH (например, 'breast cancer' также соответствует 'Breast Neoplasms'); расширение отражается в mesh_expansion. Укажите tissue=<name>, чтобы расширить запрос синонимами UBERON (например, 'liver' также соответствует 'iecur'/'jecur'); расширение отражается в tissue_expansion. Укажите chemical=<name>, чтобы расширить запрос синонимами соединений ChEBI (например, 'caffeine' также соответствует '1,3,7-trimethylxanthine'); расширение отражается в chemical_expansion. Укажите assay=<name>, чтобы расширить запрос синонимами анализов/методов EDAM (например, 'ChIP-seq' также соответствует 'ChIP-sequencing'); отражается в assay_expansion. Укажите collapse_mirrors=true, чтобы включить консервативное свертывание зеркал между репозиториями: копии одного набора данных под разными/без DOI сворачиваются в одну запись, а свернутые копии помечаются в mirrors[].

Параметры
  • assaystring

    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 term yields no expansion; an OLS failure surfaces in errors. The expansion is echoed in assay_expansion.

  • chemicalstring

    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 bounded number of synonyms. An unknown term yields no expansion; an OLS failure surfaces in errors. The expansion is echoed in chemical_expansion.

  • collapse_mirrorsboolean

    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 mirror of a figshare deposit, GEO<->ArrayExpress — into one record, annotating the survivor with the folded copies under mirrors[]. Conservative: a merge needs a shared file checksum OR identical (normalized-title, first-author-surname, year); title-only or partial matches never merge. Intra-page / best-effort only (a mirror on a different page is not collapsed), so a page may return fewer than size items; pagination is unaffected.

  • cursorstring

    Opaque pagination token from a prior search's next_cursor. When set, all other search params are read from the cursor.

  • diseasestring

    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'). The expansion is echoed in mesh_expansion.

  • kindenum

    Keep only results of this kind.

  • multi_queryboolean

    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-ranked against your original query — surfacing relevant records a single keyword query would miss. Costs N× the upstream calls (bounded). Requires an LLM endpoint (LLM_API_BASE); with none configured the search runs as a normal single query and notes it in errors['multi_query']. The variants used are echoed in query_expansion. Composes with understand=. NOTE: multi_query=true ALWAYS applies semantic re-ranking of the window internally regardless of rank=; the rank= param has no effect in this mode.

  • organismstring

    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 echoed in taxon_expansion.

  • provenanceboolean

    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 expansions that fired, the per-source errors (a partial search is disclosed), and per-hit provenance for every result (version-currency, licence + normalized SPDX, FAIR score). Per-hit RETRACTION is omitted — it would need one Crossref call per hit; use per-record resolve(format=provenance) for that. Covers THIS search page only (intra-page; each page of a paginated search gets its own crate).

  • published_afterinteger

    Keep results with year >= this.

  • published_beforeinteger

    Keep results with year <= this.

  • querystring

    Free-text search query

  • rankenum

    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 an errors['semantic'] note if unconfigured). In semantic mode pagination is window-based (each page consumes its full fetched window).

  • sizeinteger

    Max results (1-50, default 10)

  • sourcesstring[]

    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, biostudies

  • tissuestring

    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 tissue_expansion.

  • understandboolean

    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 validated by the same ontology resolvers (a hallucinated entity that doesn't resolve is simply dropped), explicit params you pass always win, and the interpretation is echoed in query_understanding. Requires an LLM endpoint (LLM_API_BASE); with none configured the search runs unchanged and notes it in errors['understand'].

Похожие MCP-сервера

musharna/plant-genomics-mcp

musharna/plant-genomics-mcp

MCP-сервер с 32 инструментами для поиска и анализа геномных локусов растений. Использует 11 открытых источников (Ensembl Plants, Phytozome, UniProt и др.) для получения аннотаций, гомологов и путей...

Python4
blazickjp/arxiv-mcp-server

blazickjp/arxiv-mcp-server

MCP-сервер для интеграции arXiv с AI-ассистентами: поиск, загрузка, чтение и локальное хранение научных статей. Полезен исследователям и разработчикам для автоматизации работы с публикациями через ...

Python3131
Autario/autario-mcp

Autario/autario-mcp

Autario MCP — сервер с доступом к 2700+ верифицированным публичным датасетам (Всемирный банк, OECD, WHO), объединённым единой онтологией. Встроенные инструменты статистического анализа и публикации графиков позволяют AI-агентам получать точные числовые данные без риска галлюцинаций. Полезен разра...

JavaScript1
longevity-genie/gget-mcp

longevity-genie/gget-mcp

MCP сервер для библиотеки gget: AI-ассистенты выполняют сложные запросы к геномным базам: поиск генов, BLAST и предсказание белков. Инструмент полезен биоинформатикам для анализа геномики через естественный язык.

Python31
carrierone/verilexdata-mcp

carrierone/verilexdata-mcp

MCP сервер Verilex Data открывает AI-агентам доступ к 20 структурированным датасетам: государственные данные (SEC, NPI, погода), крипто-аналитика (DeFi, OFAC, киты) и prediction markets. Полезен разработчикам и аналитикам. Оплата через USDC по запросу.

TypeScript1
SidneyBissoli/ibge-br-mcp

SidneyBissoli/ibge-br-mcp

MCP сервер для живых официальных данных Бразилии через API IBGE. 22 инструмента: география, демография, экономика. Точные цифры с источником - актуальная бразильская статистика для AI-ассистентов.

TypeScript9
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин