biorxiv-mcp-server について
biorxiv-mcp-serverは、研究者や文献検索ワークフロー向けに、bioRxivとmedRxivのプレプリントをDOI、日付、キーワード、著者で検索します。全文取得や掲載誌情報の確認にも対応し、stdioとStreamable HTTPを利用できます。
主な機能
- 01DOIによるメタデータと改訂履歴の取得
- 02日付、分野、資金提供者による絞り込み
- 03キーワードや著者での検索
- 04Markdown形式での全文取得
- 05プレプリントの掲載誌版の確認
- 06bioRxivとmedRxivの分野一覧
活用シーン
- 01研究テーマや著者に関連するプレプリントの検索
- 02指定期間に投稿されたプレプリントの閲覧
- 03プレプリントの学術誌掲載状況の確認
- 04研究レビュー用の全文取得
MCP 対応
bioRxivとmedRxivの検索・取得用ツール7種類を、stdioまたはStreamable HTTP経由でMCPクライアントに公開します。公開ホスト型インスタンスも提供されています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://biorxiv.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-biorxiv https://biorxiv.caseyjhand.com/mcp{"mcpServers":{"cyanheads-biorxiv":{"type":"http","url":"https://biorxiv.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-biorxiv":{"type":"http","url":"https://biorxiv.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-biorxiv":{"type":"http","url":"https://biorxiv.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-biorxiv":{"serverUrl":"https://biorxiv.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
7このツールにパラメーターはありません。
詳細
@cyanheads/biorxiv-mcp-server
MCP 経由で bioRxiv と medRxiv のプレプリントを検索・取得します。DOI、日付範囲、キーワードで検索できます。STDIO または Streamable HTTP に対応しています。
公開ホスト型サーバー: https://biorxiv.caseyjhand.com/mcp
概要
bioRxiv と medRxiv のプレプリント、メタデータ、全文を扱います。キーワードや著者で検索したり、日付範囲(任意で分野を指定)を参照したり、DOI で任意のプレプリントを取得したり、ジャーナルに掲載されたプレプリントを確認したりできます。
ツール
| ツール | 説明 |
|---|---|
biorxiv_get_preprint | DOI を指定して 1 件以上のプレプリントのメタデータ、要旨、改訂履歴、ジャーナルとの対応情報を取得します |
biorxiv_list_recent | 日付範囲内に投稿または更新されたプレプリントを一覧表示します。サーバー、カテゴリー、資金提供者による絞り込みも指定できます |
biorxiv_search_preprints | EuropePMC 経由でキーワードや著者(またはその両方)からプレプリントを関連度順に検索し、bioRxiv/medRxiv のメタデータを付加します |
biorxiv_get_published_version | プレプリントの DOI からジャーナル掲載記録(ジャーナルの DOI、名称、掲載日)を特定するか、ジャーナル論文の DOI からその論文がプレプリントとして投稿された際の記録を特定します |
biorxiv_list_published_versions | 投稿時期を問わず、ジャーナルの掲載日が指定範囲内のジャーナル論文として掲載されたプレプリントを一覧表示します。発行元を 1 社に限定することもできます |
biorxiv_get_fulltext | レンダリング済み HTML 論文ページから抽出した、最善努力による Markdown 形式のプレプリント全文を取得します |
biorxiv_list_categories | bioRxiv と 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 以上)。
インストール
- リポジトリをクローンします:
git clone https://github.com/cyanheads/biorxiv-mcp-server.git
- ディレクトリに移動します:
cd biorxiv-mcp-server
- 依存関係をインストールします:
bun install
- 環境を設定します:
cp .env.example .env
# optionally set BIORXIV_MAILTO for polite API access
設定
設定はすべて、起動時に src/config/server-config.ts の Zod スキーマで検証されます。
| 変数 | 説明 | デフォルト |
|---|---|---|
BIORXIV_MAILTO | User-Agent ヘッダーに使用するメールアドレス。任意ですが、設定を推奨します。 | — |
BIORXIV_API_BASE_URL | bioRxiv API のベース URL を上書きします。 | https://api.biorxiv.org |
EUROPEPMC_API_BASE_URL | EuropePMC のベース URL を上書きします。 | https://www.ebi.ac.uk/europepmc/webservices/rest |
BIORXIV_WEB_BASE_URL | bioRxiv のウェブサイトのベース URL を上書きします(biorxiv_get_fulltext の全文 HTML ソース)。 | https://www.biorxiv.org |
MEDRXIV_WEB_BASE_URL | medRxiv のウェブサイトのベース URL を上書きします(biorxiv_get_fulltext の全文 HTML ソース)。 | https://www.medrxiv.org |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_PORT | HTTP サーバーのポート。 | 3010 |
MCP_HTTP_ENDPOINT_PATH | HTTP エンドポイントのパス。 | /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_ENABLED | OpenTelemetry の計装を有効にします。 | 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.ts | createApp() のエントリーポイント。ツールを登録し、サービスを初期化します。 |
src/config | サーバー固有の環境変数の解析と、Zod による検証を行います。 |
src/mcp-server/tools | ツール定義(*.tool.ts)。bioRxiv と medRxiv の 7 つのツールを含みます。 |
src/services/biorxiv | BiorxivApiService — 詳細、出版物、クロスウォークのエンドポイントを、リトライ機能付きでラップします。 |
src/services/biorxiv-fulltext | BiorxivFullTextService — レンダリング済み HTML 論文ページの取得と Markdown 抽出を行います。 |
src/services/europe-pmc | EuropePmcService — プレプリントのキーワード/著者検索エンドポイントをラップします。 |
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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。