Skip to main content
Glama
algonacci

mcp-crossref

by algonacci
README.md
# mcp-crossref

MCP server to give client the ability to search scholarly metadata, citations and references through Crossref

# Features

- Search ~170 million works from every Crossref publisher with field queries and filters
- Resolve any DOI into a normalized record with a metadata-completeness check
- Format citations in APA, IEEE, Vancouver, Chicago, MLA, Harvard, any CSL style, BibTeX, RIS or CSL-JSON
- Extract and verify every DOI in pasted text (reference lists, PDF text)
- Reference lists, similar works, and citation snowballing (references + citing works via OpenAlex)
- Topic trends with exact-phrase matching, author, journal and funder profiles

# Tools

| Tool | Use it for |
|---|---|
| `search_crossref` | Literature search across publishers; find a paper from a citation string (`bibliographic`) |
| `get_crossref_work` | Full metadata for one DOI, plus which fields the publisher did not deposit |
| `cite_dois` | Bibliography in any style, or BibTeX/RIS export (also works for arXiv/DataCite DOIs) |
| `resolve_dois` | Turn messy text containing DOIs into verified metadata |
| `get_crossref_references` | Backward snowballing: what a paper cites |
| `find_related_works` | "More like this" by title and subjects |
| `analyze_crossref_topic` | Publications per year, top venues/publishers/funders for an exact phrase |
| `get_crossref_author` | Output, co-authors, venues, ORCID iDs for a researcher |
| `get_crossref_journal` | Journal profile by ISSN, or find a journal's ISSN by name |
| `get_crossref_funder` | What a funder (e.g. LPDP) has funded |
| `snowball_doi` | References + works citing the paper + related works + open-access status (OpenAlex) |

Each tool's docstring explains when to use it, its arguments with examples, and Crossref's pitfalls,
so the MCP client can pick the right tool on its own.

# Things to know

- Crossref has no exact-phrase search: a plain query matches any of its words. Use the top results,
  add filters, or `analyze_crossref_topic` for phrase-accurate counts.
- Crossref exposes citation counts but not the list of citing works; `snowball_doi` gets that from OpenAlex.
- Many publishers do not deposit abstracts to Crossref; `snowball_doi` returns OpenAlex's abstract when available.
- arXiv DOIs (`10.48550/arXiv.*`) are registered with DataCite, so `get_crossref_work` cannot find them,
  but `cite_dois` can format them.
- Counts and coverage describe metadata only, never the scientific quality of a paper, journal or author.

# Configuration

Copy `.env.example` to `.env` (both optional, no account needed for Crossref):

- `CROSSREF_MAILTO`: your contact email. Joins Crossref's "polite" pool with a higher rate limit.
- `OPENALEX_API_KEY`: free key from openalex.org settings for 10x the keyless daily budget used by
  `snowball_doi`. Without it, OpenAlex runs keyless; a rejected key falls back to keyless automatically.

# Usage

For this MCP server to work, add the following configuration to your MCP config file:

```json
{
  "mcpServers": {
    "crossref": {
      "command": "uv",
      "args": [
        "--directory",
        "%USERPROFILE%/Documents/GitHub/mcp-crossref",
        "run",
        "python",
        "main.py"
      ]
    }
  }
}
```

Example prompts:

- "Find journal articles on retrieval augmented generation since 2024 and cite the top 5 in APA."
- "Here is my reference list, check every DOI and give me BibTeX."
- "Snowball from 10.1016/j.eswa.2016.04.008: which newer papers cite it?"
- "Is research on federated learning in healthcare growing, and where is it published?"

TDQS

A4.5/5.0

Scored across 11 tools

Disambiguation4/5

Tools are largely distinct by resource and action: search, get, cite, resolve, references, author/journal/funder lookup, snowballing, and related works. Some overlap exists between find_related_works and snowball_doi's related component, and between get_crossref_references and snowball_doi's backward citations, but descriptions clearly distinguish Crossref text similarity from OpenAlex citation graph.

Naming Consistency4/5

All names use snake_case and follow a mostly verb_noun pattern. However, the use of 'crossref' is inconsistent: get_crossref_* is prefixed, search_crossref is suffixed, and cite_dois/resolve_dois/snowball_doi/find_related_works omit it entirely. Still readable and predictable overall.

Tool Count5/5

11 tools is well-scoped for a Crossref metadata server. Each tool earns its place by covering a distinct part of literature discovery, metadata retrieval, citation formatting, or entity profiling.

Completeness5/5

The surface covers search, topic analysis, work metadata, citation formatting, DOI resolution, reference lists, citation snowballing, and author/journal/funder profiles. There are no obvious gaps for the stated domain of scholarly metadata discovery and analysis.

Maintenance

ActivityMaintained
ResponsivenessNo issues