io. github. cyanheads/ openalex-mcp-server
by cyanheads · remote · local (npm) · no sign-in to list tools · v0.9.0 · published by GitHub user cyanheads
Access the OpenAlex academic research catalog — 270M+ publications.
5 tools: 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads5Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http openalex https://openalex.caseyjhand.com/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
5 tools
Only reads 5Claude Code: allow
openalex_analyze_trendsAggregate OpenAlex entities into groups and count them.No findings
Why it is in this group
- The name "openalex_analyze_trends" says "analyze": a word for reading.
Description, as the server wrote it 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. Returns up to 200 groups per page — use cursor pagination for fields with many distinct values.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
openalex_describe_fieldsList valid field names for an OpenAlex entity type and context (filter, group_by, or select).No findings
Why it is in this group
- The name "openalex_describe_fields" says "describe": a word for reading.
Description, as the server wrote it 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 guessed field name. Ranking never drops a field: the full list comes back either way.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
openalex_get_citation_graphWalk the citation graph one hop from a seed work.No findings
Why it is in this group
- The name "openalex_get_citation_graph" says "get": a word for reading.
Description, as the server wrote it 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 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. Responses cap at 64,000 bytes per surface unless the least a call can return is larger (`over_budget`); `omitted` and `windows` give the openalex_search_entities calls that continue a cut.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
openalex_resolve_nameResolve a name or an identifier to an OpenAlex ID.No findings
Why it is in this group
- The name "openalex_resolve_name" says "resolve": a word for reading.
Description, as the server wrote it 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, or ISSN, bare or in URL form — resolves directly to the record it addresses instead of running a name search. 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. A PMCID is recognized as well, bare or as a PubMed Central URL, but OpenAlex indexes no PMCIDs, so it resolves nothing — pass the work's PMID or DOI instead.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
openalex_search_entitiesSearch, filter, sort, or retrieve by ID.No findings
Why it is in this group
- The name "openalex_search_entities" says "search": a word for reading.
Description, as the server wrote it Search, filter, sort, or retrieve by ID. Covers all OpenAlex entity types (works, authors, sources, institutions, topics, keywords, publishers, funders). Pass `id` to retrieve a single entity. Otherwise, use `query` and/or `filters` for discovery. Supports keyword search with boolean operators, exact phrase matching, and AI semantic search. 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` to override with specific fields, or `["*"]` for the full record. Responses cap at 64,000 bytes per surface unless the least a call can return is larger (`over_budget`); `omitted` and `windows` give the calls that continue a cut, and `slice` pages a long array.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.9.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http openalex https://openalex.caseyjhand.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__openalex__openalex_resolve_name",
"mcp__openalex__openalex_search_entities",
"mcp__openalex__openalex_analyze_trends",
"mcp__openalex__openalex_get_citation_graph",
"mcp__openalex__openalex_describe_fields"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as openalex. Review it before you use it.
