Skip to content

Releases: cyanheads/crossref-mcp-server

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

Choose a tag to compare

@cyanheads cyanheads released this 20 Jun 11:09
v0.1.16
3bca140

mcp-ts-core ^0.10.9 maintenance

Dependency refresh and framework adoption; re-syncs skills and devcheck tooling. No tool-surface change.

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.10.6 → ^0.10.9
  • @types/node ^25.9.3 → ^26.0.0

Changed:

  • devcheck gains a dependency-specifier guard (rejects floating latest/*/dist-tag specifiers) and plugin-manifest packaging checks (descriptions, unscoped display identity, scoped install arg)
  • devcheck.config.json enables packaging.pluginManifests
  • re-synced 14 skill files and 6 devcheck scripts to their upstream framework versions
  • runtime polite-pool User-Agent now reports crossref-mcp-server/0.1.16

110 tests pass; bun run devcheck clean.

v0.1.15: Server instructions, unscoped plugin identity

Choose a tag to compare

@cyanheads cyanheads released this 16 Jun 00:40
v0.1.15
74dc26c

Server instructions, unscoped plugin identity

Adds server-level instructions to createApp() and unscopes the agent-facing plugin display identity to the bare crossref-mcp-server machine name.

Added:

  • createApp() instructions — tool overview, CROSSREF_MAILTO polite-pool hint, DOI/ISSN/funder identifier keys, search-then-fetch flow, and the no-incoming-citations and cursor deep-paging caveats, sent to clients on initialize.

Changed:

  • Plugin display identity unscoped to crossref-mcp-server (name, mcpServers key, Codex displayName and mcp.json server key); install args stay @cyanheads/crossref-mcp-server.
  • CrossrefService.request reads this.userAgent / this.timeoutMs directly to satisfy Biome 2.5.0.

Dependency bumps:

  • @biomejs/biome ^2.4.16 → ^2.5.0
  • vitest ^4.1.8 → ^4.1.9

110 tests pass; bun run devcheck clean.

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

Choose a tag to compare

@cyanheads cyanheads released this 12 Jun 03:46
v0.1.14
1a5022b

Adopt mcp-ts-core ^0.10.6

Maintenance release tracking @cyanheads/mcp-ts-core ^0.10.6. No tool surface or behavior change — this server uses no ctx.sample (removed in 0.10.3) and no boolean env config, so the framework's breaking removals and stringbool parsing carry no migration here.

Added:

  • Explicit name/title identity pair in createApp() — both crossref-mcp-server, so served serverInfo and /.well-known/mcp.json show the machine name (mcp-ts-core #231)
  • scripts/clean-mcpb.ts post-pack bundle cleaner, wired into the bundle script (mcp-ts-core #230)
  • Dockerfile HEALTHCHECK (/healthz) and org.opencontainers.image.version from APP_VERSION (mcp-ts-core #217, #202)
  • lint-packaging.ts checks 5-9 and the coerce-boolean-env-flag antipattern rule (mcp-ts-core #201, #207, #230, #231)
  • techniques skill

Changed:

  • .mcpbignore dev-dir patterns root-anchored (mcp-ts-core #207)
  • bundle script runs under bun and appends the clean-mcpb step
  • Project skills re-synced; devcheck skillVersions.ignore for seven body-synced skills

Dependency bumps:

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

110 tests pass; bun run devcheck clean.

v0.1.13: Structured empty references, input validation, timeout enforcement

Choose a tag to compare

@cyanheads cyanheads released this 04 Jun 08:01
v0.1.13
a066dcc

Structured empty references, input validation, timeout enforcement

Three bugs resolved in this patch.

Fixed:

  • crossref_get_references: no longer throws NotFound when a DOI resolves but has no indexed
    reference list (#22). Returns { doi, referenceCount: 0, references: [] } and surfaces a
    coverage notice via ctx.enrich.notice().

  • crossref_search_journals issn, crossref_search_funders funder_doi: Zod regex validators
    added — malformed inputs fail at the tool boundary with ValidationError before any upstream
    call; patterns surface in JSON Schema (#25).

  • CrossrefService.request(): CROSSREF_TIMEOUT_MS now enforced on every upstream fetch via
    AbortSignal.any([ctx.signal, AbortSignal.timeout(timeoutMs)]) (#23).

110 tests pass; bun run devcheck clean.

v0.1.12: mcp-ts-core ^0.9.21 framework adoption

Choose a tag to compare

@cyanheads cyanheads released this 02 Jun 14:00
v0.1.12
90b2f56

mcp-ts-core ^0.9.21 framework adoption

Adopts @cyanheads/mcp-ts-core ^0.9.21. Three framework fixes land with this upgrade:
per-request log context (HTTP transport emits fresh request/trace/span IDs per request, not frozen boot context); fetchWithTimeout strips query-string secrets from error messages and logs; withRetry fails fast on non-retryable errors, ctx.fail auto-populates the retryable flag.

Changed:

  • @cyanheads/mcp-ts-core ^0.9.16 → ^0.9.21
  • release:github script added (scripts/release-github.ts)
  • scripts/check-skill-versions.ts added
  • Skills synced to framework ^0.9.21: add-tool, add-service, api-canvas, api-context, api-linter, api-utils, design-mcp-server, release-and-publish; api-mirror and orchestrations skills added
  • Plugin manifest args simplified: .claude-plugin and .codex-plugin no longer include run start:stdio args
  • README client-config keys renamed from crossref to crossref-mcp-server

Dependencies:

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

105 tests pass; bun run devcheck clean.

v0.1.11: Remove DataCanvas integration from crossref_search_works

Choose a tag to compare

@cyanheads cyanheads released this 01 Jun 03:04
v0.1.11
9390661

Remove DataCanvas integration from crossref_search_works

Dead output removed: the canvas_id input, canvas output block, spillover
logic, and canvas-accessor service never had a consumer tool (no
dataframe_query/dataframe_describe was added). Crossref works are
bibliographic metadata — the workflow is search-then-resolve-a-DOI,
not aggregate-over-rows.

Removed:

  • canvas_id input and canvas output block from crossref_search_works (#26)
  • src/services/canvas-accessor.ts
  • CANVAS_PROVIDER_TYPE config documentation from README and docs/design.md

Changed:

  • devcheck.config.json: @cyanheads/mcp-ts-core added to outdated.allowlist (framework adoption deferred)
  • Test coverage expanded across all 5 tools and service utilities

105 tests pass; bun run devcheck clean.

v0.1.10: Enrichment adoption on search tools

Choose a tag to compare

@cyanheads cyanheads released this 30 May 09:01
v0.1.10
b654c66

Enrichment adoption on search tools

search-works, search-journals, and search-funders now call ctx.enrich() to surface result totals, query counts, and empty-result guidance in a typed enrichment block reaching both structuredContent JSON and content[] markdown trailer.

Added:

  • Typed enrichment block on crossref_search_works: totalResults, returned, notice
  • Typed enrichment block on crossref_search_journals: journalCount, worksTotal, notice
  • Typed enrichment block on crossref_search_funders: funderCount, fundedWorksTotal, notice
  • Empty-result notice on all three search tools with concrete guidance

Changed:

  • totalResults, returned moved from output to enrichment on crossref_search_works
  • worksTotal moved from output to enrichment on crossref_search_journals
  • fundedWorksTotal moved from output to enrichment on crossref_search_funders

Dependency bumps:

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

29 tests pass; bun run devcheck clean.

v0.1.9: mcp-ts-core ^0.9.9 → ^0.9.13: HTTP hardening, quieter logs, GET /mcp keywords

Choose a tag to compare

@cyanheads cyanheads released this 29 May 05:02
v0.1.9
e053949

mcp-ts-core ^0.9.9 → ^0.9.13: HTTP hardening, quieter logs, GET /mcp keywords

Adopts four framework releases covering HTTP transport hardening and
polish. Server-level source changes: MCPB placeholder fix for optional
email config and explicit public-catalog landing page opt-in.

Added:

  • MCP_HTTP_MAX_BODY_BYTES — 413 body cap (default 1 MiB) before SDK parsing
  • GET /mcp now surfaces package.json keywords in the status JSON
  • .claude-plugin/ and .codex-plugin/ — plugin metadata for Claude Code and Codex discovery

Changed:

  • HTTP session-init gate: non-initialize requests without Mcp-Session-Id rejected with 400
  • 4xx log level: expected client errors (400, 401, 403, 404) logged at warning, no stack traces
  • CROSSREF_MAILTO config: z.preprocess strips MCPB ${user_config.X} placeholders to undefined; manifest.json gains "default": ""
  • landing.requireAuth: false — explicit opt-in to serve full tool inventory unauthenticated

Dependency bumps:

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

27 tests pass; bun run devcheck clean.

v0.1.8: shared date/funder helpers, mcp-ts-core ^0.9.9, skills sync

Choose a tag to compare

@cyanheads cyanheads released this 24 May 22:22
v0.1.8
b1f9978

shared date/funder helpers, mcp-ts-core ^0.9.9, skills sync

Code simplification: four copies of date-parts parsing → shared parseDateParts/formatDateParts in crossref-service.ts; two copies of funder ID stripping → normalizeFunderId. Net −20 lines across tool definitions.

Changed:

  • ambiguous_journal error code corrected: InvalidParams → ValidationError
  • parseDateParts, formatDateParts, normalizeFunderId extracted to crossref-service.ts (shared)
  • CLAUDE.md/AGENTS.md: ctx.fail, notifyPromptListChanged, notifyToolListChanged in Context table; Close the loop on issues rule added

Dependency bumps:

  • @cyanheads/mcp-ts-core ^0.9.6 → ^0.9.9

27 tests pass; bun run devcheck clean.

v0.1.7: Two field-test bug fixes

Choose a tag to compare

@cyanheads cyanheads released this 24 May 12:29
v0.1.7
5138e04

Two field-test bug fixes

crossref_search_funders: worksCount always null due to wrong field key (works → work-count).
crossref_search_journals: ambiguity error used InternalError (-32603) instead of typed ctx.fail (InvalidParams, reason=ambiguous_journal).

Fixed:

  • crossref_search_funders: worksCount mapped from f['work-count'] (closes #18)
  • crossref_search_journals: ambiguity path uses ctx.fail('ambiguous_journal') (closes #19)

27 tests pass; bun run devcheck clean (outdated dep advisory: mcp-ts-core 0.9.6 → 0.9.9, separate maintenance pass).