
Openalex Mcp Server
Connects Claude to OpenAlex's catalog of 270 million academic publications, authors, institutions, and topics. Exposes four tools: entity search with filters and pagination, trend aggregation for distribution analysis, name-to-ID resolution via autocomplete, and citation graph traversal in both directions. Also includes two structured prompts for literature reviews and research landscape analysis. Built on the author's mcp-ts-core framework with typed API clients, automatic ID normalization across DOI/ORCID/ROR/PMID formats, and abstract reconstruction from OpenAlex's inverted indices. Available as a public hosted instance at openalex.caseyjhand.com or self-hosted via npx. Useful for systematic literature searches, citation network analysis, tracking research trends, or resolving ambiguous author and institution names before filtering.
- GitHub stars
- 17
- tools
- 5
- transport
- STDIO, HTTP
- env vars
- 13
- last updated
- Nov 11, 2026
Install
From registry metadata$ npx add-mcp https://openalex.caseyjhand.com/mcp --name openalexRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http openalex https://openalex.caseyjhand.com/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 5 toolsVerified live against the running server on Nov 13, 2026.
openalex_resolve_nameResolve a name or an identifier to an OpenAlex ID. ALWAYS use this before filtering by entity — names are ambiguous, IDs are not. A name returns up to 10 autocomplete matches with disambiguation hints. An identifier — OpenAlex ID, DOI, ORCID, ROR, PMID, PMCID, ISSN, or arXiv I...3 params
Resolve a name or an identifier to an OpenAlex ID. ALWAYS use this before filtering by entity — names are ambiguous, IDs are not. A name returns up to 10 autocomplete matches with disambiguation hints. An identifier — OpenAlex ID, DOI, ORCID, ROR, PMID, PMCID, ISSN, or arXiv I...
entity_typestringworks · authors · sources · institutions · topics · keywordsfiltersobjectquery*stringopenalex_search_entitiesSearch, filter, sort, or retrieve by ID. Covers all OpenAlex entity types (works, authors, sources, institutions, topics, keywords, publishers, funders, awards). Pass `id` to retrieve a single entity; on works it also takes an arXiv ID, found by its arXiv landing page when Ope...13 params
Search, filter, sort, or retrieve by ID. Covers all OpenAlex entity types (works, authors, sources, institutions, topics, keywords, publishers, funders, awards). Pass `id` to retrieve a single entity; on works it also takes an arXiv ID, found by its arXiv landing page when Ope...
cursorstringentity_type*stringworks · authors · sources · institutions · topics · keywordsfiltersobjectidstringpageintegerper_pageintegerquerystringsampleintegersearch_modestringkeyword · exact · semanticdefault: keywordseedstringselectarraysliceobjectsortstringopenalex_analyze_trendsAggregate OpenAlex entities into groups and count them. Use for trend analysis (group works by publication_year), distribution analysis (group by oa_status, type, country), and comparative analysis (group by institution or topic). Combine with filters to scope the analysis. Re...7 params
Aggregate OpenAlex entities into groups and count them. Use for trend analysis (group works by publication_year), distribution analysis (group by oa_status, type, country), and comparative analysis (group by institution or topic). Combine with filters to scope the analysis. Re...
cursorstringentity_type*stringworks · authors · sources · institutions · topics · keywordsfiltersobjectgroup_by*stringinclude_unknownbooleanorderstringcount · keyper_pageintegeropenalex_get_citation_graphWalk the citation graph one hop from a seed work. Direction picks the edge: incoming citations (`cites`), the seed's own references (`cited_by`), or OpenAlex's algorithmically-related works (`related_to`). Note: `direction` follows OpenAlex's filter convention, which inverts t...7 params
Walk the citation graph one hop from a seed work. Direction picks the edge: incoming citations (`cites`), the seed's own references (`cited_by`), or OpenAlex's algorithmically-related works (`related_to`). Note: `direction` follows OpenAlex's filter convention, which inverts t...
cursorstringdirection*stringcites · cited_by · related_tofiltersobjectper_pageintegerseed_id*stringselectarraysortstringopenalex_describe_fieldsList valid field names for an OpenAlex entity type and context (filter, group_by, or select). Use proactively before constructing a filter or group_by to avoid invalid-field 400 errors. Pass `query` to rank the list by name similarity — useful when you have a partial or guesse...3 params
List valid field names for an OpenAlex entity type and context (filter, group_by, or select). Use proactively before constructing a filter or group_by to avoid invalid-field 400 errors. Pass `query` to rank the list by name similarity — useful when you have a partial or guesse...
context*stringfilter · group_by · selectentity_type*stringworks · authors · sources · institutions · topics · keywordsquerystringSponsors
Configuration
OPENALEX_CLAMP_PER_PAGEdefault: trueClamp oversized count inputs (per_page, semantic-search per_page, sample, slice.limit) to their caps with a notice. Set false to reject them instead.
OPENALEX_FILTER_STRING_INPUTdefault: trueAccept unambiguous native filter strings on search_entities. Set false to require record objects.
OPENALEX_FILTER_RECORD_REPAIRdefault: trueAccept boolean and number values, nested objects, and quoted keys in the filters record, with a notice. Set false to require string values under dotted keys.
OPENALEX_SELECT_STRING_INPUTdefault: trueAccept a comma-separated select string on search_entities and get_citation_graph, with a notice. Set false to require an array.
OPENALEX_API_KEYOpenAlex account API key, sent as api_key= - optional (free from https://openalex.org/settings/api). Without it, anonymous rate limits apply.
OPENALEX_MAILTOOptional email sent as mailto= to identify yourself to OpenAlex (the polite pool). Separate from the API key.
OPENALEX_BASE_URLdefault: https://api.openalex.orgOpenAlex API base URL.
MCP_LOG_LEVELdefault: infoSets the minimum log level for output (e.g., 'debug', 'info', 'warn').
MCP_TRANSPORT_TYPEdefault: httpSelects the HTTP transport.
MCP_HTTP_HOSTdefault: 127.0.0.1The hostname for the HTTP server.
MCP_HTTP_PORTdefault: 3010The port to run the HTTP server on.
MCP_HTTP_ENDPOINT_PATHdefault: /mcpThe endpoint path for the MCP server.
MCP_AUTH_MODEdefault: noneAuthentication mode to use: 'none', 'jwt', or 'oauth'.
Readme
@cyanheads/openalex-mcp-server
Access the OpenAlex academic research catalog — 270M+ publications — via MCP. STDIO or Streamable HTTP.
Details
- Repository
- github.com/cyanheads/openalex-mcp-server
- Package
@cyanheads/openalex-mcp-server- Transport
- STDIO, HTTP
- Registry
- MCP registry, active
- Resources
- 1
- Prompts
- 2
- Tools verified
- Nov 13, 2026
More from cyanheads
- Faostat Mcp Server3
- National Parks Mcp Server3
- Federal Regulations Mcp Server2
- Calculator Mcp Server3
- Congressgov Mcp Server2
- Nws Weather Mcp Server2
- Obsidian Mcp Server705
- Toolkit Mcp Server20
- Nhtsa Vehicle Safety Mcp Server3
- Eur Lex Mcp Server12
- Hn Mcp Server7
- Git Mcp Server245
- Secedgar Mcp Server11
- Gdelt Mcp Server10
- Eurostat Mcp Server9
- Open Meteo Mcp Server13
- Pubchem Mcp Server13
- Gutenberg Mcp Server6
- Libofcongress Mcp Server6
- Orcid Mcp Server6
- Protein Mcp Server6
- Wikipedia Mcp Server6
- Cdc Health Mcp Server5
- Usaspending Mcp Server5