cyanheads avatar

Biorxiv Mcp Server

cyanheads/biorxiv-mcp-server

Wraps the bioRxiv and medRxiv REST APIs plus EuropePMC search to let Claude pull preprint metadata, search by keyword with relevance ranking, list recent posts in a date range, and resolve preprints to their published journal records. Handles both servers in parallel when you don't want to pick one. Five tools cover fetch by DOI with full revision history, category filtered listings, keyword search, and journal crosswalk lookups. Useful when you're analyzing early stage research, tracking preprint to publication pipelines, or need machine readable access to life sciences and medical preprints before they hit PubMed. Built on the author's mcp-ts-core framework with retry logic and polite user agent strings.

GitHub stars
4
tools
7
transport
STDIO, HTTP
env vars
9
last updated
Oct 29, 2026

Install

From registry metadata
$ npx add-mcp https://biorxiv.caseyjhand.com/mcp --name biorxiv

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http biorxiv https://biorxiv.caseyjhand.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 7 tools

Verified live against the running server on Nov 6, 2026.

biorxiv_list_categoriesList valid subject category strings for bioRxiv and medRxiv — the categories the listing API actually filters on. Use these strings as the `category` filter in biorxiv_list_recent to narrow results to a specific field; case, and "_" or "-" in place of a space, do not matter th...

List valid subject category strings for bioRxiv and medRxiv — the categories the listing API actually filters on. Use these strings as the `category` filter in biorxiv_list_recent to narrow results to a specific field; case, and "_" or "-" in place of a space, do not matter th...

No parameters. Call it with no arguments.

biorxiv_list_recentList preprints posted or revised within a date interval, optionally scoped to one server or a subject category. Returns 30 preprints per page (fixed by the API); pass `cursor` as an integer offset (0, 30, 60, …) to step through additional pages. Abstracts are omitted by defaul...7 params

List preprints posted or revised within a date interval, optionally scoped to one server or a subject category. Returns 30 preprints per page (fixed by the API); pass `cursor` as an integer offset (0, 30, 60, …) to step through additional pages. Abstracts are omitted by defaul...

Parameters* required
categorystring
Subject category filter, matched case-insensitively with "_" and "-" read as a space — "Cell Biology", "cell biology", "cell_biology", and "cell-biology" are the same filter. Use biorxiv_list_categ...
cursorinteger
Integer page offset (0, 30, 60, …). Defaults to 0 (first page).default: 0
end_date*string
End of the date interval (YYYY-MM-DD).
funderstring
Funder filter: the funder's ROR ID, bare ("021nxhr62" for the US National Science Foundation) or as a URL ("https://ror.org/021nxhr62"). bioRxiv only — medRxiv records carry no funder data, so serv...
include_abstractboolean
Include each preprint's abstract. Defaults to false: abstracts make up about three quarters of a page, and every other field is returned either way.default: false
serverstring
Server to query. "both" fans out to bioRxiv and medRxiv in parallel.one of biorxiv · medrxiv · bothdefault: both
start_date*string
Start of the date interval (YYYY-MM-DD).
biorxiv_get_preprintFetch full metadata, the abstract, all revision history, JATS XML full-text links, and published-journal DOI for one or more preprints by DOI. Each DOI returns all revisions in one response, with the abstract on the latest revision only — the API keeps one abstract per preprin...2 params

Fetch full metadata, the abstract, all revision history, JATS XML full-text links, and published-journal DOI for one or more preprints by DOI. Each DOI returns all revisions in one response, with the abstract on the latest revision only — the API keeps one abstract per preprin...

Parameters* required
dois*array
Preprint DOIs to look up, up to 200 entries. The first 10 distinct DOIs are looked up; the rest are returned in unprocessed.
serverstring
Server to query. "both" checks bioRxiv and medRxiv in parallel for each DOI.one of biorxiv · medrxiv · bothdefault: both
biorxiv_get_published_versionResolve a DOI to its preprint-to-journal crosswalk record — preprint DOI, journal DOI, journal name, published date, and corresponding author details — from either side: a preprint DOI (10.1101/ or 10.64898/) finds the journal article it was published as, and any other DOI is...2 params

Resolve a DOI to its preprint-to-journal crosswalk record — preprint DOI, journal DOI, journal name, published date, and corresponding author details — from either side: a preprint DOI (10.1101/ or 10.64898/) finds the journal article it was published as, and any other DOI is...

Parameters* required
doi*string
DOI to resolve: a preprint DOI (e.g. 10.1101/2024.01.15.575123 or 10.64898/2026.05.07.723463) or a journal article DOI (e.g. 10.1016/j.cell.2020.01.001). A doi.org or biorxiv.org/medrxiv.org articl...
serverstring
Server the preprint was posted on. "both" (default) checks bioRxiv and medRxiv in parallel — use it when the DOI alone does not tell you which server holds the preprint.one of biorxiv · medrxiv · bothdefault: both
biorxiv_list_published_versionsList preprints that appeared as journal articles within a journal publication-date interval, each with its journal DOI, journal name, publication date, and preprint metadata — the same record biorxiv_get_published_version returns for one DOI. The dates filter on journal public...7 params

List preprints that appeared as journal articles within a journal publication-date interval, each with its journal DOI, journal name, publication date, and preprint metadata — the same record biorxiv_get_published_version returns for one DOI. The dates filter on journal public...

Parameters* required
cursorinteger
Integer row offset, applied to each queried server. Defaults to 0 (first page). To continue, pass the nextCursor the previous page returned for that server — it advances by the rows actually served.default: 0
end_date*string
End of the journal publication-date interval (YYYY-MM-DD), inclusive.
include_abstractboolean
Include each preprint's abstract. Defaults to false: abstracts make up about three quarters of a page, and every other field is returned either way.default: false
limitinteger
Rows to return per queried server, starting at cursor. Defaults to 25. Up to 100, the page api.biorxiv.org serves: a larger value returns 100 rows per server and says so in the notice. limit: 100 w...default: 25
publisherstring
Journal publisher filter: the DOI prefix its journal articles share, the part before the slash — "10.7554" for eLife, "10.1016" for Elsevier. Lists only the bioRxiv preprints published under that p...
serverstring
Preprint server to list. "both" lists bioRxiv and medRxiv in parallel; their rows do not overlap.one of biorxiv · medrxiv · bothdefault: both
start_date*string
Start of the journal publication-date interval (YYYY-MM-DD), inclusive.
biorxiv_search_preprintsSearch preprints by keyword and/or author using EuropePMC for relevance ranking, then enrich matching DOIs with full bioRxiv/medRxiv metadata. Provide a keyword query, an author name, or both — author maps to an EuropePMC AUTH: field query and is ANDed with the keyword query....8 params

Search preprints by keyword and/or author using EuropePMC for relevance ranking, then enrich matching DOIs with full bioRxiv/medRxiv metadata. Provide a keyword query, an author name, or both — author maps to an EuropePMC AUTH: field query and is ANDed with the keyword query....

Parameters* required
authorstring
Author name to filter by, mapped to an EuropePMC AUTH:"…" field query and ANDed with the keyword query. Optional when query is provided (e.g. "Jennifer Doudna").
cursor_markstring
Opaque page token for ranked EuropePMC results. Omit for the first page; pass the nextCursorMark returned by a prior call to fetch the next page. Pages through the same ranked list rather than rais...
date_fromstring
Earliest first-publication date filter (YYYY-MM-DD).
date_tostring
Latest first-publication date filter (YYYY-MM-DD).
include_abstractboolean
Include each result's abstract. Defaults to true. false omits the abstract from every result, enriched and EuropePMC-fallback alike, and keeps every other field.default: true
limitinteger
Maximum results to return. Defaults to 25. Up to 100 per call: a larger value returns the first 100 and says so, and nextCursorMark continues the ranked list.default: 25
querystring
Keyword search query. Optional when author is provided — supply at least one of query or author.
serverstring
Server scope for the search and its enrichment: "biorxiv" or "medrxiv" returns only that server's preprints; "both" searches both and checks each matching DOI on both servers.one of biorxiv · medrxiv · bothdefault: both
biorxiv_get_fulltextRetrieve a preprint's full text as best-effort Markdown, extracted from its rendered HTML article page. Reads the latest version unless one is requested (the version input, or a vN suffix on the DOI), confirms it via the details API, then fetches and extracts the body — abstra...5 params

Retrieve a preprint's full text as best-effort Markdown, extracted from its rendered HTML article page. Reads the latest version unless one is requested (the version input, or a vN suffix on the DOI), confirms it via the details API, then fetches and extracts the body — abstra...

Parameters* required
doi*string
Preprint DOI (e.g. 10.1101/2024.05.28.596311 or 10.64898/2026.05.07.723463). A doi.org or biorxiv.org/medrxiv.org article URL, a doi: prefix, or a .full suffix is accepted and stripped; a trailing...
limitinteger
Maximum number of characters to return in this chunk. Default 20,000; a value past the remaining text returns the rest of the article. Check the length field for the actual count returned.default: 20000
offsetinteger
Character offset into the full extracted text at which to start reading. 0 returns the beginning. To read the next chunk, use offset = prior_offset + prior_length (the length field from the previou...default: 0
serverstring
Server the preprint was posted on. "both" (default) checks bioRxiv and medRxiv in parallel to resolve the DOI — the full-text fetch itself only ever targets whichever server resolved, and the outpu...one of biorxiv · medrxiv · bothdefault: both
versioninteger
Preprint version to read (1, 2, …) — the revision numbers biorxiv_get_preprint lists. Omit for the latest version. Must match a vN suffix on the DOI when both are given.

Sponsors

Configuration

BIORXIV_MAILTO

Contact email for User-Agent header — optional, for polite API access.

BIORXIV_WEB_BASE_URLdefault: https://www.biorxiv.org

bioRxiv website base URL — source of rendered full-text HTML pages for biorxiv_get_fulltext.

MEDRXIV_WEB_BASE_URLdefault: https://www.medrxiv.org

medRxiv website base URL — source of rendered full-text HTML pages for biorxiv_get_fulltext.

MCP_LOG_LEVELdefault: info

Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

MCP_TRANSPORT_TYPEdefault: http

Selects the HTTP transport.

MCP_HTTP_HOSTdefault: 127.0.0.1

The hostname for the HTTP server.

MCP_HTTP_PORTdefault: 3010

The port to run the HTTP server on.

MCP_HTTP_ENDPOINT_PATHdefault: /mcp

The endpoint path for the MCP server.

MCP_AUTH_MODEdefault: none

Authentication mode to use: 'none', 'jwt', or 'oauth'.

Readme

@cyanheads/biorxiv-mcp-server

Search and retrieve bioRxiv and medRxiv preprints — by DOI, date interval, or keyword — via MCP. STDIO or Streamable HTTP.

7 Tools

Version License Docker MCP SDK npm TypeScript Bun


View the full README on GitHub

Details

Repository
github.com/cyanheads/biorxiv-mcp-server
Category
Search & Web Crawling
Package
@cyanheads/biorxiv-mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
1
Tools verified
Nov 6, 2026

More from cyanheads

Related Search & Web Crawling MCP servers

View all
1cyanheads avatarSocrata Mcp Servercyanheads/socrata-mcp-serverSearch and query government open-data portals (Socrata SODA API).4stars
2gauraviitkgp avatarNewzAI MCP Servergauraviitkgp/news-mcpNews MCP: real-time headlines & custom news search across 7 regions. Free, just sign in with Google.4stars
3sintexer avatarJVM Source Lenssintexer/jvm-source-lensGradle-accurate JVM classpath; fetch Java source, signatures, and class structure for agents.4stars
4jwulff avatarApple Voice Memo Mcpjwulff/apple-voice-memo-mcpAccess Apple Voice Memos on macOS. List, get audio, extract and generate transcripts.4stars
5musharna avatarData Aggregatormusharna/data-aggregator-mcpFind & fetch research datasets across 21 archives, omics registries, and literature sources.4stars
6glim-sh avatarglim.shglim-sh/glim-mcpGive your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.4stars