mcpField
D
doiget

doiget

本地服务
github.com/sotashimozono科研与教育24 周前更新

关于 doiget

doiget 是面向研究者和自动化流程的单二进制论文获取工具,可通过官方开放获取 API 将 DOI 或 arXiv ID 转为本地 PDF 和元数据。它也提供 CLI 与 stdio MCP 服务,默认仅使用开放获取来源。

主要功能

  1. 01通过 DOI 和 arXiv ID 获取论文
  2. 02从开放获取来源检索 PDF
  3. 03保存 PDF 与论文元数据
  4. 04批量获取参考文献
  5. 05扩展引用关系图
  6. 06提供 CLI 与单二进制程序

适用场景

  1. 01按 DOI 获取开放获取论文
  2. 02按 arXiv ID 下载论文
  3. 03批量处理参考文献列表
  4. 04在 MCP 工作流中检索论文

MCP 相关

提供 stdio MCP 服务,将论文检索能力作为工具开放给 MCP 客户端。默认检索范围为开放获取来源。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

doiget

一个单二进制 CLI + stdio MCP 服务,通过官方且优先开放获取(OA)的 API,将 DOI 和 arXiv ID 转换为本地 PDF。

crates.io downloads MSRV docs.rs CI codecov issues License: MIT

docs (stable) docs (dev/next) API (docs.rs)

文档: stable = Zola 网站(由 main 构建);dev = 由 next 构建的 rustdoc;API = docs.rs(最新发布版本)。

状态: 已在 crates.io 发布(doiget-core、doiget-cli、 doiget-mcp),二进制文件经过 sigstore 签名,并在 GitHub Release 中附带 SBOM。Tier 1 + Tier 2 来源、stdio MCP 服务、引用图 扩展以及受门控的 TDM 来源均已实现。发布通过由标签驱动的流水线,使用 单个经过签名的 git 标签完成(参见 ADR-0025);release-plz 已 退役。历史记录请参见 CHANGELOG.md,阶段计划请参见 docs/PHASES.md。

定位

doiget 是一款通用自动化工具,可通过官方出版商 API 获取论文。 按照设计,doiget 仅尝试通过以下方式获取:

  1. 公开的开放获取来源(默认——Crossref、Unpaywall、arXiv)。
  2. 用户为自己的机构或个人订阅亲自配置的凭据(选择启用,且受编译时门控)。

doiget 不会绕过任何访问控制机制、重新分发论文、托管 内容、作为 SaaS 运营,也不会捆绑任何出版商 API 密钥。

用户有责任确保自己有权访问所请求的内容,并遵守各来源的服务条款。

请参见 docs/LEGAL.md 和 docs/SCOPE.md。

文档

读者入门指南
CLI 用户本 README,然后是 doiget --help,以及用于了解非简单标志/退出代码的 docs/CONFIG.md 和 docs/ERRORS.md
Agent / MCP 宿主集成者docs/MCP_TOOLS.md + docs/INTEGRATION/README.md
库用户(Rust)docs/PUBLIC_API.md + crates.io rustdoc
贡献者CONTRIBUTING.md → docs/ARCHITECTURE.md → docs/DECISIONS/
出版商法务团队docs/LEGAL.md + CONTACT.md
安全研究人员docs/SECURITY.md + docs/PROVENANCE_LOG.md + docs/CAPABILITY.md
迁移 BiblioFetch.jl 存储docs/MIGRATION.md + docs/STORE.md + docs/SAFEKEY.md

架构:docs/ARCHITECTURE.md 威胁模型:docs/SECURITY.md 永久非目标:docs/SCOPE.md 阶段计划:docs/PHASES.md ADR:docs/DECISIONS/

安装

doiget 提供一个独立二进制文件——Linux 版本完全静态链接(musl),因此在旧版 glibc 系统或 HPC 服务器上也能运行。所有安装渠道都会从经过签名的 GitHub Release 获取经过校验和验证的同一二进制文件。

推荐:使用预编译二进制文件(无需 Rust 工具链或编译器)。 下方的 shell / PowerShell 安装程序会直接下载经过签名的 Release 二进制文件。cargo install(下文介绍)则会从源代码编译,因此需要可用的 C/C++ 构建工具链——各平台的具体要求请参见对应部分。

Shell 安装程序(Linux / macOS)
curl -fsSL https://raw.githubusercontent.com/QAtlasHub/doiget/main/scripts/install.sh | sh

安装到 ~/.local/bin(可通过 DOIGET_INSTALL_DIR 更改);使用 DOIGET_VERSION=0.6.0 指定版本。脚本会在安装前验证已发布的 SHA-256 校验文件。

PowerShell 安装程序(Windows)
irm https://raw.githubusercontent.com/QAtlasHub/doiget/main/scripts/install.ps1 | iex

升级。 重新运行安装程序即可。它会说明替换的版本,并在二进制文件旁留下 doiget.install.json。doiget 不会自行检查更新(ADR-0015)。若要查看当前实际运行的二进制文件,包括 MCP 配置按路径指定的二进制文件,请使用 doiget capabilities(build)或 doiget_health 工具。两者都会报告版本、渠道、安装方式以及该方式对应的更新命令。运行 doiget version --check 可按需与最新版本比较。Claude Desktop .mcpb 扩展不会自动更新;请从最新版本中安装新的 .mcpb。

从 crates.io 安装(Rust 工具链——从源代码编译)

已发布的 crate 名称是 doiget-cli(它会生成 doiget 二进制文件)。cargo install doiget 无法运行——不存在这个不带限定名称的 crate:

cargo install doiget-cli   # installs the `doiget` binary

由于这会从源代码编译,因此需要 C/C++ 构建工具链(链接器是必需的——没有链接器,cargo install 就无法链接二进制文件):

  • Linux: gcc/clang + make(例如 build-essential)。
  • macOS: Xcode 命令行工具(xcode-select --install)。
  • Windows: 使用带有 "Desktop development with C++" 工作负载的 Visual Studio Build Tools(提供 link.exe),或通过 GNU 目标使用 MinGW-w64 工具链(rustup toolchain install stable-x86_64-pc-windows-gnu + cargo +stable-x86_64-pc-windows-gnu install doiget-cli)。

如果没有(或不想安装)构建工具链,请使用上方的某个预编译安装程序——它们无需编译器。

npm / npx——在 Agent 配置中使用一行命令
npx -y doiget-cli serve      # MCP server, no install step
npm install -g doiget-cli    # or put `doiget` on PATH

软件包名称是 doiget-cli,安装的命令是 doiget——这与 cargo install doiget-cli 的形式相同,名称也由此而来。npm 拒绝了不带限定名称的 doiget,因为它与无关的软件包 giget 太相似;无论如何,与 crate 保持一致最终都是更好的选择:该工具在两个注册表中使用同一个名称。

npm 软件包将与已签名 Release 相同的二进制文件作为 optionalDependencies 携带——npm 会解析与你的平台匹配的版本,而且不会在 postinstall 阶段下载文件,因此在 --ignore-scripts 下以及通过企业注册表镜像使用时都能正常工作。运行 npm view doiget version 可查看已发布的版本;这些软件包随带标签的 Release 发布,因此最新提交可能会比它们更新。

Homebrew
brew tap QAtlasHub/doiget https://github.com/QAtlasHub/doiget
brew install doiget

这个 tap 位于本仓库中,而不是独立的 homebrew-doiget 仓库,因此 tap 命令行中带有明确的 URL。如果有专用的 tap 仓库,命令就可以简化为 brew tap QAtlasHub/doiget;Formula 无需修改即可迁移过去。

Formula/doiget.rb 安装的是 GitHub Release 发布的同一个签名发布二进制文件,并使用该 Release 自带的 .sha256 资源中的 sha256 值进行固定——shell 安装程序也会验证这个文件,因此两个渠道安装的内容不会不一致。该文件由 scripts/update-homebrew-formula.sh 生成,绝不手动编辑;如果已提交的 Formula 与生成器的输出不一致,CI 就会失败。

Formula 跟踪最新的稳定版,因此可能比最新的标签落后一个提交;运行 brew info doiget 可查看其固定的版本。

Claude Code 插件
/plugin marketplace add QAtlasHub/doiget
/plugin install doiget@doiget

此插件从本仓库的默认分支读取 .claude-plugin/。插件的 .mcp.json 会运行 npx -y doiget-cli serve,因此无需预先安装任何内容——npm 会在首次运行时获取包装器和对应平台的二进制文件。在此之前,它直接运行 doiget,这意味着插件只有在用户已通过其他方式安装 doiget 后才能使用;因此它采用了可自托管的方式,而没有提交到 Anthropic 插件目录。现在则可以提交了。

渠道状态
渠道状态
Shell / PowerShell 安装程序已发布
GitHub Release 二进制文件(已签名,含 SBOM)已发布
cargo install doiget-cli已发布(需要 C 链接器)
cargo binstall doiget-cli从 0.9.0 开始提供元数据:获取 Release 二进制文件而非编译(Linux x86_64、macOS、Windows x86_64)。它不会检查 .sha256 附属文件或 cosign 捆绑包;Shell 安装程序会检查
.mcpb Claude Desktop 扩展自 0.8.4 起已发布
MCP Registry已列出
npm / npxdoiget-cli(安装 doiget 命令);已发布的内容见下文
Claude Code 插件可自托管的市场,见上文
Homebrew本仓库中的 Formula/doiget.rb;tap 配置行见上文
Nixnix profile install github:QAtlasHub/doiget 会从源代码构建 packages.doiget。在 0.9.0 之前,flake 无法构建:它固定使用 Rust 1.86,低于依赖项的要求,而且版本字符串已过时。现在,nix 工作流会在 flake 或锁文件更改时以及每周构建
.deb未构建——价值较低;大多数 Linux 用户会选择二进制文件或 Nix
Docker暂无计划——见下文

在 #501 中,Docker 排名第二,理由是容器是“Tier-3 功能唯一可合法使用的架构”。这个前提并不成立:ADR-0002 决定默认发布的二进制文件完全不包含 TDM 源代码,而基于已发布二进制文件构建的镜像,与其他所有预构建渠道一样,只会提供 oa-only,citation。这句话描述的架构确实存在,可通过使用 --features tdm-<publisher> 从源代码构建来支持,但这并非分发渠道。剩下的价值是“企业可以固定版本并扫描的形式”——确实有一定价值,但 doiget 是一个静态链接的单一二进制文件,因此容器在这里无法解决依赖问题;现有的 .sha256 文件和 cosign 捆绑包已能提供可固定且可验证的构件。

npm 是唯一编写了发布流程、但尚无对应软件包的渠道。npm Trusted Publishing 无法执行软件包的首次发布——该设置位于软件包的 Settings 页面中,而从未发布过的软件包没有 Settings 页面——因此,按设计不携带令牌的发布作业无法创建这些软件包。scripts/bootstrap-npm.sh 会执行一次性占位发布,以解除这一阻碍;操作手册见 CONTRIBUTING.md。

截至 2026-08-27,四个针对不同平台的软件包已以 0.0.0 占位版本发布。npm 无论 --tag 指定什么,都会将 latest 指向软件包的首次发布版本,因此这些占位版本已弃用——在某个发布版本将 latest 更新为正式版本之前,这条弃用通知是唯一的警告。

#247 在其五个渠道中有四个尚不存在时就被标记为已完成并关闭;其余渠道在 #501 中跟踪。每个发布资源都使用 cosign 无密钥签名(<asset>.cosign.bundle),可选择进行验证。

快速开始

# Fetch a paper by DOI (Open Access only by default)
doiget fetch 10.1103/PhysRevLett.130.200601

# Fetch by arXiv id
doiget fetch arXiv:2401.12345

# Batch fetch
doiget batch refs.txt

# Verify a bibliography's references resolve (no PDF download) — CI gate
doiget verify docs/references.bib --strict

# Lint a .bib for structural issues (no network): missing fields,
# blank fields, $$-display-math titles. Read-only and math-aware.
doiget lint docs/references.bib

# Inspect what was fetched
doiget info 10.1103/PhysRevLett.130.200601

# Run as MCP server (stdio)
doiget serve

默认功能仅通过 Crossref / Unpaywall / arXiv 获取开放获取 PDF。机构 TDM 访问(Springer OA、APS Harvest、Elsevier ScienceDirect TDM)不包含在默认发布的二进制文件中;必须在构建时按出版商选择启用。 参见 docs/SOURCES.md。

BiblioFetch.jl 写入的存储

doiget 的存储格式(TOML 元数据 + 位于可配置存储根目录下的 PDF 文件,docs/STORE.md)最初是与 BiblioFetch.jl 共用的格式。该约定现已废止(ADR-0060),但格式没有变化:将 doiget 指向现有存储(DOIGET_STORE_ROOT=~/papers),它就会读取该存储,并保留它不负责管理的 [bibliofetch] 表。doiget 默认使用 ./papers(ADR-0036)。

许可证

doiget 源代码和二进制文件采用 MIT 许可证(请参阅 LICENSE)。

doiget 获取论文所依据的许可证另行确定,取决于每篇论文自身的许可证、出版商的 API 服务条款以及用户自身的访问权限。 doiget 不会对获取的内容重新授权。

联系方式

下架请求、安全问题披露及其他正式 correspondence: CONTACT.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。