openalex-mcp-server
io.github.cyanheads/openalex-mcp-serverVersion 0.11.1Access the OpenAlex academic research catalog — 270M+ publications.
Status
Responds274 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:48 UTC
- Latency
- 274 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://openalex.caseyjhand.com/mcpResponds274 msNo sign-in
Claude Code
claude mcp add --transport http openalex-mcp-server https://openalex.caseyjhand.com/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: openalex-mcp-server
Remote MCP server URL: https://openalex.caseyjhand.com/mcpCursor
{
"mcpServers": {
"openalex-mcp-server": {
"url": "https://openalex.caseyjhand.com/mcp"
}
}
}VS Code
code --add-mcp '{"name":"openalex-mcp-server","type":"http","url":"https://openalex.caseyjhand.com/mcp"}'Streamable HTTP
npm: @cyanheads/openalex-mcp-server 0.11.1Package only
npm (npx)
claude mcp add openalex-mcp-server -- npx -y @cyanheads/openalex-mcp-server@0.11.1Streamable HTTP
npm: @cyanheads/openalex-mcp-server 0.11.1Package only
npm (npx)
claude mcp add openalex-mcp-server -- npx -y @cyanheads/openalex-mcp-server@0.11.1Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
5 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
openalex_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. Returns up to 200 groups per page — use order "key" and cursor pagination for fields with many distinct values. OpenAlex can wrap a key-ordered walk to earlier groups. Stop when a page's first key repeats an earlier key, or when a page is short or empty. | Not declared | Yes | Yes | Yes |
openalex_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 guessed field name. Ranking never drops a field: the full list comes back either way. | Not declared | Yes | Yes | Not declared |
openalex_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 the common English reading — `cites` returns works that cite the seed; `cited_by` returns works the seed cites. Results use the works schema; combine with filters/sort to narrow further. A page holds `per_page` works and `next_cursor` continues it. | Not declared | Yes | Yes | Yes |
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 ID, bare or in URL form — resolves directly to the record it addresses instead of running a name search. An arXiv ID resolves to its work under any entity_type, found by its arXiv landing page when OpenAlex holds no work under its arXiv DOI, one billed list request. Short names share the bare OpenAlex ID shape (keyword p53 reads as publisher ID P53), so a bare OpenAlex ID that resolves nothing is searched as a name next. Two identifiers can address more than one entity type: a ROR names an organization's institution, funder, and publisher records alike, so it returns each one that exists (institution first) unless entity_type picks one of those three; and a Crossref Funder Registry DOI (10.13039/…) resolves to the funder unless entity_type is works. An award ID (G…, bare or as an OpenAlex URL) is not looked up, since OpenAlex has no award autocomplete: it returns no matches and a notice naming the openalex_search_entities call that opens the award. Under entity_type, a bare G… is searched as a name of that type instead. | Not declared | Yes | Yes | Yes |
openalex_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 OpenAlex holds no work under its arXiv DOI, one billed list request. Otherwise, use `query` and/or `filters` for discovery. Filters take a record object; an unambiguous native string such as "primary_location.source.issn:0920-8542" is also accepted when enabled and disclosed in `notice`. Native clauses split on commas outside paired double quotes and the first colon; duplicate keys and bare fragments are rejected. Any filter value sent unquoted must have paired double quotes; balanced search phrases remain valid. Supports keyword search with boolean operators, exact phrase matching, AI semantic search, and seeded random samples. On works, wildcards (`*`, `?`) need search_mode "exact" or a `.search.exact` filter, and a `*` needs three characters before it. Use openalex_resolve_name to resolve names to IDs before filtering. Searches and ID lookups return a curated set of fields by default; pass `select` (an array, or a comma-separated string) to override with specific fields, or `["*"]` for the full record. A page holds `per_page` records and `next_cursor` continues it — semantic search and a seeded `sample` continue with `page` instead; an `id` lookup returns every selected array whole, and `slice` pages one array by count. | Not declared | Yes | Yes | Yes |
Details
- Registry status
- Active
- Published
- Nov 11, 2026
- Updated
- Nov 11, 2026
- Website
- Not given
- Categories (suggested)
- Data and analyticsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared