Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/biorxiv-mcp-server

REMOTE · BIORXIV.CASEYJHAND.COM · 2 COMPONENTS

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

0 this week 89 Trust /100

Last scanned (23 hours ago)

Scores higher than 97% of remote servers

Reachable. Last reached 4 Nov 2026.

Category Education and Research

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
Transport & Reachability100
Schema Quality & AI Usability74
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3685 tokens (~460/item across 8 items; 7 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 29 Oct 26 0
    • Server version: 0.5.0 → 0.5.1 functional
  • 28 Oct 26 +3
    • First check of Schema quality: 100 functional
    • New resource “biorxiv-guide” functional
    • Server version: 0.4.3 → 0.5.0 functional
    • “biorxiv_search_preprints” reworded the description of “server” cosmetic
  • 25 Oct 26 0
    • Server version: 0.4.2 → 0.4.3 functional
  • 23 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “biorxiv_get_fulltext” rewrote its description, which is the text the model reads security
    • Tool “biorxiv_get_preprint” rewrote its description, which is the text the model reads security
    • Tool “biorxiv_get_published_version” rewrote its description, which is the text the model reads security
    • Tool “biorxiv_list_published_versions” rewrote its description, which is the text the model reads security
    • Tool “biorxiv_list_recent” rewrote its description, which is the text the model reads security
    • Schema quality: 453 → 510 ▼ functional
    • Server version: 0.4.1 → 0.4.2 functional
    • “biorxiv_list_published_versions” added an optional parameter “publisher” cosmetic
    • “biorxiv_get_published_version” reworded the description of “doi” cosmetic
  • 19 Oct 26 0
    • Stability: 0.97 → pass security
  • 18 Oct 26 0
    • Tool “biorxiv_get_preprint” rewrote its description, which is the text the model reads security
    • Tool “biorxiv_list_published_versions” rewrote its description, which is the text the model reads security
    • Server version: 0.4.0 → 0.4.1 functional
    • “biorxiv_list_published_versions” added an optional parameter “limit” cosmetic
    • “biorxiv_get_preprint” reworded the description of “dois” cosmetic
    • “biorxiv_list_published_versions” reworded the description of “cursor” cosmetic
    • “biorxiv_search_preprints” reworded the description of “limit” cosmetic
  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 15 Oct 26 +1
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “biorxiv_get_fulltext” rewrote its description, which is the text the model reads security
    • Schema quality: 2418 → 2947 ▼ functional
    • Server version: 0.3.1 → 0.4.0 functional
    • New tool “biorxiv_list_published_versions” functional
    • “biorxiv_get_fulltext” reworded the description of “limit” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Probed https://biorxiv.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 2 Nov 2026 31 Jan 2027 ECDSA 256 ECDSA-SHA256 995a30681ab772540e934241ca1d576c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of biorxiv.caseyjhand.com. — Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
biorxiv.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://biorxiv.caseyjhand.com/mcp Verified 200
http (plaintext) http://biorxiv.caseyjhand.com/mcp HTTPS enforced 301 https://biorxiv.caseyjhand.com/mcp
MCP tools · 7 exposed · ~3,391 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
biorxiv_get_fulltext ~609

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 — abstract, sections, inline citation labels, and the reference list. Table cells are not on the article page: each table appears as its caption, and omittedTables names it with the URL that serves its cells. bioRxiv and medRxiv share the 10.1101/ DOI prefix, so server="both" (the default) resolves the DOI against both in parallel and the response reports which server answered. This is HTML-to-Markdown extraction, not structured JATS: section structure is approximate and not guaranteed. Long articles exceed a single response, so use offset and limit to page through them (the response reports totalChars, remainingChars, and hasMore); paging is cheap because the extracted article is cached per version for an hour after the first read, so only the first chunk pays for a fetch. Not every preprint has an extractable HTML page — some are PDF-only and some origins block programmatic access — in which case a fulltext_unavailable error routes you to biorxiv_get_preprint for the title, metadata, and current abstract. For a preprint that has been published in a journal, the journal's version may have richer full text elsewhere.

NameTypeReqDescription
doistringyesPreprint 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 vN…
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.
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 previous…
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 output…
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.
NameTypeReqDescription
capnumber–The limit (max characters) applied to this chunk.
contentstring–The requested chunk of full text as best-effort Markdown extracted from the rendered HTML page. Section structure is approximate — this is not JATS.
contentFormatstring–How content was produced: Markdown extracted from the rendered HTML article page (constant).
doistring–The resolved preprint DOI, in bare form.
errorobject–Present when the call failed. Absent on success.
hasMoreboolean–True when more text follows this chunk. When true, call again with offset = offset + length.
lengthnumber–Number of characters returned in this chunk.
noticestring–Paging guidance when the content was truncated — how to fetch the next chunk.
offsetnumber–Character offset into the full extracted text where this chunk begins.
omittedTablesarray–Tables the article page names without their cells — content keeps each one's caption, and the cells live on a separate page at url. The same list on every chunk. Absent when the article has none.
remainingCharsnumber–Characters remaining after this chunk (totalChars - offset - length). 0 means this chunk reaches the end.
serverstring–Server the preprint was resolved on.
shownnumber–Characters returned in this chunk.
sourceUrlstring–The full-text HTML page the content was extracted from.
titlestring–Article title detected during extraction. Absent when the page exposed none.
totalCharsnumber–Total characters in the full extracted text. Use with offset and length to page through long articles.
truncatedboolean–True when this chunk was capped by limit and more text remains.
versionstring–Preprint version whose full text was retrieved — the requested one, or the latest revision when none was requested. Pass it back as version when paging.
wordCountnumber–Approximate word count of the FULL extracted article, not just the returned chunk — whitespace-delimited tokens of the same Markdown text that totalChars measures, so Markdown markers such as # and -…

No examples provided.

biorxiv_get_preprint ~354

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 preprint. Each call looks up the first 10 distinct DOIs and returns the rest, never looked up, in unprocessed[] — pass that list as dois in another call to continue; a repeated DOI is looked up once and an unparseable entry is reported in failed[], so neither counts toward the 10. When server="both" (default), each DOI is checked against both bioRxiv and medRxiv; the response includes which server the preprint was found on. Failed lookups are reported per-DOI in failed[] rather than aborting the batch, each carrying a reason (not_found, invalid_doi_format, upstream_unavailable, rate_limited) and a retryable flag; a rate_limited entry also carries the wait in seconds the origin asked for. preprints[], failed[], and unprocessed[] follow input order. DOIs must match the pattern 10.NNNN/…; a doi.org or article URL, a doi: label, and a trailing vN / .full suffix are stripped first, and results report the bare DOI.

NameTypeReqDescription
doisarrayyesPreprint 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.
NameTypeReqDescription
capnumber–The most distinct DOIs one call looks up.
errorobject–Present when the call failed. Absent on success.
failedarray–DOIs that could not be resolved, with per-DOI error details.
noticestring–How to look up the DOIs left in unprocessed, and how many failed[] entries are retryable alongside them.
preprintsarray–Successfully resolved preprints with their full revision history.
shownnumber–Distinct DOIs looked up in this call.
truncatedboolean–True when DOIs past the first 10 were left in unprocessed.
unprocessedarray–Valid, distinct DOIs past the first 10, in input order — not looked up, so neither found nor failed. Pass this list as dois in another call to continue. Empty when every DOI was looked up.

No examples provided.

biorxiv_get_published_version ~484

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 read as a journal article's and finds the bioRxiv or medRxiv preprint it was posted as. Use when biorxiv_get_preprint shows a `publishedJournalDoi` and you need the journal details, or when you hold a journal article and want its preprint. bioRxiv and medRxiv share their DOI prefixes, so server="both" (the default) checks both in parallel and the response reports which server answered. When the crosswalk holds no record for a published preprint, the journal DOI still comes back from the preprint's own record, without journal name or date, and a notice says so. Returns a not-found error when no server holds the preprint, it lists no journal version, or no preprint is recorded for the journal DOI.

NameTypeReqDescription
doistringyesDOI 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 article…
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.
NameTypeReqDescription
errorobject–Present when the call failed. Absent on success.
noticestring–Present when publishedDoi came from the preprint's own record because the crosswalk had none: says why publishedJournal and publishedDate are absent.
preprintAbstractstring–Preprint abstract.
preprintAuthorCorrespondingstring–Corresponding author name.
preprintAuthorCorrespondingInstitutionstring–Corresponding author institution.
preprintAuthorsstring–Preprint author list.
preprintCategorystring–Subject category.
preprintDatestring–Preprint posting date (YYYY-MM-DD) from the crosswalk record, or from the preprint's first revision when the crosswalk has none — the first posting for most preprints. medRxiv records some 10.64898/…
preprintDoistring–The preprint DOI, in bare form: the input itself when it was a preprint DOI, or the preprint the crosswalk links to the input when it was a journal DOI.
preprintTitlestring–Title of the preprint.
publishedDatestring–Journal publication date (YYYY-MM-DD). Absent when the crosswalk holds no record for this preprint — see notice.
publishedDoistring–The journal publication DOI.
publishedJournalstring–Name of the publishing journal. Absent when the crosswalk holds no record for this preprint — see notice.
serverstring–The server that returned this published record — never "both".

No examples provided.

biorxiv_list_categories ~86

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 there. Run this tool before filtering to get the current valid values.

Input schema present but exposes no named parameters.

NameTypeReqDescription
biorxivarray–bioRxiv subject categories
errorobject–Present when the call failed. Absent on success.
medrxivarray–medRxiv subject categories

No examples provided.

biorxiv_list_published_versions ~723

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 publication, not preprint posting, so most rows were posted months or years earlier; use biorxiv_list_recent for preprints posted in an interval. `publisher`, a journal DOI prefix such as 10.7554 for eLife, limits the listing to the bioRxiv preprints published under it; those rows carry no journal name, authors, or abstract, and a prefix api.biorxiv.org does not recognize raises invalid_publisher. Returns `limit` publications per server (default 25, up to 100 — the page api.biorxiv.org serves; a larger limit returns 100 and says so). Continue at the `nextCursor` a page returns rather than stepping `cursor` by a fixed amount; `limit: 100` walks an interval in the fewest calls. When server="both" (default), per-server pagination state is returned separately, since one cursor can be past the end of one server and inside the other — to continue a single server, pass its `nextCursor` with `server` set to that server. One server failing under server="both" does not abort the call: the other server's page is still returned and the failed one is named in `failed[]`. Every attempted server failing raises a retryable upstream_unavailable (or rate_limited) error rather than an empty page. Abstracts are omitted by default to keep the page small — pass include_abstract: true for the whole page. Every preprintDoi, 10.1101/ and 10.64898/ alike, is accepted by biorxiv_get_preprint and the other DOI tools.

NameTypeReqDescription
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.
end_datestringyesEnd 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.
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 wal…
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 pre…
serverstring–Preprint server to list. "both" lists bioRxiv and medRxiv in parallel; their rows do not overlap.
start_datestringyesStart of the journal publication-date interval (YYYY-MM-DD), inclusive.
NameTypeReqDescription
capnumber–Most publications this page can hold: rows per server (limit, or 100 when limit asked for more) times the servers queried. Set with truncated.
errorobject–Present when the call failed. Absent on success.
failedarray–Servers that did not answer, so their rows are missing from "publications" and they have no "pagination" entry. Non-empty means this result set is partial — retry to include them. Only populated unde…
noticestring–Guidance on how to read this result set: which servers did not answer, that a publisher filter limited server="both" to bioRxiv and which fields its rows lack, a limit above the 100-row page, which c…
paginationobject–Per-server pagination state. Advance each server independently.
publicationsarray–Publications in the interval, in upstream order: bioRxiv rows first, then medRxiv rows.
shownnumber–Publications on this page, across every server queried. Set with truncated.
truncatedboolean–True when at least one server has rows past this page — continue at that server's nextCursor. Absent when every server queried is on its last page.

No examples provided.

biorxiv_list_recent ~623

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 default to keep the page small — pass include_abstract: true for the whole page (each row carries the latest-revision abstract of its preprint, whichever revision the row is), or call biorxiv_get_preprint (up to 10 DOIs per call) for a few. When server="both" (default), per-server pagination state is returned separately — use each server's `cursor` field for independent advancement. One server failing under server="both" does not abort the call: the other server's page is still returned and the failed one is named in `failed[]`, marking the result set as partial rather than complete. Every attempted server failing is a different case and does abort the call, with a retryable upstream_unavailable (or rate_limited) error — an empty page would otherwise be indistinguishable from an interval that genuinely holds nothing. Call biorxiv_list_categories for valid category strings; a server that answers a category filter with its unfiltered listing is left out with a notice, and invalid_category is raised when no server applied it. `funder` limits the listing to bioRxiv preprints funded by that organization, given its ROR ID; an ID api.biorxiv.org has no funder record for raises invalid_funder rather than returning an empty page.

NameTypeReqDescription
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_categor…
cursorinteger–Integer page offset (0, 30, 60, …). Defaults to 0 (first page).
end_datestringyesEnd 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 server…
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.
serverstring–Server to query. "both" fans out to bioRxiv and medRxiv in parallel.
start_datestringyesStart of the date interval (YYYY-MM-DD).
NameTypeReqDescription
categoryNotestring–Present when server="both" and the category exists in only one server's taxonomy. Explains which server was queried and why the other was excluded.
errorobject–Present when the call failed. Absent on success.
failedarray–Servers that did not answer, so their records are missing from "preprints" and they have no "pagination" entry. Non-empty means this result set is partial — retry to include them. Only populated when…
noticestring–Guidance on how to read this result set: which servers did not answer, which ignored the category filter (their unfiltered records are left out), that a funder filter limited server="both" to bioRxiv…
paginationobject–Per-server pagination state. Advance each server independently.
preprintsarray–Preprints in the requested date interval.

No examples provided.

biorxiv_search_preprints ~512

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. Covers both servers by default. EuropePMC indexes new preprints within 1–2 days of posting; for preprints posted within the last day, prefer biorxiv_list_recent. Abstracts are included by default; include_abstract: false omits them from every result for a response about a third the size, and biorxiv_get_preprint returns the abstract for up to 10 DOIs per call. A EuropePMC rate limit (HTTP 429) fails the call with a retryable rate_limited error carrying the wait in seconds — a rate-limited metadata enrichment does not, and instead marks the affected record enrichment_error: "rate_limited".

NameTypeReqDescription
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 raisin…
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.
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.
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.
NameTypeReqDescription
capnumber–Results one call returns at most (100). Set with truncated.
errorobject–Present when the call failed. Absent on success.
nextCursorMarkstring–Opaque token for the next page of ranked results. Present only when more results exist beyond this page; pass it back as cursor_mark. Absent on the last page.
noticestring–Present when zero results are returned: on a cursor_mark page past the last match, says the list is exhausted; otherwise echoes the query and suggests how to broaden it. Also present when limit was a…
partial_resultsboolean–True when one or more DOIs failed bioRxiv enrichment and fell back to EuropePMC metadata.
preprintsarray–Search results, ranked by EuropePMC relevance.
queryEchoobject–Echo of the parameters used to produce this result set — lets callers verify what was sent.
shownnumber–Results on this page. Set with truncated.
totalCountnumber–Total preprints matching the query in EuropePMC (hitCount) — the true upstream grand total, not the number of results returned.
truncatedboolean–True when limit asked for more than the 100 results one call returns and this page holds all 100 — continue with nextCursorMark.

No examples provided.

Install

How do I install the io.github.cyanheads/biorxiv-mcp-server server?

io.github.cyanheads/biorxiv-mcp-server is a hosted endpoint at https://biorxiv.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · biorxiv.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-biorxiv-mcp-server 'https://biorxiv.caseyjhand.com/mcp'
Common questions

What is the io.github.cyanheads/biorxiv-mcp-server server?

io.github.cyanheads/biorxiv-mcp-server is listed in the public MCP registry as io.github.cyanheads/biorxiv-mcp-server. Search and retrieve bioRxiv and medRxiv preprints, by DOI, date interval, or keyword, via MCP. This page covers its hosted endpoint (https://biorxiv.caseyjhand.com/mcp).

Is the io.github.cyanheads/biorxiv-mcp-server server safe to use?

io.github.cyanheads/biorxiv-mcp-server scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/biorxiv-mcp-server server expose?

io.github.cyanheads/biorxiv-mcp-server exposes 7 tools: biorxiv_list_categories, biorxiv_list_recent, biorxiv_get_preprint, biorxiv_get_published_version, biorxiv_list_published_versions, and 2 more. Their descriptions and schemas cost roughly 3,391 tokens of context every time the server is loaded.

Does the io.github.cyanheads/biorxiv-mcp-server server require authentication?

No. We connected to io.github.cyanheads/biorxiv-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cyanheads/biorxiv-mcp-server server still maintained?

io.github.cyanheads/biorxiv-mcp-server is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.