doiget について
doigetは、研究者や自動化ワークフロー向けの単一バイナリの論文取得ツールです。公式のオープンアクセス優先APIを通じて、DOIやarXiv IDからローカルのPDFとメタデータを取得し、CLIとstdio MCPサーバーを備えています。
主な機能
- 01DOIとarXiv IDによる論文取得
- 02オープンアクセスソースからのPDF取得
- 03PDFと論文メタデータの保存
- 04参考文献リストの一括処理
- 05引用グラフの拡張
- 06CLIと単一バイナリの提供
活用シーン
- 01DOIでオープンアクセス論文を取得
- 02arXiv IDで論文をダウンロード
- 03参考文献リストを一括処理
- 04MCPワークフローで論文を検索
MCP 対応
stdio MCPサーバーを提供し、論文取得機能をMCPクライアントに公開します。標準ではオープンアクセスソースを利用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
doiget
DOI と arXiv ID を、公式のオープンアクセス優先 API 経由でローカル PDF に変換する、単一バイナリの CLI + stdio MCP サーバーです。
ドキュメント: stable は Zola サイト(main からビルド)、dev は next からビルドした rustdoc、API は docs.rs(最新の公開リリース)です。
ステータス: crates.io(doiget-core、doiget-cli、
doiget-mcp)で公開中です。sigstore 署名付きバイナリと SBOM が GitHub
リリースに添付されています。Tier 1 と Tier 2 のソース、stdio MCP サーバー、引用グラフの
拡張、ゲート付き TDM ソースはすべて実装済みです。リリースはタグ駆動パイプラインを通じて
単一の署名付き git タグから作成されます(ADR-0025を参照)。
release-plz は廃止されました。履歴についてはCHANGELOG.md、
フェーズ計画についてはdocs/PHASES.mdを参照してください。
基本方針
doiget は、公式の出版社 API 経由で論文を取得するための汎用自動化ツールです。 設計上、doiget が試みる取得方法は次のものに限られます。
- 公開されているオープンアクセスソース(デフォルト:Crossref、Unpaywall、arXiv)。
- ユーザーが自身の機関購読または個人購読のために設定した認証情報(オプトイン、コンパイル時に有効化)。
doiget はアクセス制御の回避、論文の再配布、コンテンツのホスティング、SaaS としての運営、 出版社 API キーの同梱を行いません。
ユーザーには、要求するコンテンツへのアクセス権を有していること、および各ソースの利用規約を 遵守していることを確認する責任があります。
docs/LEGAL.mdとdocs/SCOPE.mdを参照してください。
ドキュメント
| 読者 | 参照先 |
|---|---|
| CLI ユーザー | この README、次に doiget --help、複雑なフラグ/終了コードについてはdocs/CONFIG.mdとdocs/ERRORS.md |
| エージェント/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 は、単体で動作するバイナリを1つ提供します。Linux ビルドは完全な静的リンク(musl)なので、古い glibc や HPC 環境でも動作します。どのインストール方法でも、署名済み GitHub Release から同じチェックサム検証済みバイナリをインストールします。
推奨:ビルド済みバイナリを使用してください(Rust ツールチェーンやコンパイラは不要です)。 以下のシェル/PowerShell インストーラーは、署名済みリリースバイナリを直接ダウンロードします。後述の
cargo installは代わりにソースからコンパイルするため、C/C++ ビルドツールチェーンが必要です。プラットフォームごとの要件については、そのセクションを参照してください。
シェルインストーラー(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 ツールチェーン — ソースからコンパイル)
公開されているクレートは doiget-cli です(doiget バイナリを生成します)。クレート名だけの cargo install doiget は動作しません。その名前のクレートは存在しません。
cargo install doiget-cli # installs the `doiget` binary
ソースからコンパイルするため、C/C++ ビルドツールチェーンが必要です(リンカーは必須です。リンカーがないと、cargo install はバイナリをリンクできません)。
- Linux:
gcc/clangとmake(例:build-essential)。 - macOS: Xcode Command Line Tools(
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 — エージェント設定に1行追加
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 は、無関係な giget と似すぎているとして、スコープなしの名前 doiget を拒否します。いずれにしても、クレート名に合わせるのがより適切でした。どちらのレジストリでも、ツール名を統一できます。
npm パッケージには、同じ署名済みリリースバイナリが optionalDependencies として含まれています。npm がプラットフォームに合ったものを選択するため、postinstall によるダウンロードはありません。そのため、--ignore-scripts を使用した場合や、企業のレジストリミラー経由でも動作します。公開中のバージョンは npm view doiget version で確認できます。パッケージはタグ付きリリースから公開されるため、非常に新しいコミットはパッケージに反映されていない場合があります。
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 で公開される同じ署名済みリリースバイナリをインストールします。ハッシュ値はそのリリースの .sha256 アセットにある sha256 で固定されており、このファイルはシェルインストーラーが照合に使用するものです。そのため、どちらの配布経路でもインストールされる内容に食い違いは生じません。これは scripts/update-homebrew-formula.sh によって生成され、手動で編集されることはありません。また、コミット済みの Formula が生成結果と一致しない場合、CI は失敗します。
Formula は最新の安定版リリースを追跡するため、新しいタグよりコミット 1 つ分遅れることがあります。固定されているバージョンは 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 からメタデータを提供:コンパイルする代わりにリリースバイナリを取得します(Linux x86_64、macOS、Windows x86_64)。.sha256 サイドカーや cosign バンドルは検証しません。検証するのはシェルインストーラーです |
.mcpb Claude Desktop 拡張機能 | 0.8.4 から提供中 |
| MCP Registry | 登録済み |
| npm / npx | doiget-cli(doiget コマンドをインストールします)。公開されている内容については以下を参照してください |
| Claude Code プラグイン | 前述のセルフホスト型マーケットプレイス |
| Homebrew | このリポジトリの Formula/doiget.rb。tap の行については前述を参照してください |
| Nix | nix profile install github:QAtlasHub/doiget はソースから packages.doiget をビルドします。0.9.0 より前は依存関係が要求するバージョンより低い Rust 1.86 に固定され、バージョン文字列も古かったため、flake をビルドできませんでした。現在の nix ワークフローは、flake またはロックファイルに変更があったときと、毎週ビルドします |
.deb | ビルドしません — 価値が低く、ほとんどの Linux ユーザーはバイナリまたは Nix を利用します |
| Docker | 予定していません — 以下を参照してください |
Docker は #501 で、「Tier-3 機能を合法的に利用できる唯一のアーキテクチャはコンテナーである」という理由から、優先順位が 2 位に付けられました。この前提は成り立ちません。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 時点で、4 つのプラットフォーム別パッケージは 0.0.0 のプレースホルダーとして公開されています。npm は --tag の指定に関係なく、パッケージの初回公開を latest に設定するため、これらのプレースホルダーは非推奨化されています。リリースによって latest が実際のバージョンに移るまで、この通知が唯一の警告となります。
#247 は、5 つのチャネルのうち 4 つが存在しない状態で完了としてクローズされました。残りのチャネルは #501 で追跡されています。すべてのリリースアセットは cosign-keyless で署名されています(<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)、doiget はそれを読み取り、自身が管理しない [bibliofetch] テーブルを保持します。doiget のデフォルトは ./papers です(ADR-0036)。
ライセンス
doiget のソースコードとバイナリには MIT ライセンスが適用されます(LICENSE を参照)。
doiget が論文を取得する際に適用されるライセンスは別個のものであり、各論文固有のライセンス、出版社の API 利用規約、およびユーザー自身のアクセス権によって決まります。 doiget は取得したコンテンツに新たなライセンスを付与しません。
お問い合わせ
削除要請、セキュリティに関する開示、その他の正式な連絡については、こちらをご覧ください: CONTACT.md.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。