Skip to content

Releases: cyanheads/biorxiv-mcp-server

v0.1.15: mcp-ts-core ^0.10.9 maintenance

Choose a tag to compare

@cyanheads cyanheads released this 20 Jun 10:38
v0.1.15
e9d3b52

mcp-ts-core ^0.10.9 maintenance

Adopts the framework patch line and re-syncs the bundled skills and devcheck scripts.

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.10.6 → ^0.10.9 — adds the ctx.content image/audio collector (bytes ride content[] only), classifies SELECT-shaped Canvas SQL prepare failures as invalid_sql with DuckDB binder detail, fixes DuckdbProvider.describe({ tableName }) ambiguous-column errors, corrects OTEL_SERVICE_NAME seeding docs
  • @biomejs/biome ^2.4.16 → ^2.5.0
  • @types/node ^25.9.3 → ^26.0.0
  • vitest ^4.1.8 → ^4.1.9

Added:

  • scripts/check-dependency-specifiers.ts devcheck step — fails on floating specifiers (latest, *, dist-tags) in package.json and bun.lock's workspaces map

Changed:

  • scripts/lint-packaging.ts — validates plugin manifests (descriptions, unscoped machine name, full package name in the npx install arg)
  • devcheck.config.json — added packaging.pluginManifests flag gating the plugin-manifest checks
  • Bundled skills + devcheck scripts re-synced — fresh-scaffold git-dependent check guards, check-skill-versions worktree-deletion guard, seven upstream SKILL.md version bumps

144 tests pass; bun run devcheck clean.

v0.1.14: mcp-ts-core ^0.10.6 adoption

Choose a tag to compare

@cyanheads cyanheads released this 12 Jun 07:28
v0.1.14
2257cb8

mcp-ts-core ^0.10.6 adoption

Framework adoption maintenance pass: explicit server identity, the new ctx.enrich.total() API in search, Dockerfile hardening, and bundle/lint guards.

Changed:

  • createApp() sets name and title explicitly to biorxiv-mcp-server (unscoped machine identity on every surface)
  • biorxiv_search_preprints writes the EuropePMC grand total via ctx.enrich.total() (field totalFound → totalCount)
  • lint:packaging gains bundle-content, post-bundle, and identity guards; antipattern check flags z.coerce.boolean() on env flags

Added:

  • Dockerfile HEALTHCHECK (bun-native fetch to /healthz) and APP_VERSION OCI label
  • scripts/clean-mcpb.ts strips dependency-shipped agent docs from the .mcpb bundle

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6
  • @types/node ^25.9.1 → ^25.9.3

144 tests pass; bun run devcheck clean.

v0.1.13: Fix field references and surface enrichment failure reason

Choose a tag to compare

@cyanheads cyanheads released this 04 Jun 09:04
v0.1.13
f6935f7

Fix field references and surface enrichment failure reason

biorxiv_get_published_version description referenced a non-existent field ('published')
instead of the normalized output field ('publishedJournalDoi'); recovery hint told agents
to look for 'NA' that normalization already strips. biorxiv_search_preprints now exposes
enrichment_error ('service_error' | 'not_found') so agents can decide whether to retry or
accept the EuropePMC fallback as authoritative.

Fixed:

  • biorxiv_get_published_version description and doi_not_found recovery hint corrected (#23)
  • biorxiv_search_preprints enriched=false cases now distinguishable via enrichment_error (#21)

Added:

  • enrichment_error field on biorxiv_search_preprints output (#21)
  • format() renders human-readable failure reason per result (#21)
  • 6 new tests for enrichment_error values and format rendering

144 tests pass; bun run devcheck clean.

v0.1.12: adopt @cyanheads/mcp-ts-core ^0.9.21

Choose a tag to compare

@cyanheads cyanheads released this 02 Jun 13:59
v0.1.12
76acab1

adopt @cyanheads/mcp-ts-core ^0.9.21

Adopts three framework fixes and re-syncs skills to the new framework version.

Changed:

  • Per-request log context — per-request logs and traces now carry fresh request + trace/span IDs instead of the frozen boot context
  • fetchWithTimeout strips query-string secrets (e.g. ?api_key=) from error messages and logs
  • withRetry fails fast on non-retryable errors; ctx.fail auto-populates the retryable flag

Dependencies:

  • @cyanheads/mcp-ts-core ^0.9.16 → ^0.9.21
  • vitest ^4.1.7 → ^4.1.8

139 tests pass; bun run devcheck clean.

v0.1.11: remove dead DataCanvas integration from biorxiv_list_recent

Choose a tag to compare

@cyanheads cyanheads released this 01 Jun 03:36
v0.1.11
b3092a5

remove dead DataCanvas integration from biorxiv_list_recent

The biorxiv_list_recent tool carried a DataCanvas spillover handler (canvas_id
output field, spillover import, format() canvas line) that was never wired —
CANVAS_PROVIDER_TYPE was never set in index.ts, no consumer existed.

Removed:

  • canvas_id output field, spillover handler, and spillover import from biorxiv_list_recent (#24)
  • CANVAS_PROVIDER_TYPE references from README.md, .env.example, and docs/design.md

139 tests pass; bun run devcheck clean.

v0.1.10: enrichment on search/list tools, true EuropePMC hitCount

Choose a tag to compare

@cyanheads cyanheads released this 30 May 09:12
v0.1.10
126b239

enrichment on search/list tools, true EuropePMC hitCount

biorxiv_search_preprints and biorxiv_list_recent now surface query/filter echoes,
true result totals, and empty-result guidance in a typed enrichment block reaching
both structuredContent and content[] clients.

Changed:

  • biorxiv_search_preprints enrichment.totalFound now carries raw EuropePMC hitCount (true upstream total, not result count) (#22)
  • biorxiv_search_preprints enrichment.queryEcho echoes query, server, date range, and limit (#22)
  • biorxiv_search_preprints enrichment.notice for empty-result recovery hints
  • biorxiv_list_recent enrichment.notice for empty-result and cursor-overshoot hints
  • biorxiv_list_recent enrichment.categoryNote for per-server routing notes
  • output schema: total_from_search, message (search), message, category_note (list_recent) removed — replaced by enrichment block

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.13 → ^0.9.16

38 tests pass; bun run devcheck clean.

v0.1.9: mcp-ts-core ^0.9.13, MCPB placeholder fix, landing inventory

Choose a tag to compare

@cyanheads cyanheads released this 29 May 04:51
v0.1.9
d3a7d8e

mcp-ts-core ^0.9.13, MCPB placeholder fix, landing inventory

Adopts @cyanheads/mcp-ts-core ^0.9.9 → ^0.9.13 and applies two
targeted server fixes surfaced during the framework adoption pass.

Changed:

  • MCP_HTTP_MAX_BODY_BYTES — configurable inbound body cap (default 1 MiB); oversized requests rejected with 413 before body parsing
  • HTTP session-init gate — non-initialize requests without Mcp-Session-Id now rejected with 400
  • Expected client errors (401/403/400/404) now log at warning, not full error pipeline with stack traces
  • GET /mcp surfaces package.json keywords on the status endpoint
  • landing.requireAuth: false — hosted server serves full tool/resource inventory to unauthenticated callers
  • BIORXIV_MAILTO preprocessed to strip MCPB placeholder strings before z.email() validates (prevents crash when optional field left blank in Claude Desktop)
  • biorxiv_search_preprints — EuropePMC failure raised via ctx.fail('search_unavailable') instead of bare serviceUnavailable() factory

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.9 → ^0.9.13
  • @biomejs/biome ^2.4.15 → ^2.4.16

35 tests pass; bun run devcheck clean.

v0.1.8: services/shared.ts extraction, search-preprints format() simplification, mcp-ts-core ^0.9.9

Choose a tag to compare

@cyanheads cyanheads released this 24 May 22:17
v0.1.8
b53bd1a

services/shared.ts extraction, search-preprints format() simplification, mcp-ts-core ^0.9.9

Code simplification: shared helper utilities (asRc, detectHtmlError, SERVER_VERSION) extracted from biorxiv-service.ts and europe-pmc-service.ts into a single services/shared.ts module. search-preprints format() refactored from ~40 lines to 3 by hoisting EnrichedPreprint to module scope. biorxiv-list-recent drops the now-unused PreprintForFormat mapped type. Skills synced from framework.

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.6 → ^0.9.9
  • @hono/node-server ^2.0.3 → ^2.0.4 (transitive, via mcp-ts-core)

Changed:

  • services/shared.ts extracted — asRc, detectHtmlError, SERVER_VERSION shared across both service files
  • SERVER_VERSION corrected from stale '0.1.0' to current version
  • biorxiv-search-preprints format() simplified; EnrichedPreprint type hoisted to module scope
  • biorxiv-list-recent PreprintForFormat mapped type removed
  • skills/git-wrapup added (v1.0, synced from mcp-ts-core ^0.9.8)
  • skills/release-and-publish v2.5 → v2.6 (artifact verification step, structured push guidance)
  • CLAUDE.md / AGENTS.md — Close-the-loop rule added, framework version updated

35 tests pass; bun run devcheck clean.

v0.1.7: server=both category routing, medRxiv DOI enrichment

Choose a tag to compare

@cyanheads cyanheads released this 24 May 12:28
v0.1.7
77b4484

server=both category routing, medRxiv DOI enrichment

Two routing bugs fixed in biorxiv_list_recent and biorxiv_search_preprints.

Fixed:

  • biorxiv_list_recent: server="both" with a server-specific category now routes the filter only to the server whose taxonomy includes it; category_note output field added to explain which server the filter applied to (#17)
  • biorxiv_search_preprints: enrichment with server="medrxiv" no longer routes through bioRxiv; routing based on input.server, not DOI prefix — 10.1101/ is shared by both servers (#18)
  • biorxiv-service: per-server isValidCategory now uses pre-built Set instances

35 tests pass; bun run devcheck clean.

v0.1.6: Field-test bug fixes

Choose a tag to compare

@cyanheads cyanheads released this 23 May 17:02
v0.1.6
207718b

Field-test bug fixes

Fixed error contracts, search enrichment, validation, and formatting across bioRxiv tools.

Fixed:

  • biorxiv_get_preprint / biorxiv_get_published_version: recovery hints updated to include 10.64898/ prefix
  • biorxiv_search_preprints: date validation errors now use ctx.fail() with recovery hint
  • biorxiv_search_preprints: server="both" query scoped to bioRxiv/medRxiv publishers
  • biorxiv-service: funder "NA" string normalized to absent
  • biorxiv_get_preprint: format-invalid DOIs in batch route to failed[] instead of aborting
  • biorxiv_list_recent: category validation scoped to target server taxonomy
  • biorxiv_search_preprints: whitespace-only query rejected via trim refine
  • biorxiv_list_recent: cursor-past-total message distinguished from empty filter results
  • biorxiv_list_recent: category input trimmed before taxonomy validation

35 tests; bun run devcheck clean.