cyanheads/crossref-mcp-server
Resolve DOIs, search ~188M scholarly works, fetch references, and look up publishers via the Crossref REST API. STDIO or Streamable HTTP.
Changelog
All notable changes to this project. Each entry links to its full per-version file in changelog/.
0.5.0 — 2026-10-28
Publishes the crossref-guide Agent Skill as an MCP resource and moves to mcp-ts-core 0.13.18: error text in content[] escapes Markdown, and string trailer values such as nextWorksCursor render as inline code.
0.4.4 — 2026-10-24
Preserve deposited metadata and scientific notation, and flag suspect cursor responses.
0.4.3 — 2026-10-22
A not-found DOI or prefix names the registration agency that holds it, page sizes above the per-call cap are clamped with a notice instead of rejected, and reference, search-result, and journal records carry more fields.
0.4.2 — 2026-10-08
Framework update to @cyanheads/mcp-ts-core 0.13.14: tool error results carry a request ID and no longer expose server internals in their data, and numeric or boolean strings and null optional values in tool arguments are repaired instead of rejected.
0.4.1 — 2026-09-24
crossref_get_work adds citation locators, ISBNs, editors, publication updates, and related identifiers, and MathML formulas read as their TeX annotation or a linear form instead of losing roots, scripts, and fractions.
0.4.0 — 2026-09-23 · ⚠️ Breaking
Crossref rejections come back as declared reasons with the rejected inputs, works_cursor walks on the journal and funder tools work again, crossref_search_works.fields is limited to the 17 names the summary projects, and blank search inputs read as omitted.
0.3.13 — 2026-09-19 · 🛡️ Security
crossref_get_work and crossref_get_references accept a resolver-wrapped DOI, sessions declare themselves stateless in src/, and the Crossref request URL no longer reaches callers in error.data.
0.3.12 — 2026-09-13
mcp-ts-core ^0.13.0 adoption: a cancelled request returns RequestCancelled (-32011) instead of the raw abort error, and the development skill tree moves to framework-skills/ so a plugin install no longer receives it.
0.3.11 — 2026-08-25
GHCR image now builds — Docker build stage runs on the native builder platform instead of under QEMU emulation
0.3.10 — 2026-08-25
Framework adoption to mcp-ts-core 0.12.3 (MCP SDK v2) — strict tool inputs, JSON Schema 2020-12, protocol revision 2026-07-28
0.3.9 — 2026-08-09
crossref_get_work's publication-date fallback now matches the three search tools instead of stopping early on a source naming no date
0.3.8 — 2026-08-09
Crash fix for ROR-only funders/affiliations and null date components; content[] now escapes Markdown; JATS formula dedup
0.3.7 — 2026-08-09
Unified JATS/reference markup strip; refersplit, valueless attributes, MathML duplication, and link-tag address loss fixed
0.3.6 — 2026-08-09
crossref_get_references markup strip rewritten (tag shape, MathML/JATS citation regions), full HTML5 named entity set
0.3.5 — 2026-08-09
Author list paging/cap on crossref_get_work and crossref_search_works, reference markup stripped via element-name allow-list
0.3.4 — 2026-08-09
Free-text output normalized (JATS markup, entities), funder deprecation notices, dead countryCode field removed
0.3.3 — 2026-08-06
crossref_search_works cursor walks terminate correctly; blank cursor normalized
0.3.2 — 2026-08-06
Cursor paging on journal/funder works lists, faster failure on a request-timeout deadline
0.3.1 — 2026-08-07
Upstream and transport failures from Crossref now classify by wire code instead of by accident, and every upstream reason carries a recovery hint on content[] as well as structuredContent
0.3.0 — 2026-08-06 · ⚠️ Breaking
crossref_search_journals and crossref_search_funders page both the name-search and works lists by offset; crossref_search_funders rejects ambiguous include_works targets instead of silently picking one; funder_doi accepts bare registry IDs
0.2.1 — 2026-08-06
crossref_search_works force-includes DOI in select= and stops capping author lists at 10; crossref_get_references pages instead of truncating content[]; crossref_get_member scales coverage precision so small fractions don't round to 0%
0.2.0 — 2026-07-13
crossref_get_member resolves a member ID to its publisher record (DOI prefixes, counts, deposit coverage); crossref_get_prefix resolves a DOI prefix to its owning member
0.1.17 — 2026-07-13
Field-specific search-works query params (title/author/container-title/bibliographic); journal and funder works sorted most-recent-first; README/design.md accuracy fixes; mcp-ts-core ^0.10.14 with Socket install-scanning and Docker build hardening
0.1.16 — 2026-06-20
Adopt @cyanheads/mcp-ts-core ^0.10.9; re-sync 14 skills + 6 devcheck scripts; devcheck gains dependency-specifier and plugin-manifest packaging guards
0.1.15 — 2026-06-15
Server-level instructions on createApp(); plugin display identity unscoped to crossref-mcp-server; @biomejs/biome ^2.5.0, vitest ^4.1.9
0.1.14 — 2026-06-11
Maintenance: @cyanheads/mcp-ts-core ^0.9.21 → ^0.10.6; explicit name/title identity pair; Dockerfile image.version + HEALTHCHECK; root-anchored .mcpbignore; post-pack bundle cleaner; packaging and antipattern linter checks; skill sync
0.1.13 — 2026-06-04
crossref_get_references returns structured empty data instead of throwing; ISSN and funder_doi validated at the tool boundary; CROSSREF_TIMEOUT_MS now enforced per-request
0.1.12 — 2026-06-02
Adopt @cyanheads/mcp-ts-core ^0.9.21 — per-request log context fix, secret-stripping in error messages, withRetry fail-fast on non-retryable errors
0.1.11 — 2026-05-31
Remove DataCanvas integration from crossref_search_works — canvas_id input, canvas output block, spillover logic, and the canvas-accessor service
0.1.10 — 2026-05-30
Enrichment adoption: search tools surface result totals, query echo, and empty-result guidance in a typed enrichment block
0.1.9 — 2026-05-28
@cyanheads/mcp-ts-core ^0.9.9 → ^0.9.13: HTTP body cap, session-init gate, quieter 4xx logs, GET /mcp keywords, MCPB placeholder fix
0.1.8 — 2026-05-24
Code simplification: shared parseDateParts/formatDateParts/normalizeFunderId helpers; mcp-ts-core ^0.9.6 → ^0.9.9; ambiguous_journal error code InvalidParams → ValidationError
0.1.7 — 2026-05-24
Fix crossref_search_funders worksCount always null; replace InternalError with typed ctx.fail in crossref_search_journals ambiguity path
0.1.6 — 2026-05-23
Field-test bug fixes: error handling, data mapping, validation, and formatting across all five Crossref tools
0.1.5 — 2026-05-23
Pre-launch polish: type-safe error handling, .describe() on output schemas, AGENTS.md, Dockerfile OCI labels, bunfig.toml
0.1.4 — 2026-05-23
field-test bug fixes: JATS stripping, null type handling, 404 recovery, filter docs, nextCursor naming
0.1.3 — 2026-05-23
mcp-ts-core ^0.9.5 → ^0.9.6, LICENSE added, lint-packaging and skill updates
0.1.2 — 2026-05-23
mcp-ts-core ^0.9.5, error code semantic fixes (invalid_doi/cursor_offset_conflict → ValidationError), MCPB bundle support
0.1.1 — 2026-05-21
Full tool surface: DOI resolution, reference extraction, works search, journal and funder lookup
0.1.0 — 2026-05-21
Initial scaffold from @cyanheads/mcp-ts-core; tool-surface design for Crossref REST API.