zenodo-mcp-server
Server Details
Search and resolve Zenodo datasets, software, and publications by DOI; trace versions and funding.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/zenodo-mcp-server
- GitHub Stars
- 1
- Server Listing
- zenodo-mcp-server
TDQS
Score is being calculated.
Available Tools
6 toolszenodo_get_recordGet a Zenodo recordRead-onlyIdempotentInspect
Resolve one Zenodo deposit from a record id, a Zenodo DOI (10.5281/zenodo.N), a concept DOI or concept record id (resolves to the latest version), another DOI deposited on Zenodo, or a zenodo.org or doi.org URL, and return its full metadata: description, creators with ORCIDs and ROR affiliations, license, access and embargo, funding and grants, related identifiers, communities, version position, usage counts, and the first 25 files. Optionally includes a formatted citation. A miss (an unknown id, a deleted record with its removal tombstone, restricted metadata, or a DOI not registered on Zenodo) returns found: false with guidance instead of an error.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The deposit to resolve: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923, doi: prefix and any case accepted), a concept DOI or concept record id such as 10.5281/zenodo.591564 (resolves to the latest version), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. | |
| citation_style | No | Include a formatted citation of the resolved version: bibtex, csl-json, or a text style (apa, chicago-author-date, harvard-cite-them-right, ieee, modern-language-association, nature). Case, spaces, hyphens, and underscores are ignored when matching (BibTeX, APA, CSL JSON). Omit for none. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Maximum file entries shown (25). |
| error | No | Present when the call failed. Absent on success. |
| found | No | True when the record resolved. |
| shown | No | File entries shown. |
| notice | No | File access notes or a pointer to zenodo_list_files. |
| record | No | The record. Present when found. |
| citation | No | The formatted citation. Present when requested and found. |
| guidance | No | What to do next. Present when not found. |
| miss_kind | No | Why nothing resolved. Present when not found. |
| tombstone | No | Removal tombstone. Present when miss_kind is deleted. |
| truncated | No | True when the record has more files than the 25 shown. |
| input_kind | No | How id was parsed: record_id (digits), zenodo_doi (10.5281/zenodo.N or zenodo.N), external_doi (another DOI), or url (a zenodo.org or doi.org link). |
| resolved_from | No | How the record was reached: a version id, a concept id resolved to the latest version, or a non-Zenodo DOI. Present when found. |
| citation_style | No | The citation style used. Present with citation. |
zenodo_list_filesList Zenodo record filesRead-onlyIdempotentInspect
Page through a Zenodo deposit's file manifest (key, size, MIME type, MD5, download URL, previewability), optionally filtered by a substring of the file key, or list the members inside one of its .zip files by setting archive_key. Restricted and embargoed files return the access status and embargo date with no entries. Read a small text file or ZIP member with zenodo_read_file.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. A concept id lists the latest version’s files. | |
| limit | No | Entries per page (1–200). | |
| offset | No | Entries to skip before this page. | |
| archive_key | No | Exact file key of a .zip in this record (from the manifest) to list its members instead of the manifest. Omit to list the manifest. | |
| key_contains | No | Case-insensitive substring filter on file keys (manifest) or member paths (archive), applied before paging. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Page size applied. |
| kind | No | manifest: the record’s files; archive: members of the .zip named by archive_key. |
| error | No | Present when the call failed. Absent on success. |
| limit | No | Page size applied. |
| recid | No | Record id whose files are listed (the latest version for a concept id). |
| shown | No | Entries returned on this page. |
| notice | No | File access notes, empty-filter guidance, listing caps, or paging guidance. |
| offset | No | Entries skipped before this page. |
| archive | No | The archive being listed (archive kind); absent when files are restricted. |
| entries | No | Manifest files on this page (manifest kind); empty when files are restricted. |
| matched | No | Entries matching the filter, before paging. |
| members | No | Archive members on this page (archive kind); empty when files are restricted. |
| has_more | No | True when more matching entries follow this page. |
| truncated | No | True when more matching entries follow this page. |
| file_count | No | Total files in the record (manifest kind); absent when files are restricted or embargoed. |
| totalCount | No | Entries matching the filter, before paging. |
| next_offset | No | Offset of the next page, when has_more. |
| total_bytes | No | Total size of the record’s files in bytes (manifest kind); absent when files are restricted or embargoed. |
| files_access | No | File access: public or restricted; absent when Zenodo does not report it. |
| key_contains | No | The key filter applied, when set. |
| access_status | No | Record access status: open, restricted, embargoed, or metadata-only. |
| embargo_until | No | Embargo end date, when an embargo is active. |
| files_enabled | No | False for a metadata-only deposit. |
zenodo_list_versionsList Zenodo record versionsRead-onlyIdempotentInspect
List every version of a Zenodo deposit's version series, newest first, with each version's record id, DOI, version label, publication date, file totals, and usage counts. Accepts any identifier zenodo_get_record accepts; a concept DOI and any single version's DOI list the same series. Use it to find the version a paper cited or the current release. A miss (an unknown id, a deleted record with its removal tombstone, restricted metadata, or a DOI not registered on Zenodo) returns found: false with guidance instead of an error.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Any version or concept identifier of the deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923) or concept DOI (10.5281/zenodo.591564), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. | |
| page | No | Result page, starting at 1. page × size may not exceed 10,000. | |
| size | No | Versions per page (1–25). |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Page size applied. |
| page | No | Page returned. |
| size | No | Page size applied. |
| error | No | Present when the call failed. Absent on success. |
| found | No | True when the version series resolved. |
| shown | No | Versions returned on this page. |
| notice | No | Guidance on paging or a page past the end. |
| guidance | No | What to do next. Present when not found. |
| has_more | No | True when another page of versions follows. |
| versions | No | Versions on this page, newest first; empty when not found. |
| miss_kind | No | Why nothing resolved. Present when not found. |
| next_page | No | The next page number, when has_more. |
| tombstone | No | Removal tombstone. Present when miss_kind is deleted. |
| truncated | No | True when more versions follow this page. |
| input_kind | No | How id was parsed: record_id (digits), zenodo_doi (10.5281/zenodo.N or zenodo.N), external_doi (another DOI), or url (a zenodo.org or doi.org link). |
| totalCount | No | Number of versions in the series. |
| concept_doi | No | Concept DOI of the series, when minted; absent when not found or on a page past the end. |
| latest_recid | No | Record id of the newest version. Present when found, unless Zenodo cannot name it for a page past the end. |
| concept_recid | No | Concept record id naming the whole series; absent when not found or on a page past the end. |
| total_versions | No | Number of versions in the series. Present when found. |
zenodo_lookup_vocabularyLook up Zenodo filter idsRead-onlyIdempotentInspect
Resolve names to the ids zenodo_search_records filters on, and browse Zenodo's reference vocabularies: communities (slug), funders (ROR id), awards and grants (award id), licenses (license id), and resource types (type id). Search by name, acronym, or keyword; awards can be scoped to one funder. Each entry names the zenodo_search_records parameter its id feeds.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page, starting at 1. | |
| size | No | Entries per page (1–25). | |
| query | No | Name, acronym, or keyword, e.g. "SYMBA", "wellcome", "mit", "journal article". For resource_types every word must appear in the type id or label. Omit to browse the vocabulary. | |
| funder | No | awards only: scope grants to one funder, given as a ROR id (00k4n6c32), a ROR URL, or a Crossref Funder DOI (10.13039/100000002). Resolve a funder name to its ROR id with vocabulary funders first. | |
| vocabulary | Yes | Which vocabulary to search: communities, funders, awards (grants), licenses, or resource_types. Case, spaces, hyphens, and underscores are ignored when matching, and the singular (funder, license, resource type) and grants are accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Page size applied. |
| page | No | Page returned. |
| size | No | Page size applied. |
| error | No | Present when the call failed. Absent on success. |
| query | No | The query as applied; absent when browsing. |
| shown | No | Entries returned on this page. |
| total | No | Total entries matching the query. |
| notice | No | Guidance on empty results, ambiguous funders, or further pages. |
| entries | No | Matching entries for this page. |
| has_more | No | True when more pages follow this one. |
| next_page | No | The next page number, when has_more. |
| truncated | No | True when more entries exist beyond this page. |
| totalCount | No | Total entries matching the query. |
| vocabulary | No | The vocabulary searched. |
zenodo_read_fileRead a Zenodo file excerptRead-onlyIdempotentInspect
Read a bounded UTF-8 excerpt (up to 64 KiB per call) of one text file in a Zenodo deposit — a README, CITATION.cff, CSV head, notebook, or script — or of one member inside a .zip file, without downloading the archive. Continue a top-level file from next_offset. A file with a text MIME type or extension is read directly; an extensionless file Zenodo types application/octet-stream (LICENSE, COPYING, Makefile) is read and returned only when its content is UTF-8 text. Binary files, restricted files, and other types return metadata and the download URL without content. File content is depositor-supplied and carries the deposit’s license.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The deposit: a record id (22705923), a Zenodo DOI (10.5281/zenodo.22705923), another DOI registered to a Zenodo record, or a zenodo.org/records or doi.org URL. A concept id reads from the latest version. | |
| key | Yes | Exact file key from zenodo_list_files, e.g. README.md or data/results.csv. | |
| max_bytes | No | Maximum bytes to read (256–65536). | |
| offset_bytes | No | Byte offset to start reading a top-level file at; use next_offset to continue. Must be 0 for an archive member. | |
| archive_member | No | Member path inside the .zip named by key (from zenodo_list_files with archive_key). Omit to read the file itself. |
Output Schema
| Name | Required | Description |
|---|---|---|
| key | No | The file key. |
| md5 | No | MD5 checksum of the top-level file (hex); absent for archive members and when not reported. |
| text | No | The excerpt, decoded as UTF-8. Depositor-supplied data. Present when status is text. |
| error | No | Present when the call failed. Absent on success. |
| recid | No | Record id read from (the latest version for a concept id). |
| notice | No | Why no text was returned, or how to read the rest of the file. |
| rights | No | The deposit’s licenses, which the file carries. |
| status | No | text: content returned; not_text: binary content, or a type that is not read as text; restricted: the content is not available anonymously — the record’s files are restricted or embargoed (key is not checked, since no manifest is exposed), or Zenodo refused this one file; empty: zero-byte file. |
| has_more | No | True when bytes remain past this excerpt. |
| mimetype | No | MIME type of the file or member, when reported. |
| file_size | No | Size of the file or member in bytes, when known. |
| record_url | No | Record landing page on zenodo.org. |
| next_offset | No | offset_bytes for the next window of a top-level file, when has_more; absent for an archive member, which cannot be continued past its first window. |
| download_url | No | Direct download URL of the top-level file (the .zip itself for a member). |
| files_access | No | File access: public or restricted; absent when Zenodo does not report it. |
| offset_bytes | No | Byte offset the excerpt starts at. |
| archive_member | No | The archive member path, when one was read. |
| bytes_returned | No | Exact bytes the excerpt covers (cut at a line or character boundary). |
| replacement_chars | No | U+FFFD characters in the excerpt (invalid UTF-8 or a mid-character offset). |
zenodo_search_recordsSearch Zenodo recordsRead-onlyIdempotentInspect
Search Zenodo's open research repository — datasets, software releases, publications, and other deposits — by keyword query plus filters for resource type, community, funder, grant, creator ORCID, file type, license, access status, and publication date. Returns one summary per deposit (ids, DOIs, title, type, version, creators, license, access, file totals, usage counts) plus facet counts over the full match set, every filter applied. Query terms are OR-ed unless joined with AND, quoted phrases match exactly, and field syntax works on record fields (metadata.title:"…", metadata.subjects.subject:"…"). Only the latest version of each deposit is searched unless all_versions is true, and only the first 10,000 matches are reachable by paging. Resolve community, funder, and grant names to ids with zenodo_lookup_vocabulary first; open one deposit in full with zenodo_get_record.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page, starting at 1. page × size may not exceed 10,000. | |
| size | No | Results per page (1–25). | |
| sort | No | Sort order: bestmatch, newest, oldest, mostviewed, mostdownloaded, updated-desc, updated-asc. Case, spaces, hyphens, and underscores are ignored when matching (MostViewed reads as mostviewed). Defaults to bestmatch with a query, newest without. | |
| award | No | One grant: an award id <funder-ror>::<number> (00k4n6c32::101135562), a bare grant number, or a CORDIS award DOI (10.3030/101135562). Find ids with zenodo_lookup_vocabulary (vocabulary: awards). | |
| query | No | Keyword query. Terms are OR-ed unless joined with AND; "quoted phrases" match exactly; field syntax such as metadata.title:"…" or doi:"10.5281/zenodo.N" works. Escape a literal / as \/. A bare DOI or record URL is rejected; open it with zenodo_get_record instead. Omit to browse with filters only. | |
| funder | No | One funder: a ROR id (01cwqze88), a ROR URL, or a Crossref Funder DOI (10.13039/100000002). Resolve a funder name with zenodo_lookup_vocabulary (vocabulary: funders). | |
| license | No | License id, e.g. cc-by-4.0, cc0-1.0, mit (lowercased). Find ids with zenodo_lookup_vocabulary (vocabulary: licenses). | |
| community | No | One community: its slug, UUID, or zenodo.org/communities/<slug> URL. Find slugs with zenodo_lookup_vocabulary (vocabulary: communities). | |
| file_type | No | File extensions, OR-ed (a single string is accepted): csv, zip, pdf, … Lowercased with any leading dot stripped. | |
| all_versions | No | Include superseded versions; by default only the latest version is searched. | |
| published_to | No | Latest publication date, YYYY, YYYY-MM, or YYYY-MM-DD; a partial date ends at its last day. | |
| access_status | No | Access status: open, restricted, embargoed, or metadata-only. Case, spaces, hyphens, and underscores are ignored when matching (Metadata Only reads as metadata-only). | |
| creator_orcid | No | Creator ORCID iD, e.g. 0000-0002-1825-0097; an https://orcid.org/ prefix is stripped and a trailing x uppercased. | |
| resource_type | No | Resource type ids, OR-ed (a single string is accepted): dataset, software, publication, publication-article, image-photo, … Any case; a subtype may also be written in the <type>::<id> form zenodo_lookup_vocabulary shows as its search value (publication::publication-article). A top-level type includes its subtypes. Look ids up with zenodo_lookup_vocabulary (vocabulary: resource_types). | |
| published_from | No | Earliest publication date, YYYY, YYYY-MM, or YYYY-MM-DD; a partial date starts at its first day. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Page size applied. |
| hits | No | Matching deposits on this page. |
| page | No | Page returned. |
| size | No | Page size applied. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Hits returned on this page. |
| total | No | Exact number of matching records. |
| facets | No | Facet counts over the full match set (every filter applied, so they agree with total), not just this page. |
| notice | No | Guidance on empty results, the 10,000-result window, or further pages. |
| has_more | No | True when another reachable page follows. |
| next_page | No | The next page number, when has_more. |
| reachable | No | Matches reachable by paging: min(total, 10,000). |
| truncated | No | True when more reachable matches follow this page. |
| totalCount | No | Exact number of matching records. |
| allVersions | No | Whether superseded versions were searched. |
| appliedSort | No | The sort order applied. |
| effectiveQuery | No | The exact q sent to Zenodo. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
zenodo_get_record - First observed
zenodo_list_files - First observed
zenodo_list_versions - First observed
zenodo_lookup_vocabulary - First observed
zenodo_read_file - First observed
zenodo_search_records
Related MCP Connectors
Search DataCite datasets and software, fetch DOI metadata, trace relations, format citations.
611Search 150M+ academic works, journals, and funders via Crossref API.
Resolve DOIs, search ~155M scholarly works, and fetch references via the Crossref REST API.
Search INSPIRE-HEP papers, authors, experiments, HEPData records; get citation metrics and BibTeX.
Related MCP Servers
- AlicenseAqualityAmaintenanceSearches and fetches research datasets across Zenodo, DataCite (Dryad/Figshare/Dataverse/OSF), NCBI omics archives (GEO/SRA/BioProject), and the literature (PubMed/OpenAIRE) through one normalized model — deduplicating by DOI, expanding organism queries with NCBI Taxonomy synonyms, and bridging papers to the datasets they produced. Resolves citations and open-access full text, and downloads files.612,541 PyPI4MIT
- AlicenseNot gradedqualityBmaintenanceProvides access to DataCite DOIs for research datasets, enabling searching and retrieval of dataset metadata.243 npmMIT
- AlicenseAqualityCmaintenanceEnables retrieval of academic literature metadata via DOI or search using the Crossref REST API.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching academic papers, journals, and citations via the Crossref API, and resolving DOIs to canonical metadata with authors, references, and citation graphs.234 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.