# openalex-mcp-server

Puts the OpenAlex catalog a prompt away: over 270M works, plus authors, sources, institutions and topics. Handy when you need literature search or one-hop citation walks without leaving the chat.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 16
- Author: cyanheads
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/cyanheads/openalex-mcp-server
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/openalex-mcp-server

## What it does

Five tools cover the ground. `openalex_search_entities` queries and filters all eight entity types by ID or keyword; `openalex_analyze_trends` runs group-by aggregations; `openalex_resolve_name` turns a name or an identifier such as a DOI, ORCID, ROR, PMID or ISSN into an OpenAlex ID; `openalex_get_citation_graph` steps one hop along `cites`, `cited_by` or `related_to`; `openalex_describe_fields` lists the filter and group_by names an entity type accepts. Two prompts bundle the workflow: a systematic literature review and a research-landscape analysis.

Either connect over Streamable HTTP to the hosted endpoint `https://openalex.caseyjhand.com/mcp`, or run it locally through `npx -y @cyanheads/openalex-mcp-server` on STDIO. The local route reads `OPENALEX_API_KEY`, `OPENALEX_MAILTO`, `OPENALEX_BASE_URL`, `OPENALEX_CLAMP_PER_PAGE` and `OPENALEX_FILTER_STRING_INPUT`.

Filter syntax is where it bites. You may pass a record object or a native string like `issn:0920-8542`. A single value that combines `|` with an AND operator gets rejected as `mixed_and_or_in_filter_value`, so split the AND into its own key. Unquoted values also need matching double quotes.

## Requirements
- Needs: Node.js (commands run via npx)
- Remote server: `https://openalex.caseyjhand.com/mcp`
- Environment variables: `OPENALEX_CLAMP_PER_PAGE`, `OPENALEX_FILTER_STRING_INPUT`, `OPENALEX_API_KEY`, `OPENALEX_MAILTO`, `OPENALEX_BASE_URL`, `MCP_LOG_LEVEL`, `MCP_TRANSPORT_TYPE`, `MCP_HTTP_HOST`, `MCP_HTTP_PORT`, `MCP_HTTP_ENDPOINT_PATH` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

1. **Platform CLI: remote server**
```bash
claude mcp add --transport http openalex-mcp-server https://openalex.caseyjhand.com/mcp
```

2. **Platform CLI**
```bash
claude mcp add --env OPENALEX_CLAMP_PER_PAGE=<OPENALEX_CLAMP_PER_PAGE> --env OPENALEX_FILTER_STRING_INPUT=<OPENALEX_FILTER_STRING_INPUT> --env OPENALEX_API_KEY=<OPENALEX_API_KEY> --env OPENALEX_MAILTO=<OPENALEX_MAILTO> --env OPENALEX_BASE_URL=<OPENALEX_BASE_URL> --transport stdio openalex-mcp-server -- npx -y @cyanheads/openalex-mcp-server
```
Replace <…> with your own values. 6 more environment variables are in the server README

### Codex

1. **Platform CLI: remote server**
```bash
codex mcp add openalex-mcp-server --url https://openalex.caseyjhand.com/mcp
```

2. **Platform CLI**
```bash
codex mcp add openalex-mcp-server --env OPENALEX_CLAMP_PER_PAGE=<OPENALEX_CLAMP_PER_PAGE> --env OPENALEX_FILTER_STRING_INPUT=<OPENALEX_FILTER_STRING_INPUT> --env OPENALEX_API_KEY=<OPENALEX_API_KEY> --env OPENALEX_MAILTO=<OPENALEX_MAILTO> --env OPENALEX_BASE_URL=<OPENALEX_BASE_URL> -- npx -y @cyanheads/openalex-mcp-server
```
Replace <…> with your own values. 6 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "openalex-mcp-server": {
            "url": "https://openalex.caseyjhand.com/mcp"
        }
    }
}
```
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "openalex-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "@cyanheads/openalex-mcp-server"
            ],
            "env": {
                "OPENALEX_CLAMP_PER_PAGE": "<OPENALEX_CLAMP_PER_PAGE>",
                "OPENALEX_FILTER_STRING_INPUT": "<OPENALEX_FILTER_STRING_INPUT>",
                "OPENALEX_API_KEY": "<OPENALEX_API_KEY>",
                "OPENALEX_MAILTO": "<OPENALEX_MAILTO>",
                "OPENALEX_BASE_URL": "<OPENALEX_BASE_URL>"
            }
        }
    }
}
```
Replace <…> with your own values. 6 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "openalex-mcp-server": {
            "type": "http",
            "url": "https://openalex.caseyjhand.com/mcp"
        }
    }
}
```
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "openalex-mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@cyanheads/openalex-mcp-server"
            ],
            "env": {
                "OPENALEX_CLAMP_PER_PAGE": "<OPENALEX_CLAMP_PER_PAGE>",
                "OPENALEX_FILTER_STRING_INPUT": "<OPENALEX_FILTER_STRING_INPUT>",
                "OPENALEX_API_KEY": "<OPENALEX_API_KEY>",
                "OPENALEX_MAILTO": "<OPENALEX_MAILTO>",
                "OPENALEX_BASE_URL": "<OPENALEX_BASE_URL>"
            }
        }
    }
}
```
Replace <…> with your own values. 6 more environment variables are in the server README

### Gemini CLI

1. **Platform CLI: remote server**
```bash
gemini mcp add -t http openalex-mcp-server https://openalex.caseyjhand.com/mcp
```

2. **Platform CLI**
```bash
gemini mcp add -e OPENALEX_CLAMP_PER_PAGE=<OPENALEX_CLAMP_PER_PAGE> -e OPENALEX_FILTER_STRING_INPUT=<OPENALEX_FILTER_STRING_INPUT> -e OPENALEX_API_KEY=<OPENALEX_API_KEY> -e OPENALEX_MAILTO=<OPENALEX_MAILTO> -e OPENALEX_BASE_URL=<OPENALEX_BASE_URL> openalex-mcp-server npx -y @cyanheads/openalex-mcp-server
```
Replace <…> with your own values. 6 more environment variables are in the server README

## When to use it
- find recent open-access papers on a topic
- map a DOI or ORCID to its canonical OpenAlex ID
- see which works cite a given paper
- aggregate publication counts by institution
- run a literature review on an unfamiliar field

## Example prompts
- Search openalex-mcp-server for papers on graph neural networks with open access and a recent year filter
- Resolve the DOI `10.1038/nature14539` to its OpenAlex ID and show what cites it
- Group publications by institution for the topic graph neural networks

## Similar
- [Zotero MCP](https://affpapa.org/en/nevibecode/mcp/zotero-mcp.md) — MCP server · ★ 5548
- [arxiv-mcp-server](https://affpapa.org/en/nevibecode/mcp/arxiv-mcp-server.md) — MCP server · ★ 3231
- [PaperBanana](https://affpapa.org/en/nevibecode/mcp/paperbanana.md) — MCP server · ★ 2417
- [MATLAB MCP Server](https://affpapa.org/en/nevibecode/mcp/matlab-mcp-server.md) — MCP server · ★ 1716
- [Hex Research](https://affpapa.org/en/nevibecode/mcp/hex-research.md) — MCP server · ★ 583
- [DocsAgent — Zotero, Obsidian & Apple Notes MCP Server](https://affpapa.org/en/nevibecode/mcp/docsagent-zotero-obsidian-apple-notes-mcp-server.md) — MCP server · ★ 578

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
