# Semantic Scholar MCP Server

Connects AI assistants to 200M+ academic papers on Semantic Scholar. It searches literature, traces citation networks, and pulls author details directly inside your coding client.

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

## What it does

This server exposes 14 tools to interact with the Semantic Scholar database. Assistants query literature, fetch recommendations, and map citation networks through `get_paper`. It pulls batches up to 500 papers and 1000 authors in one request. Full-text matches arrive via `snippet_search`.

The package inspects document identifiers before sending requests. It accepts seven common formats, such as DOI, ArXiv, PubMed IDs, Corpus IDs, ACL entries, and direct URLs. Every release includes SLSA provenance records alongside CycloneDX software bills of materials. Running it requires Python 3.10+.

Unauthenticated calls share a public pool that easily hits rate limits. Providing `SEMANTIC_SCHOLAR_API_KEY` secures an individual allocation. Keep in mind that introductory keys allow just 1 request per second across all endpoints.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `SEMANTIC_SCHOLAR_API_KEY`, `SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> --env SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS=<SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS> --transport stdio semantic-scholar-mcp-server -- uvx s2-mcp-server
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from s2-mcp-server <command>

### Codex

**Platform CLI**
```bash
codex mcp add semantic-scholar-mcp-server --env SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> --env SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS=<SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS> -- uvx s2-mcp-server
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from s2-mcp-server <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "semantic-scholar-mcp-server": {
            "command": "uvx",
            "args": [
                "s2-mcp-server"
            ],
            "env": {
                "SEMANTIC_SCHOLAR_API_KEY": "<SEMANTIC_SCHOLAR_API_KEY>",
                "SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS": "<SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from s2-mcp-server <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "semantic-scholar-mcp-server": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "s2-mcp-server"
            ],
            "env": {
                "SEMANTIC_SCHOLAR_API_KEY": "<SEMANTIC_SCHOLAR_API_KEY>",
                "SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS": "<SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from s2-mcp-server <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SEMANTIC_SCHOLAR_API_KEY=<SEMANTIC_SCHOLAR_API_KEY> -e SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS=<SEMANTIC_SCHOLAR_MIN_SECONDS_BETWEEN_REQUESTS> semantic-scholar-mcp-server uvx s2-mcp-server
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from s2-mcp-server <command>

## When to use it
- retrieve research papers and preprints using DOI, ArXiv, or PubMed IDs
- traverse reference lists and incoming citations in both directions
- fetch batch metadata for up to 500 papers or 1000 authors at once
- locate in-text paper mentions and surrounding context via `snippet_search`

## Example prompts
- Search Semantic Scholar for recent papers on transformer distillation and list their DOIs.
- Get citations and author details for ArXiv paper `2301.00001` using `get_paper`.
- Use `snippet_search` to find mentions of quantization techniques across recent deep learning publications.

## 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
