crossref-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CACHE_TTL | No | Cache TTL in seconds. | 86400 |
| LOG_LEVEL | No | Log level (logs go to stderr). | INFO |
| REDIS_URL | No | Enable Redis cache + shared rate limiting (optional). | |
| MCP_API_KEY | No | If set, HTTP requests need a matching X-API-Key header (/health exempt). | |
| MCP_TRANSPORT | No | Transport mode: 'stdio' or 'http'. | stdio |
| CROSSREF_MAILTO | No | Email for Crossref's polite pool (recommended). | |
| CROSSREF_TIMEOUT | No | Per-request timeout in seconds. | 30 |
| CROSSREF_BASE_URL | No | API base URL. | https://api.crossref.org |
| RATELIMIT_BACKEND | No | Rate limiting backend: 'in-memory' or 'redis'. | in-memory |
| CROSSREF_PLUS_TOKEN | No | Crossref Plus API token (sent as a header). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Health check tool: returns the server name and version. |
| search_worksA | Search Crossref works (articles, books, datasets, ...). |
| get_workA | Fetch a single work's metadata by DOI. |
| get_work_referencesA | List the reference list of a work (the works it cites), by DOI. |
| get_work_qualityB | Look up the registration agency for a DOI (Crossref, DataCite, ...). |
| search_membersA | Search Crossref members (publishers/societies). Returns id + primary name. |
| get_memberA | Fetch one member (publisher) by numeric Crossref member id. |
| get_member_worksA | List works published by a given member id. |
| search_journalsB | Search journals by title/keyword. Returns title, ISSNs, publisher. |
| get_journalA | Fetch one journal by ISSN (NNNN-NNNN; hyphen optional). |
| get_journal_worksB | List works published in a given journal (by ISSN). |
| search_fundersB | Search funding bodies by name. Returns funder id, name, location. |
| get_funderA | Fetch one funder by its Crossref Funder Registry id (e.g. 100000001). |
| get_funder_worksA | List works funded by a given funder id. |
| list_typesB | List Crossref work types (journal-article, book-chapter, ...). |
| get_typeA | Fetch one work type by id (e.g. "journal-article"). |
| list_licensesA | List licenses Crossref has seen. No single-license lookup exists. |
| get_prefixA | Look up the owner of a DOI prefix (e.g. "10.1038"). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Each tool targets a distinct entity (member, journal, funder, type, license, prefix, work). The only confusion is get_work_quality, which sounds like a quality metric but actually queries a DOI's registration agency; the description clarifies, but the name could mislead.
Most tools follow a clear verb_noun pattern (search_*, get_*, list_*), with consistent entity-specific suffixes like '_works'. The outlier is get_work_quality, which uses a non-entity noun and doesn't reflect its purpose; ping is also non-standard but acceptable.
At 18 tools, this is slightly above the ideal 3-15 range, but the broad scope of Crossref's API—covering multiple entity types plus complex work search—justifies the count. No tool feels redundant or extraneous.
The set covers search and retrieval for members, journals, funders, works, types, licenses, and prefixes, including references. However, there is no endpoint for works citing a given DOI (forward citations), which is a notable gap for a scholarly metadata server.