zenodo mcp服务器
允许LLM代理查询和交互的MCP服务器 泽诺多 使用 Zenodo REST API.
特性
- 未经身份验证的访问 –在没有API密钥的情况下搜索和检查公共记录
- 会话API密钥 –在运行时通过以下方式提供个人访问令牌
set_api_key工具 - 持久服务帐户 –设置
ZENODO_API_KEY长期密钥的环境变量 - 可选写访问 –创建、更新和发布证词(通过启用
ZENODO_ALLOW_WRITE=true) - 使用完整的Elasticsearch查询语法、分页和过滤搜索记录
- 浏览和过滤Zenodo社区
- 检索记录元数据、文件和文件内容(文本或二进制)
- 列出、创建、更新、发布和版本证词(需要编写工具
ZENODO_ALLOW_WRITE=true) - 沙箱或自托管实例的可配置Zenodo基本URL
- 可选的默认社区过滤器
ZENODO_COMMUNITY
快速开始
先决条件
- Node.js 18或更高版本
- npm
安装
git clone https://github.com/eic/zenodo-mcp-server.git
cd zenodo-mcp-server
npm install
npm run build运行服务器
# Without authentication (public records only)
node build/src/index.js
# With a persistent API key (service account)
ZENODO_API_KEY=your_token node build/src/index.js
# Against the Zenodo sandbox
ZENODO_BASE_URL=https://sandbox.zenodo.org ZENODO_API_KEY=your_sandbox_token node build/src/index.js认证
Zenodo使用 个人访问令牌 用于身份验证。
选项1–会话密钥(建议交互式使用)
连接到服务器后,调用 set_api_key 工具:
{ "name": "set_api_key", "arguments": { "api_key": "your_personal_access_token" } }令牌在服务器进程的生命周期内存储在内存中,永远不会写入磁盘。
选项2——环境变量(服务帐户/CI)
export ZENODO_API_KEY=your_personal_access_token
node build/src/index.js创建令牌
- 登录到 zenodo.org
- 首选 账户→ 设置→ 应用程序→ 个人访问令牌
- 点击 新代币 并选择所需的范围:
- deposit:write –创建和更新证词 - deposit:actions –公布证词 - user:email –验证身份(可选)
- 安全地保存令牌——它只显示一次
可用工具
| 工具 | 描述 | 需要授权 | 需要写入 |
|---|---|---|---|
get_auth_status | 检查身份验证状态并获取设置指南 | 否 | 否 |
set_api_key | 为当前会话设置个人访问令牌 | 否 | 否 |
search_records | 使用Elasticsearch查询语法搜索Zenodo记录 | 否 | 否 |
get_community | 获取特定Zenodo社区的详细信息 | 否 | 否 |
list_communities | 搜索或列出Zenodo社区 | 否 | 否 |
get_record | 按ID或DOI获取记录的完整元数据 | 否 | 否 |
list_record_files | 列出附加到记录的文件 | 否 | 否 |
get_file_content | 下载文件内容(文本或base64) | 否 | 否 |
list_depositions | 列出你自己的证词(草稿+已发表) | 是 | 没有 |
create_deposition | 创建新的空白沉积(草稿) | 是 | 是 |
get_deposition | 按ID检索单个存款 | 是 | 是 |
update_deposition | 更新证词草稿的元数据 | 是 | 是 |
delete_deposition | 删除未发布的证词草稿 | 是 | 是 |
upload_file | 将文件上传到证词 | 是 | 是 |
delete_deposition_file | 从未发布的证词中删除文件 | 是 | 是 |
publish_deposition | 发布证词并登记DOI | 是 | 是 |
edit_deposition | 解锁已发布的沉积以进行元数据编辑 | 是 | 是 |
discard_deposition | 放弃编辑并恢复到已发布状态 | 是 | 是 |
new_version | 创建已发布证词的新版本 | 是 | 是 |
写入工具仅在以下情况下可用ZENODO_ALLOW_WRITE=true(或ZENODO_ALLOW_WRITE=1)已设置。看 docs/TOOLS.md 有关完整参数的详细信息。
search_records
{
"name": "search_records",
"arguments": {
"query": "electron ion collider",
"size": 10,
"page": 1,
"sort": "mostrecent",
"type": "publication",
"subtype": "article",
"communities": "zenodo",
"all_versions": false,
"bounds": "143.37,-38.99,146.90,-37.35"
}
}排序选项: bestmatch, mostrecent, mostviewed, mostdownloaded (前缀 - 下降)。
资源类型: publication, poster, presentation, dataset, image, video, software, lesson, other.
bounds --可选的地理定位边界框: "west,south,east,north" 以十进制度数表示。
当 ZENODO_COMMUNITY 已设置 communities 如果没有提供,参数默认为该值。
get_record
接受数字ID或DOI:
{ "name": "get_record", "arguments": { "id": "1234567" } }
{ "name": "get_record", "arguments": { "id": "10.5281/zenodo.1234567" } }get_file_content
{
"name": "get_file_content",
"arguments": {
"id": "1234567",
"filename": "data.csv",
"max_bytes": 1048576
}
}文本文件以UTF-8字符串的形式返回。二进制文件以base64格式返回。这 truncated 字段指示文件是否在 max_bytes.
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
ZENODO_BASE_URL | https://zenodo.org | Zenodo实例的基本URL |
ZENODO_API_KEY | *(无)* | 用于持久身份验证的个人访问令牌 |
ZENODO_ALLOW_WRITE | *(未设置)* | 设置为 true 或 1 启用写入工具(沉积) |
ZENODO_COMMUNITY | *(无)* | 应用于搜索的默认社区标识符 |
ZENODO_MAX_UPLOAD_BYTES | 52428800 (50 MiB) | 的最大文件大小 upload_file |
MCP客户端配置
将服务器添加到MCP客户端配置中(例如Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"zenodo": {
"command": "node",
"args": ["/path/to/zenodo-mcp-server/build/src/index.js"],
"env": {
"ZENODO_API_KEY": "your_token_here"
}
}
}
}发展
npm run build # Compile TypeScript
npm run watch # Watch mode
npm test # Build and run tests
npm run test:coverage # Tests with coverage report许可证
麻省理工学院
