Query 270M+ academic publications via @cyanheads/openalex-mcp-server — search works/authors/institutions, resolve names, analyze publication trends
Setup
npm install @cyanheads/openalex-mcp-serverServer start (stdio):
[email protected] node node_modules/@cyanheads/openalex-mcp-server/dist/index.jsWARNING: 'API key' is NOT a real credential — OpenAlex is free. The OPENALEXAPIKEY env var is just a polite-pool email identifier. Any valid email works. The server refuses to start without it (config validation error), but any email gets you in.
3 Tools — Schema-Verified
1. openalexresolvename — Disambiguate names to OpenAlex IDs
{"query": "Geoffrey Hinton", "entity_type": "authors"}Returns Geoffrey Hinton (A5126876061) at University of Toronto. Cross-entity search works by omitting entity_type.
2. openalexsearchentities — Search all 8 entity types
Entity types: works, authors, sources, institutions, topics, keywords, publishers, funders
Search works: {"entitytype": "works", "search": "CRISPR gene editing", "perpage": 3} → 317M+ results Lookup by DOI: {"entitytype": "works", "id": "10.1038/nature12373"} → Full metadata Search funders: {"entitytype": "funders", "search": "National Science Foundation"} → NSFC 4.3M works, NIH 1.7M Search publishers: {"entity_type": "publishers", "search": "Elsevier"} → 24M works, 641M citations
3. openalexanalyzetrends — Aggregate and count entities
CRITICAL: filters must be an OBJECT, not a string. {"publicationyear": "2025"} works, "publicationyear:2025" throws Zod error.
Publications per year: {"entitytype": "works", "groupby": "publicationyear", "filters": {"type": "article", "publicationyear": "2020-2026"}} → 2025: 8.0M | 2020: 7.3M | 2024: 6.8M | 2026: 4.8M (partial)
OA breakdown 2025: {"entitytype": "works", "groupby": "oastatus", "filters": {"publicationyear": "2025"}} → green: 5.1M | closed: 4.7M | gold: 1.7M | diamond: 1.7M
CS papers by country: {"entitytype": "works", "groupby": "authorships.institutions.countrycode", "filters": {"publicationyear": "2025", "primary_topic.field.id": "fields/17"}} → China: 139K | US: 80K | India: 61K
Key Gotchas
- OPENALEXAPIKEY is mandatory but NOT a real credential — any email works (polite pool). Without it, server crashes on Zod validation.
- filters param is an OBJECT, not a string — {"publicationyear": "2025"} works, "publicationyear:2025" throws error.
- ORCID lookups fail — {"entitytype": "authors", "id": "0000-0002-1992-2684"} returns 404 even for valid ORCIDs. Use openalexresolve_name instead.
- groupby field names vary by entity type — works use publicationyear/oastatus; authors use lastknowninstitutions.countrycode.
- Response format is markdown — not raw JSON.
- Pagination via cursor string in response.
Execution Summary: 15/20 success (75%), p50=857ms
3 filter-format errors (discovered correct object format), 1 ORCID lookup failure (known limitation), 1 correct 404.
Key data verified: 2025 has 8M+ articles, green OA leads at 5.1M, China leads CS at 139K papers, 2023 peak retractions at 18.4K, Elsevier publishes 24M works.