Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Search and resolve Zenodo datasets, software, and publications by DOI; trace versions and funding.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
MCP_LOG_LEVEL, ZENODO_ACCESS_TOKENValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://zenodo.caseyjhand.com/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"zenodo": {
"command": "npx",
"args": [
"-y",
"@cyanheads/zenodo-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "your-value",
"ZENODO_ACCESS_TOKEN": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http zenodo https://zenodo.caseyjhand.com/mcpclaude mcp add zenodo --env MCP_LOG_LEVEL=your-value --env ZENODO_ACCESS_TOKEN=your-value -- npx -y @cyanheads/zenodo-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"zenodo": {
"url": "https://zenodo.caseyjhand.com/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"zenodo": {
"command": "npx",
"args": [
"-y",
"@cyanheads/zenodo-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "your-value",
"ZENODO_ACCESS_TOKEN": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"zenodo": {
"type": "http",
"url": "https://zenodo.caseyjhand.com/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"zenodo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/zenodo-mcp-server"
],
"env": {
"MCP_LOG_LEVEL": "your-value",
"ZENODO_ACCESS_TOKEN": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://zenodo.caseyjhand.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
MCP_LOG_LEVEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.
zenodo_search_recordsSearch 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 de
zenodo_get_recordResolve 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
zenodo_list_versionsList 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 se
zenodo_list_filesPage 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 s
zenodo_read_fileRead 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
zenodo_lookup_vocabularyResolve 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 scope
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified with the GitHub account cyanheads, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 494 ms (HTTP 200)
No sign-in needed
Read 6 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: ZENODO_ACCESS_TOKEN
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 11 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@cyanheads/zenodo-mcp-server Search and resolve Zenodo datasets, software, and publications by DOI; trace versions and funding, list files, and preview text files via MCP. STDIO or Streamable HTTP. 6 Tools
Public Hosted Server: https://zenodo.caseyjhand.com/mcp
Datasets, software releases, and publications from Zenodo, CERN's open research repository. Search deposits with filters for funder, grant, community, license, and file type; resolve any Zenodo DOI, concept DOI, or URL to its record; walk a deposit's versions; and list, open, and preview its files, including members of .zip archives.
The published zenodo-guide covers selecting a cited release, resolving funding identities, and checking inspection coverage. Plugin installs include it; MCP clients can discover it through the Skills extension and its skill resources.
| Tool | Description |
|---|---|
zenodo_search_records | Search deposits by keyword plus type, community, funder, grant, ORCID, file type, license, access, and date filters, with facet counts |
zenodo_get_record | Resolve one deposit from a record id, DOI, concept DOI, or URL to its full metadata, first 25 files, and an optional citation |
zenodo_list_versions | List every version of a deposit's version series, newest first |
zenodo_list_files | Page a deposit's file manifest, or list the members of one of its .zip files |
zenodo_read_file | Read a byte-capped text excerpt of one file or .zip member |
zenodo_lookup_vocabulary | Resolve community, funder, grant, license, and resource-type names to the ids search filters take |
zenodo_search_records toolquery (terms OR-ed unless joined with AND, quoted phrases, field syntax such as metadata.title:"…") plus resource_type, community, funder, award, creator_orcid, file_type, license, access_status, and published_from / published_toresult_window_exceeded past that); latest versions only unless all_versions is truesort: bestmatch, newest, oldest, mostviewed, mostdownloaded, updated-desc, updated-asc (default bestmatch with a query, newest without)facets count resource types, access statuses, file types, subjects, and years over the full match setquery fails as query_is_identifier; a community or funder Zenodo doesn't know fails as unknown_community / unknown_funderquery_syntax, naming the offending token:community or all_versions set, any invalid syntax fails (climate AND AND model, metadata.title: with no value, 'single quotes', an unclosed [a TO b]), because Zenodo would search it as plain text and drop the filters. Without such a filter it runs as plain text and the notice says so/ (escape a literal one as \/), a trailing ! (climate\!), a range bound ending in a backslash (double-quote a bound holding a space, ], or }: [a TO "b]"]), and a boost, fuzziness, or proximity value Zenodo cannot convert (climate^1.2.3, "x y"~0.5; write ^2, ~0.5, "x y"~2)" inside a word (12" vinyl; escape it as 12\") fails without a filter; with one, the phrase is closed at the end of the query and the closed query is checked insteadzenodo_get_record toolid takes a record id, a Zenodo DOI, a concept DOI or concept record id (resolves to the latest version), another DOI registered to a Zenodo record, or a zenodo.org / doi.org URL; input_kind and resolved_from report how it resolvedlatest_recid, usage counts, and the first 25 fileszenodo_list_files) is listed in continuations with a cursor and the record id it is bound to; pass both back to get that field's next window (8,000 characters of text, or the next page of entries)citation_style: bibtex, csl-json, apa, chicago-author-date, harvard-cite-them-right, ieee, modern-language-association, or naturefound: false with miss_kind (not_found, deleted, restricted, not_on_zenodo) and guidance; a deleted record adds its removal tombstonezenodo_list_versions toolid forms as zenodo_get_record; a concept DOI and any version's DOI list the same seriestotal_versions, latest_recid, and the concept record id and DOIindex, is_latest, file totals, and unique views and downloadsfound: false with the same miss_kind, guidance, and tombstone as zenodo_get_recordzenodo_list_files toolpreviewable, and listable (a .zip); up to 200 per page via offset / limitarchive_key lists the members of one .zip; Zenodo lists at most 1,000 files and directories per archive, flagged by upstream_truncatedkey_contains filters keys or member paths case-insensitively before pagingrecord_not_found / record_deletedzenodo_read_file toolkey from zenodo_list_files, plus archive_member to read inside a .zip without downloading itmax_bytes from 256 (default 16,384), at most 65,536 per call (larger values return 65,536); continue a top-level file from next_offset; .zip members read from byte 0 onlystatus is text, not_text, restricted, or empty; excerpts end on a line or character boundaryapplication/octet-stream (LICENSE, Makefile) are returned only when their content is UTF-8 textrights and the download_urlzenodo_lookup_vocabulary toolvocabulary: communities, funders, awards, licenses, or resource_types; query by name, acronym, or keyword, or omit it to browsefilter_param and filter_value name the zenodo_search_records filter and the id to pass itfunder scopes awards to one funder, as a ROR id, ROR URL, or Crossref Funder DOIreachable beside totalBuilt on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
Zenodo-specific:
id; URLs are parsed locally and never fetchedtotal; community and funder values are checked before the search runsX-RateLimit-* headers, plus a process-local cache (records 5 min, searches 60 s, vocabularies 1 h).zip member reads, with binary detection before any text is returnedAgent-friendly output:
zenodo_get_record and zenodo_list_versions return found: false with a typed miss_kind, next-step guidance, and a deleted record's tombstoneeffectiveQuery sent to Zenodo and the appliedSort, and every paged tool reports totals with a next page or offset0, '', or falseConnect to the hosted instance, no install:
claude mcp add --transport http zenodo-mcp-server https://zenodo.caseyjhand.com/mcp
Or run it locally:
claude mcp add zenodo-mcp-server -- npx -y @cyanheads/zenodo-mcp-server
For other clients, add this to the MCP config file:
{
"mcpServers": { "zenodo-mcp-server": { "command": "npx", "args": ["-y", "@cyanheads/zenodo-mcp-server"] } } }
The hosted instance shares Zenodo's anonymous rate limit across callers. An optional Zenodo personal access token in ZENODO_ACCESS_TOKEN raises the rate limit of your own instance (-e ZENODO_ACCESS_TOKEN=your-token after the Claude Code server name, or an env entry). For Docker or a source build, see Running the server.
| Variable | Description | Default |
|---|---|---|
ZENODO_ACCESS_TOKEN | Zenodo personal access token, created with no scopes. Raises Zenodo's rate limit; tool behavior and page sizes are unchanged. | none |
MCP_TRANSPORT_TYPE | Transport: stdio or http. | stdio |
MCP_HTTP_PORT | HTTP server port. | 3010 |
| `MCP_SE
Only the beginning is shown; read the rest in the repo