openalex-mcp-server

by cyanheads

Not rated
GitHub

About

270M+ academic publications Browse Openalex MCP Server for Claude, Cursor, VS Code, and other AI agents.

Details

Author
cyanheads
Categories
Productivity, Other, Knowledge Base, API

Setup

Install openalex-mcp-server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/cyanheads/openalex-mcp-server

Follow the installation instructions in the repository README, then restart your MCP client.

Public Hosted Server:https://openalex.caseyjhand.com/mcp

Five tools for querying theOpenAlexacademic research catalog:

Primary discovery and lookup tool. Covers all OpenAlex entity types (works, authors, sources, institutions, topics, keywords, publishers, funders).

- Retrieve a single entity by ID (OpenAlex ID, DOI, ORCID, ROR, PMID, PMCID, ISSN).idtakes precedence: search criteria passed alongside it are not applied, and the response says which ones were dropped rather than echoing them back as though they ran. The search-only validations (semantic page cap,samplewithcursor,seedwithoutsample) are skipped too — a lookup is never rejected over parameters it ignores
- Keyword search with boolean operators, quoted phrases, wildcards, and fuzzy matching
- Exact and AI semantic search modes
- Rich filter syntax: AND across fields, OR within fields (us|gb), NOT (!us), ranges (2020-2024), comparisons (>100)
- Sensible default field selection per entity type, applied to both searches and ID lookups — prevents oversized responses; passselectto choose fields, or
[""]for the full record
- Invalidselectfield names produce an error listing the valid fields for that entity type
- Formatted MCP output is a generic markdown renderer — every returned field is surfaced without per-entity-type hard-coding
- Cursor pagination and up to 100 results per page;sorttakes a single key or a comma-separated list, with the-descending prefix applied per key
- display_nameis nullable — OpenAlex holds no title for paratext and other untitled records, which pass through instead of failing the whole page

Aggregate entities into groups and count them for trend, distribution, and comparative analysis.

- Group by any supported field (publication year, OA status, institution, country, topic, etc.)
- Combine with filters to scope the population before aggregation
- Up to 200 groups per page with cursor pagination
- Supportsinclude_unknownto show entities with no value for the grouped field

The front door for turning anything you have into an OpenAlex ID.Always use this before filtering by entity— names are ambiguous, IDs are not.

- A name or partial name runs an autocomplete search: up to 10 matches with disambiguation hints, ~200ms
- An identifier resolves deterministically to the single record it addresses — OpenAlex ID, DOI, ORCID, ROR, PMID, PMCID, or ISSN, bare or in URL form. Noentity_typeneeded: the identifier determines its own
- An identifier that matches nothing returns an empty result naming the scheme, not name-search advice
- Optional entity type filter and field-level filters, applied to name queries

One-hop citation graph traversal from a seed work. Wraps the OpenAlexcites/cited_by/related_tofilters behind an explicitdirectionargument so callers do not have to know the filter names.

- cites: works that cite the seed (incoming citations)
- cited_by: works the seed cites (its reference list)
- related_to: OpenAlex algorithmic "related works" (~8-30 typical, may be empty for less-cited seeds)
- Accepts OpenAlex IDs, DOIs, PMIDs, PMCIDs asseed_id; validates the seed via a singleton/works/{id}lookup before walking, so non-existent seeds surface asNotFound
- Stacks withfilters/sort/selectto narrow the graph (e.g.,publication_year=">2020",is_oa="true")

Discover valid field names before constructing a query — avoids invalid-field 400 errors. Backed by a catalog generated from OpenAlex's own field validation.

- List valid fields for any entity type and context (filter,group_by, orselect)
- group_byreturns the subset of thefilterset OpenAlex can aggregate — raw date fields,
.searchoperators, andfrom_/to_range modifiers are excluded
- Passquery(a partial or guessed name) to rank results by name similarity — surfaces the right field when you only know roughly what you want
- Complements the ranked "did you mean" suggestions now appended to invalid-field errors on the search, trends, and citation-graph tools

- Declarative tool definitions — single file per tool, framework handles registration and validation
- Unified error handling across all tools
- Pluggable auth (none,jwt,oauth)
- Swappable storage backends via the framework (not currently used by this server)
- Structured logging with optional OpenTelemetry tracing
- Runs locally (stdio/HTTP) or in Docker from the same codebase

- Typed API client with automatic ID normalization (DOI, ORCID, ROR, PMID, PMCID, ISSN, OpenAlex URLs)
- Abstract reconstruction from inverted indices — plaintext instead of OpenAlex's position-keyed encoding
- HTTP status codes mapped to specific MCP error classes (400 → InvalidParams, 422 → ValidationError, 429 → RateLimited, etc.) with upstream messages surfaced
- Every API-calling tool reports what the call spent against the OpenAlex daily budget and what is left of it, so a paginated sweep can be priced before it runs instead of ending in a 429. An account holding prepaid balance sees that too, since it keeps serving once the day's allowance is gone
- Timeout-aware request retries and cancellation support viaAbortSignal

A public instance is available athttps://openalex.caseyjhand.com/mcp— no installation required. Point any MCP client at it via Streamable HTTP:

{ "mcpServers": { "openalex-mcp-server": { "type": "streamable-http", "url": "https://openalex.caseyjhand.com/mcp" } } }

Add to your MCP client config (e.g.,claude_desktop_config.json):

{ "mcpServers": { "openalex-mcp-server": { "type": "stdio", "command": "npx", "args": ["-y", "@cyanheads/openalex-mcp-server"], "env": { "OPENALEX_API_KEY": "your-openalex-api-key" } } } }

OPENALEX_API_KEYis optional — set it to a freeOpenAlex account keyfor keyed rate limits and budget under OpenAlex's usage-based pricing, or omit it for anonymous access. SetOPENALEX_MAILTOto an email if you want to identify yourself to OpenAlex (thepolite pool).

git clone https://github.com/cyanheads/openalex-mcp-server.git
bun run build bun run start:http # or start:stdio
bun run devcheck # Lints, formats, type-checks bun run test # Runs test suite
docker build -t openalex-mcp-server . docker run -e OPENALEX_API_KEY=your-key -p 3010:3010 openalex-mcp-server

SeeCLAUDE.mdfor development guidelines and architectural rules. The short version:

- Handlers throw, framework catches — notry/catchin tool logic
- Usectx.logfor logging,ctx.statefor storage
- Always resolve names to IDs viaopenalex_resolve_namebefore using them in filters

Issues and pull requests are welcome. Run checks before submitting:

Access Wolfram Alpha's computational knowledge engine for expert-level answers and data analysis.

Multimodal RAG for source-backed AI answers

An intelligent tutoring server that uses GitHub documentation repositories to provide structured educational prompts and tools.

Validate DOIs against a real citation database, format references in 2900+ CSL styles (APA, IEEE, Chicago, Nature, etc.), and catch hallucinated academic references before they reach your paper or documentation or pitch deck. Manage citation collections, import/export BibTeX, and batch-process references. 29 tools.

A server to manage studies, recruit participants, and collect data on the Prolific platform.

UK property data: crime stats, schools, demographics, valuations, comparables, Ofsted ratings

Real-time salary data, job market trends, resume review, interview prep, and career advice for the Russian IT market. Powered by hh.ru API.

Real-time Amazon data API built for AI agents. 200M+ products, 1B+ reviews, live BSR, pricing, and competitor data as clean JSON. 10 agent skills for market research, competitor monitoring, pricing, listing audits, and more. 1,000 free credits.

Get access to Kaggle's datasets, models, competitions, notebook and benchmarks.

An MCP (Model Context Protocol) server for searching and analyzing academic papers across multiple databases (Semantic Scholar, Crossref, OpenAlex, PubMed), with regex-powered filtering and statistical analysis.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.