Skip to main content
Glama
crossref-mcp

crossref-mcp

by dam2452

crossref-mcp

Polski

Crossref REST API MCP server. Wraps the public Crossref REST API (works, journals, funders, members, types, licenses) — no API key required.

Table of contents

Related MCP server: paper-search-mcp

Tools

Tool

Parameters

Description

search_works

query, filter, select, sort, order, rows=20, offset=0, cursor

Search Crossref works (publications)

get_work

doi: str

Full metadata for a single work by DOI

get_work_agency

doi: str

Registration agency for a DOI

list_journals

query, rows=20, offset=0, cursor

List or search journals

get_journal

issn: str

Journal metadata by ISSN

get_journal_works

issn, query, filter, rows=20, offset=0, cursor

Works published in a journal

list_funders

query, filter, rows=20, offset=0

List or search funding bodies

get_funder

funder_id: str

Funder metadata by Funder Registry ID

list_members

query, filter, rows=20, offset=0

List or search Crossref members (publishers)

list_types_and_licenses

none

Available work types and licenses

Environment variables

Variable

Required

Description

CROSSREF_MCP_MAILTO

no

Email address for Crossref's "polite pool" — higher rate limits, faster responses

Wiring it up

Only requirement: uv (https://docs.astral.sh/uv/). Nothing else to install.

Claude Code

claude mcp add crossref-mcp -- uvx --from git+https://github.com/dam2452/crossref-mcp.git crossref-mcp

With the polite pool email set:

claude mcp add crossref-mcp -e CROSSREF_MCP_MAILTO=you@example.com -- uvx --from git+https://github.com/dam2452/crossref-mcp.git crossref-mcp

Claude Desktop / other MCP client

{
  "mcpServers": {
    "crossref-mcp": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/dam2452/crossref-mcp.git", "crossref-mcp"],
      "env": { "CROSSREF_MCP_MAILTO": "you@example.com" }
    }
  }
}

After pushing a new version: uv cache clean and restart the client.

Local run

uv run --directory . crossref-mcp

Tests (manual):

uv run --directory . --with pytest pytest test/

Available Tools

10 tools
get_funderA

Get metadata for a single funder identified by its Funder Registry ID.

Examples: get_funder(funder_id="100000001")

Inputs: funder_id (required). Returns: object

get_journalA

Get metadata for a single journal identified by its ISSN.

Examples: get_journal(issn="0028-0836")

Inputs: issn (required). Returns: object

get_journal_worksB

List works published in a journal identified by its ISSN.

Examples: get_journal_works(issn="0028-0836", rows=10) get_journal_works(issn="0028-0836", query="crispr", cursor="*")

Inputs: issn (required), rows, query, cursor, +2 more. Returns: object

get_workA

Get full metadata for a single work identified by its DOI.

Examples: get_work(doi="10.1038/nature12373") get_work(doi="10.1001/jama.2020.7681")

Inputs: doi (required). Returns: object

get_work_agencyA

Get the registration agency responsible for a given DOI.

Examples: get_work_agency(doi="10.1038/nature12373")

Inputs: doi (required). Returns: object

list_fundersB

List or search funding bodies in the Crossref Funder Registry.

Examples: list_funders(query="national science", rows=10) list_funders(filter="location:United States", rows=5)

Inputs: rows, query, filter, offset. Returns: object

list_journalsC

List or search Crossref journals by free-text query.

Examples: list_journals(query="nature", rows=5) list_journals(cursor="*", rows=50)

Inputs: rows, query, cursor, offset. Returns: object

list_membersC

List or search Crossref members (publishers).

Examples: list_members(query="elsevier", rows=5) list_members(filter="has-public-references:true", rows=10)

Inputs: rows, query, filter, offset. Returns: object

list_types_and_licensesB

List all available Crossref work types and the licenses seen in the corpus.

Examples: list_types_and_licenses()

Inputs: no named parameters. Returns: object

search_worksA

Search Crossref works (publications) by free-text query and/or filters.

Use cursor="*" for deep pagination beyond 10 000 results; the response includes next-cursor for subsequent pages. Mixing cursor with offset is not supported — when cursor is set, offset is dropped automatically.

Examples: search_works(query="machine learning", rows=5) search_works(filter="from-pub-date:2024-01-01,until-pub-date:2024-12-31", sort="published", order="desc") search_works(query="crispr", select="DOI,title,author,published", cursor="*")

Inputs: rows, sort, order, query, +4 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool targets a unique entity or operation (funder, journal, work, member, license), with clear boundaries between general search and entity-specific lookups.

    Naming Consistency5/5

    All tools follow a consistent verb_noun pattern using snake_case (e.g., get_funder, list_journals, search_works), making the action and target immediately clear.

    Tool Count5/5

    10 tools is well-scoped for the domain of querying Crossref metadata, covering all major entity types without unnecessary redundancy.

    Completeness5/5

    The tool set provides get and list/search for all core entities (works, journals, funders, members) plus additional utilities (work agency, types/licenses), leaving no obvious gaps for a read-only API.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to search academic literature and retrieve detailed metadata for papers, journals, and funding organizations via the Crossref database. It supports DOI-based lookups and keyword searches to facilitate programmatic access to scholarly research data.
      7
      -
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables searching for academic papers and preprints across multiple platforms including Semantic Scholar, arXiv, PubMed, and CrossRef. It provides access to research records, DOI lookups, and journal metadata through a unified interface deployed on Cloudflare Workers.
      2
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Searches and retrieves scholarly metadata from the CrossRef REST API, covering over 150 million records across all disciplines, without requiring an API key.
      26 PyPI
      MIT