← Back to search

io.github.cyanheads/biorxiv-mcp-server

cyanheads Scanned 24d ago

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

B
89.5 / 100

Versions

0.1.10latest
first seen Jun 5, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 6

biorxiv_list_recent
annotations: verified low

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. 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.

doi string date string input object output object authors string version string end_date string start_date string authorCorresponding string
readOnlyHint true openWorldHint true
biorxiv_get_fulltext
annotations: verified low

Retrieve a preprint\'s full text as best-effort Markdown, extracted from its rendered HTML article page. Resolves the latest version via the details API, then fetches and extracts the body — abstract, sections, and references. 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, abstract, and metadata. For a preprint that has been published in a journal, the journal\'s version may have richer full text elsewhere.

doi string input object output object
readOnlyHint true openWorldHint true
biorxiv_search_preprints
annotations: verified low

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. 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".

date_to string
readOnlyHint true openWorldHint true
biorxiv_get_preprint
annotations: verified low

Fetch full metadata, 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. 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. DOIs must match the pattern 10.NNNN/…

doi string error string input object output object
readOnlyHint true openWorldHint true idempotentHint true
biorxiv_list_categories
annotations: verified low

List valid subject category strings for bioRxiv and medRxiv. Use these strings as the `category` filter in biorxiv_list_recent to narrow results to a specific field. Run this tool before filtering to get the current valid values.

input object output object
readOnlyHint true openWorldHint false idempotentHint true
biorxiv_get_published_version
annotations: verified low

Resolve a preprint DOI to its full journal publication record — journal DOI, journal name, published date, and corresponding author details. Use when the preprint\'s `publishedJournalDoi` field from biorxiv_get_preprint is present and you need the full crosswalk metadata. bioRxiv and medRxiv share the 10.1101/ DOI prefix, so server="both" (the default) checks both in parallel and the response reports which server answered. Returns a not-found error when no attempted server holds a published record — check biorxiv_get_preprint if you need to confirm the preprint is published at all.

input object output object preprintDoi string preprintDate string publishedDoi string preprintTitle string publishedDate string preprintAuthors string preprintAbstract string preprintCategory string publishedJournal string preprintAuthorCorresponding string
readOnlyHint true openWorldHint true idempotentHint true

Permissions 2

shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 21

info
Tool 'biorxiv_list_recent' annotations are consistent annotation_checker · 80%
info
Tool 'biorxiv_get_fulltext' annotations are consistent annotation_checker · 80%
info
Tool 'biorxiv_search_preprints' annotations are consistent annotation_checker · 80%
info
Tool 'biorxiv_get_preprint' annotations are consistent annotation_checker · 80%
info
Tool 'biorxiv_list_categories' annotations are consistent annotation_checker · 80%
info
Tool 'biorxiv_get_published_version' annotations are consistent annotation_checker · 80%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
info
package.json metadata manifest_parser · 100%
info
Tool: biorxiv_list_recent manifest_parser · 75%
info
Tool: biorxiv_get_fulltext manifest_parser · 75%
info
Tool: biorxiv_search_preprints manifest_parser · 75%
info
Tool: biorxiv_get_preprint manifest_parser · 75%
info
Tool: biorxiv_list_categories manifest_parser · 75%
info
Tool: biorxiv_get_published_version manifest_parser · 75%
info
Required env vars (4) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 13 components sbom_generator · 100%
high
Hardcoded Password found in cyanheads-biorxiv-mcp-server-10a5aac/framework-skills/api-utils/references/security.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%