zenodo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SSE_HOST | No | Bind address for SSE mode | 127.0.0.1 |
| SSE_PORT | No | Port for SSE mode | 8000 |
| LOG_LEVEL | No | Level of logging (outputs to stderr to protect transport channel) | INFO |
| TRANSPORT | No | Transport protocol: stdio (local subprocess) or sse (network) | stdio |
| CACHE_ENABLED | No | Enables in-memory TTL cache | true |
| ZENODO_API_URL | No | API URL (use https://sandbox.zenodo.org/api for sandbox) | https://zenodo.org/api |
| REQUEST_TIMEOUT | No | Network request timeout in seconds | 30 |
| ZENODO_ACCESS_TOKEN | No | Optional token for higher rate limits (100 vs 25 results/page) |
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 |
|---|---|
| cite_recordA | Generate a citation for a Zenodo record in a given style. Provide either Parametersrecord_id : int, optional The Zenodo record ID. doi : str, optional The DOI of the record. style : str Citation style: apa, bibtex, ris, mla, chicago, harvard (default: apa). Returnsdict Citation text, style used, and DOI. |
| export_metadataA | Export record metadata in a structured format. Parametersrecord_id : int The Zenodo record ID. format : str Output format: json, yaml, bibtex, ris (default: json). Returnsstr Formatted metadata string. |
| find_training_datasetsA | Find and evaluate datasets suitable for training ML models. Parameterstask : str Machine learning task description (e.g. "image classification", "ner"). modality : str, optional Filter by modality: image, text, audio, tabular, video. license_filter : str License requirements: permissive (MIT, Apache, CC-BY, CC0), copyleft (GPL, CC-BY-SA), any. min_size_mb : float, optional Minimum total file size. max_size_mb : float, optional Maximum total file size. Returnslist[dict] Ranked dataset recommendations tailored for machine learning. |
| generate_data_cardA | Produce a concise, structured AI-friendly summary ("data card") of a dataset. Extracts modality, file formats, license, citations, intended use, and limitations. Parametersrecord_id : int The Zenodo record ID. Returnsdict Structured data card. |
| evaluate_reusabilityB | Evaluate and score a Zenodo record's reusability. Grades license quality, metadata completeness, documentation length, file format openness, and versioning. Parametersrecord_id : int The Zenodo record ID. Returnsdict Reusability score (0-100), detailed breakdown, and recommendations. |
| build_research_bundleA | Assemble a reproducible bundle of related scientific items. Traverses relationships to group the paper, dataset, source code, and citations into a unified reproducibility package. Parametersrecord_id : int The Zenodo record ID. Returnsdict Research bundle metadata containing linked items, all citations, and a reproducibility score. |
| compare_recordsA | Compare metadata, stats, and sizes of two Zenodo records side-by-side. Parametersrecord_id_a : int First record ID. record_id_b : int Second record ID. Returnsdict Structured comparison of differences in resource type, license, date, size, stats, and file counts. |
| recommend_datasetA | Provide ranked dataset recommendations for a natural language request. Finds datasets, processes metadata details, and scores them on completeness, popularity, and documentation. Parametersquery : str Natural language prompt (e.g. "I need an image dataset for object detection"). page : int Page of results. size : int Number of recommendations. Returnslist[dict] List of dataset recommendations with matching reasons. |
| resolve_doiA | Resolve a DOI to its Zenodo record metadata. Supports full DOIs ( Parametersdoi : str The DOI to resolve. Returnsdict Record summary with title, DOI, creators, date, type, license, and URL. Raises an error if the DOI is invalid or not found on Zenodo. |
| search_by_licenseA | Find records under a specific license. Parameterslicense : str License identifier (e.g. "MIT", "Apache-2.0", "CC-BY-4.0", "cc0-1.0"). query : str, optional Additional search query parameters. sort : str Sort order. page : int Page number. size : int Results per page. Returnslist[dict] List of matching record summaries. |
| inspect_licenseA | Analyze the properties of a license. Provide either Parametersrecord_id : int, optional Zenodo record ID to inspect. license_id : str, optional SPDX license identifier (e.g. "MIT"). Returnsdict License info properties (commercial use, open access, attribution, etc.). |
| get_recordB | Retrieve complete metadata for a Zenodo record. Parametersrecord_id : int The numeric Zenodo record ID. Returnsdict Full record metadata including abstract, authors, keywords, license, funding, communities, files, related identifiers, and version info. |
| list_filesA | List all files in a Zenodo record with metadata and download URLs. The agent receives URLs and can use them as needed. No files are written to disk by this tool. Parametersrecord_id : int The numeric Zenodo record ID. Returnslist[dict] List of files with filename, size, type, checksum, and download URL. |
| related_recordsA | Find records related to the given record. Extracts related identifiers from the record metadata and groups them by relationship type (e.g. isSupplementTo, cites, isPartOf). Parametersrecord_id : int The numeric Zenodo record ID. Returnsdict Related records grouped by relationship type. |
| search_recordsA | Search Zenodo records with rich filtering. Parametersquery : str Free-text search query (supports Elasticsearch syntax). communities : str, optional Filter by community ID (e.g. "zenodo", "openaire"). creators : str, optional Filter by creator name. license : str, optional Filter by license (e.g. "MIT", "CC-BY-4.0"). keywords : str, optional Filter by keyword. resource_type : str, optional Filter by type: dataset, publication, software, image, video, lesson, poster, presentation. access_right : str, optional Filter by access: open, closed, embargoed, restricted. date_from : str, optional Start date (YYYY-MM-DD). date_to : str, optional End date (YYYY-MM-DD). sort : str Sort order: "bestmatch" (default) or "mostrecent". page : int Page number (default 1). size : int Results per page (default 10, max 100). Returnslist[dict] List of record summaries with title, DOI, creators, date, type, license, and URL. |
| search_by_communityA | Search for records within a specific Zenodo community. Parameterscommunity : str Community ID (e.g. "zenodo", "openaire", "cern"). query : str, optional Additional search query to filter within the community. sort : str Sort order: "bestmatch" or "mostrecent". page : int Page number. size : int Results per page. Returnslist[dict] List of matching record summaries. |
| search_by_funderA | Search for records funded by a specific organization. Parametersfunder : str Funder name (e.g. "NSF", "European Commission", "NIH"). query : str, optional Additional search query. sort : str Sort order. page : int Page number. size : int Results per page. Returnslist[dict] List of matching record summaries. |
| latest_versionA | Get the latest version and full version timeline of a record. Parametersrecord_id : int Any version's record ID — the tool finds all versions automatically. Returnsdict Latest version summary, list of all versions with dates and DOIs, and total version count. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools have clearly distinct purposes, but there is slight overlap between search_records and the specialized search_by_* tools, and between recommend_dataset and find_training_datasets. However, detailed parameters and descriptions mitigate confusion.
All tool names follow a consistent verb_noun pattern in snake_case, such as build_research_bundle, cite_record, or search_by_community. No mixing of conventions or irregular names.
18 tools is on the higher end but appropriate for the broad domain of Zenodo record analysis and discovery. Each tool serves a distinct function; the count does not feel excessive.
The tool surface covers search, retrieval, citation, comparison, and analysis, but lacks write operations (create, update, delete). For a purely analytical server this might be acceptable, but it limits full lifecycle support.