mcpField
B
biorxiv-mcp-server

biorxiv-mcp-server

リモート
github.com/cyanheads検索4今日更新
リポジトリ

biorxiv-mcp-server について

biorxiv-mcp-serverは、研究者や文献検索ワークフロー向けに、bioRxivとmedRxivのプレプリントをDOI、日付、キーワード、著者で検索します。全文取得や掲載誌情報の確認にも対応し、stdioとStreamable HTTPを利用できます。

主な機能

  1. 01DOIによるメタデータと改訂履歴の取得
  2. 02日付、分野、資金提供者による絞り込み
  3. 03キーワードや著者での検索
  4. 04Markdown形式での全文取得
  5. 05プレプリントの掲載誌版の確認
  6. 06bioRxivとmedRxivの分野一覧

活用シーン

  1. 01研究テーマや著者に関連するプレプリントの検索
  2. 02指定期間に投稿されたプレプリントの閲覧
  3. 03プレプリントの学術誌掲載状況の確認
  4. 04研究レビュー用の全文取得

MCP 対応

bioRxivとmedRxivの検索・取得用ツール7種類を、stdioまたはStreamable HTTP経由でMCPクライアントに公開します。公開ホスト型インスタンスも提供されています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://biorxiv.caseyjhand.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npm@cyanheads/biorxiv-mcp-server0.5.0

ツール

7

このツールにパラメーターはありません。

詳細

@cyanheads/biorxiv-mcp-server

MCP 経由で bioRxiv と medRxiv のプレプリントを検索・取得します。DOI、日付範囲、キーワードで検索できます。STDIO または Streamable HTTP に対応しています。

7 個のツール

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

公開ホスト型サーバー: https://biorxiv.caseyjhand.com/mcp


概要

bioRxiv と medRxiv のプレプリント、メタデータ、全文を扱います。キーワードや著者で検索したり、日付範囲(任意で分野を指定)を参照したり、DOI で任意のプレプリントを取得したり、ジャーナルに掲載されたプレプリントを確認したりできます。

ツール
ツール説明
biorxiv_get_preprintDOI を指定して 1 件以上のプレプリントのメタデータ、要旨、改訂履歴、ジャーナルとの対応情報を取得します
biorxiv_list_recent日付範囲内に投稿または更新されたプレプリントを一覧表示します。サーバー、カテゴリー、資金提供者による絞り込みも指定できます
biorxiv_search_preprintsEuropePMC 経由でキーワードや著者(またはその両方)からプレプリントを関連度順に検索し、bioRxiv/medRxiv のメタデータを付加します
biorxiv_get_published_versionプレプリントの DOI からジャーナル掲載記録(ジャーナルの DOI、名称、掲載日)を特定するか、ジャーナル論文の DOI からその論文がプレプリントとして投稿された際の記録を特定します
biorxiv_list_published_versions投稿時期を問わず、ジャーナルの掲載日が指定範囲内のジャーナル論文として掲載されたプレプリントを一覧表示します。発行元を 1 社に限定することもできます
biorxiv_get_fulltextレンダリング済み HTML 論文ページから抽出した、最善努力による Markdown 形式のプレプリント全文を取得します
biorxiv_list_categoriesbioRxiv と medRxiv で有効な分野カテゴリー文字列を一覧表示します

機能リファレンス

biorxiv_get_preprint ツール
  • DOIをそのまま、または貼り付けた形式(https://doi.org/…、doi:…、biorxiv.org/medrxiv.orgの記事URL、vNまたは.fullのサフィックス)で受け取り、対象をbiorxiv、medrxiv、またはboth(デフォルトはboth)に限定します
  • 最大200件を受け付け、最初の10件の重複しないDOIを検索します。残りはunprocessed[]に返され、次の呼び出しに渡せます。同じDOIは1回だけ検索され、すべてのリストは入力順を保ちます
  • 各プレプリントは、完全な改訂履歴をrevisions[]に返します。内容は、タイトル、著者、カテゴリー、ライセンス、awards、jatsxmlUrl、採択後のpublishedJournalDoi、および見つかったserver(biorxivまたはmedrxiv。serverとしてそのまま渡せます)です。上流APIで誤った帰属が行われるため、資金提供者名は省略されます
  • アブストラクトが掲載されるのは最新の改訂版のみです。上流APIはプレプリントごとに1つのアブストラクトを保持します。以前の改訂版固有のアブストラクトは、versionを指定してbiorxiv_get_fulltextを使い、その論文ページから取得できます
  • 取得に失敗したDOIはfailed[]に入り、reason(not_found、invalid_doi_format、upstream_unavailable、rate_limited)とretryableフラグが付与されます。not_foundになるのは、試行したすべてのサーバーから応答があった場合のみです

biorxiv_list_recent ツール
  • start_date/end_dateの期間、server(デフォルトはboth)、および任意のcategory(biorxiv_list_categoriesの値)と、bioRxiv専用のfunder(ROR ID)フィルターを受け取ります。適用できないフィルターがあると、invalid_categoryまたはinvalid_funderが発生します
  • 30件ずつページを取得し、整数のcursorで次のページに進みます。カーソルはサーバーごとに追跡され({ biorxiv: { cursor, total }, medrxiv: { cursor, total } })、最終ページを超えたカーソルにはexhausted: trueが付与され、応答しなかったサーバーはfailed[]に記載されます
  • デフォルトではアブストラクトは省略されます。include_abstract: trueを指定すると追加されます。各アブストラクトは、その行が以前の改訂版のものであっても、プレプリントの最新改訂版のものです

biorxiv_search_preprints ツール
  • queryおよび/またはauthorと、任意のdate_from/date_to、server(デフォルトはboth)を受け取ります。1ページあたり最大100件(デフォルトは25件)で、より大きなlimitを指定すると、通知とともに100件が返されます。cursor_markでページを取得します
  • EuropePMCが検索結果を順位付けします(投稿から1~2日以内に新しいプレプリントがインデックスされます)。bioRxiv/medRxiv APIは、biorxiv_get_preprintと同じフィールドを使って結果を補完します。EuropePMCのメタデータのみのレコードにはenriched: falseとenrichment_error(service_error、rate_limited、not_found)が付き、partial_resultsが設定されます
  • デフォルトではアブストラクトが含まれます。include_abstract: falseを指定すると、応答サイズを約3分の1に抑えられます

biorxiv_get_published_version ツール
  • 1件のDOIとserver(デフォルトはboth)を受け取ります。プレプリントのDOI(10.1101/、10.64898/)、またはプレプリントとして投稿された論文に解決されるジャーナル記事のDOI(10.1016/j.cell.2020.01.001 → 10.1101/614172)を指定できます。10.64898/のDOIは、プレプリント自体のジャーナルDOIを通じて解決されます
  • プレプリントDOI、ジャーナルDOI、ジャーナル名、公開日、責任著者の所属機関、および応答したserverを返します。どのサーバーからも応答がない場合は、再試行可能なupstream_unavailableまたはrate_limitedが発生し、doi_not_foundが返されることはありません
  • Cold Spring Harbor Laboratory PressのジャーナルDOI(10.1101/gr.…、gad.…、lm.…)はプレプリントと同じプレフィックスを共有するため、DOIから解決できません

biorxiv_list_published_versions tool
  • 学術誌の出版日のstart_date/end_dateの期間とserver(デフォルトはboth)を受け取ります。各行はbiorxiv_get_published_versionが返すレコードと一致し、数年前に投稿されたプレプリントの場合もあります。
  • 各サーバーから整数のcursorを基点にlimit件(デフォルトは25件、APIの1ページあたり最大100件)を返し、各サーバーのnextCursorで続きを取得します。最後の行を過ぎたカーソルにはexhausted: trueが設定され、応答しなかったサーバーはfailed[]に記載されます。
  • 任意のpublisherには学術誌のDOIプレフィックス(eLifeの場合は10.7554)を指定でき、そのプレフィックスで出版されたbioRxivプレプリントのみが一覧表示されます。server: "both"の場合はbioRxivのみをクエリし、server: "medrxiv"またはAPIが認識しないプレフィックスを指定するとinvalid_publisherが発生します。これらの行には学術誌名、著者、要旨は含まれません。
  • デフォルトでは要旨は省略されます。include_abstract: trueを指定すると追加されます。

biorxiv_get_fulltext tool
  • DOI、server(デフォルトはboth)、および任意のversion(またはvNサフィックス)を受け取ります。両方が指定された場合は一致している必要があり、プレプリントに存在しないバージョンを指定するとversion_not_foundが発生します。レンダリングされたHTML論文ページから抽出したMarkdownを、応答したserverの名前とともに返します。
  • 表のセルはページ上にありません。各表のキャプションは保持され、セルのURLとともにomittedTablesに記載されます。
  • offset/limitで文字数ごとにページ分割します(デフォルトは20,000文字)。totalChars、remainingChars、hasMore、wordCountを報告します。PDFのみのプレプリントやアクセスがブロックされたページではfulltext_unavailableが発生し、biorxiv_get_preprintに振り分けられます。

biorxiv_list_categories tool
  • API呼び出しは行いません。bioRxivの25カテゴリとmedRxivの51カテゴリからなる静的リストで、一覧表示APIのフィルター対象に限られます。
  • biorxiv_list_recentのcategoryを選ぶ際に使用します。

機能

@cyanheads/mcp-ts-coreを基盤としており、stdioおよびStreamable HTTPトランスポート、プラグイン可能な認証(none/jwt/oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションのOpenTelemetryトレーシングに対応した構造化ロギングを提供します。

bioRxiv固有の機能:

  • BiorxivApiServiceはapi.biorxiv.org(詳細、出版物、クロスウォークの各エンドポイント)をラップし、EuropePmcServiceはEuropePMC検索をラップします。どちらもリトライと指数バックオフに対応しています。
  • BiorxivFullTextServiceはwww.biorxiv.org/www.medrxiv.orgの論文ページからMarkdownを抽出します。
  • 上流へのすべてのリトライ処理は、ツール呼び出しに割り当てられた50秒の予算の残り時間内で実行されるため、応答のないオリジンはクライアントの60秒のリクエストタイムアウト前に処理が終了します。エラーは分類済みのリトライ可能なエラーとして返されるか、ハングしたステップがオプションの場合は不足している内容を示す結果が返されます。
  • server="both"の場合、biorxivとmedrxivを並列でクエリし、各結果に応答したサーバーの名前を記載します。DOI検索では、そのDOIを保持するサーバーが応答した時点で待機を終了します。
  • Cold Spring Harbor LabのAPIガイドラインに従い、mailtoアドレス(BIORXIV_MAILTO環境変数)を含む丁寧なUser-Agentヘッダーを使用します。
  • pubmed-mcp-server(出版後)、openalex-mcp-server(引用分析)、crossref-mcp-server(DOIメタデータ)と連携します。

エージェントに適した出力:

  • 部分的な失敗を適切に処理します。DOIごとおよびサーバーごとの失敗は呼び出し全体を中断せず、型付きのreasonとretryableフラグとともにfailed[]に格納されます。
  • レート制限を明確に示します。429は解析済みの待機時間retryAfterを伴うreason: "rate_limited"として返され、upstream_unavailableとは区別されます。
  • 型付きのエンリッチメント状態を示します。biorxiv_search_preprintsの結果にはenrichedと型付きのenrichment_error(service_error/rate_limited/not_found)が含まれます。
  • タイトルと要旨を整形します。エクスポート用マークアップや記号のプレースホルダー({beta}、[≥])をプレーンテキストに変換します。

はじめに

公開ホストインスタンス

公開インスタンスはhttps://biorxiv.caseyjhand.com/mcpで利用できます。インストールは不要です。Streamable HTTPを介して、任意のMCPクライアントから接続してください。

{
  "mcpServers": {
    "biorxiv-mcp-server": {
      "type": "streamable-http",
      "url": "https://biorxiv.caseyjhand.com/mcp"
    }
  }
}
セルフホスト/ローカル

以下を MCP クライアントの設定ファイルに追加してください。

{
  "mcpServers": {
    "biorxiv-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/biorxiv-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "BIORXIV_MAILTO": "[email protected]"
      }
    }
  }
}

または、npx を使用する方法(Bun は不要です):

{
  "mcpServers": {
    "biorxiv-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/biorxiv-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "BIORXIV_MAILTO": "[email protected]"
      }
    }
  }
}

または、Docker を使用する方法:

{
  "mcpServers": {
    "biorxiv-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "-e", "[email protected]", "ghcr.io/cyanheads/biorxiv-mcp-server:latest"]
    }
  }
}

Streamable HTTP を使用する場合は、トランスポートを設定してサーバーを起動してください。

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 [email protected] bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
  • Bun v1.4.0 以上(または Node.js v24 以上)。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/biorxiv-mcp-server.git
  1. ディレクトリに移動します:
cd biorxiv-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を設定します:
cp .env.example .env
# optionally set BIORXIV_MAILTO for polite API access

設定

設定はすべて、起動時に src/config/server-config.ts の Zod スキーマで検証されます。

変数説明デフォルト
BIORXIV_MAILTOUser-Agent ヘッダーに使用するメールアドレス。任意ですが、設定を推奨します。—
BIORXIV_API_BASE_URLbioRxiv API のベース URL を上書きします。https://api.biorxiv.org
EUROPEPMC_API_BASE_URLEuropePMC のベース URL を上書きします。https://www.ebi.ac.uk/europepmc/webservices/rest
BIORXIV_WEB_BASE_URLbioRxiv のウェブサイトのベース URL を上書きします(biorxiv_get_fulltext の全文 HTML ソース)。https://www.biorxiv.org
MEDRXIV_WEB_BASE_URLmedRxiv のウェブサイトのベース URL を上書きします(biorxiv_get_fulltext の全文 HTML ソース)。https://www.medrxiv.org
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_PORTHTTP サーバーのポート。3010
MCP_HTTP_ENDPOINT_PATHHTTP エンドポイントのパス。/mcp
MCP_AUTH_MODE認証モード:none、jwt、または oauth。none
MCP_LOG_LEVELログレベル(debug、info、warning、error など)。info
LOGS_DIRログファイルのディレクトリ(Node.js のみ)。<project-root>/logs
LOG_TOOL_FAILURE_PAYLOADS失敗したツール呼び出しの引数と結果を、キー名に基づいて機密情報をマスキングし、LOG_TOOL_FAILURE_PAYLOAD_MAX_BYTES(デフォルトは 16384)で上限を設けて記録します。自由形式の値に含まれるシークレットはマスキングされません。false
OTEL_ENABLEDOpenTelemetry の計装を有効にします。false

任意の上書き設定の全一覧は .env.example を参照してください。

サーバーの実行

ローカル開発
  • ビルドして実行する:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:stdio
    # or
    bun run start:http
    
  • チェックとテストを実行する:

    bun run devcheck   # Lint, format, typecheck, security
    bun run test       # Vitest test suite
    bun run lint:mcp   # Validate MCP definitions against spec
    
Docker
docker build -t biorxiv-mcp-server .
docker run --rm -e [email protected] -p 3010:3010 biorxiv-mcp-server

Dockerfile のデフォルトは HTTP トランスポート、ステートレスセッションモードで、ログは /var/log/biorxiv-mcp-server に出力されます。OpenTelemetry のピア依存関係はデフォルトでインストールされます。省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。

プロジェクト構成

ディレクトリ用途
src/index.tscreateApp() のエントリーポイント。ツールを登録し、サービスを初期化します。
src/configサーバー固有の環境変数の解析と、Zod による検証を行います。
src/mcp-server/toolsツール定義(*.tool.ts)。bioRxiv と medRxiv の 7 つのツールを含みます。
src/services/biorxivBiorxivApiService — 詳細、出版物、クロスウォークのエンドポイントを、リトライ機能付きでラップします。
src/services/biorxiv-fulltextBiorxivFullTextService — レンダリング済み HTML 論文ページの取得と Markdown 抽出を行います。
src/services/europe-pmcEuropePmcService — プレプリントのキーワード/著者検索エンドポイントをラップします。
tests/src/ の構成に対応した単体テストと統合テスト。

開発ガイド

開発ガイドラインとアーキテクチャルールについては、CLAUDE.md を参照してください。要点は次のとおりです。

  • ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジック内で try/catch を使用しないでください
  • リクエスト単位のログには ctx.log を、テナント単位のストレージには ctx.state を使用してください
  • 新しいツールは src/mcp-server/tools/definitions/index.ts のバレルを介して登録してください
  • 外部 API 呼び出しはラップしてください。生データを検証し、ドメイン型に正規化してから出力スキーマを返します。不足しているフィールドを決して捏造しないでください

貢献

問題の報告を歓迎します。提出前にチェックとテストを実行してください。

bun run devcheck
bun run test

ライセンス

Apache-2.0 — 詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。