Open source · Model Context Protocol

Semantic Scholar MCP Server

An open-source MCP server that brings the Semantic Scholar Academic Graph API to any Model Context Protocol client — 14 tools for paper search, citation-graph traversal, author profiles, full-text snippets, and recommendations.

CI status PyPI version Python 3.10+ MCP compatible DOI License: MIT

What it is

Semantic Scholar MCP Server is a Python package that exposes the Semantic Scholar Academic Graph and Recommendations APIs as Model Context Protocol tools. Connected to an MCP client — such as Claude Desktop, Claude Code, Cursor, or Cline — it lets the assistant search the literature, traverse citation graphs, look up authors, fetch recommendations, search within paper full text, and export citations, all over the standard MCP interface.

Independent project. This is an unofficial, community-built client. It is not affiliated with, endorsed by, or sponsored by the Allen Institute for AI or Semantic Scholar. It calls the public Semantic Scholar API and is subject to that service's terms and availability.

Install

Pick whichever fits your client. No build step.

# Run directly from PyPI (recommended)
uvx s2-mcp-server
# Or install with pip
pip install s2-mcp-server
# Or run the container image
docker run -i ghcr.io/smaniches/semantic-scholar-mcp:latest

Works with no API key on Semantic Scholar's public tier, which is rate-limited (around one request per second). A free API key raises the limit substantially — provide it via the SEMANTIC_SCHOLAR_API_KEY environment variable. See the README for client-by-client setup.

Tools

Fourteen tools, grouped by what they do.

Search & match

  • semantic_scholar_search_papers — query with filters
  • semantic_scholar_bulk_search — sorted, cursor-paged
  • semantic_scholar_match_paper — best title match
  • semantic_scholar_snippet_search — full-text snippets

Papers & citations

  • semantic_scholar_get_paper — details, citations, references
  • semantic_scholar_bulk_papers — up to 500 at once
  • semantic_scholar_export_citation — BibTeX

Authors

  • semantic_scholar_search_authors — by name
  • semantic_scholar_get_author — profile & papers
  • semantic_scholar_paper_authors — a paper's authors
  • semantic_scholar_author_batch — up to 1,000 at once

Recommendations & status

  • semantic_scholar_recommendations — from a seed paper
  • semantic_scholar_multi_recommend — positive/negative seeds
  • semantic_scholar_status — health & rate-tier check

Engineering

Verifiable facts, not adjectives.

  • Tested across Python 3.10–3.13 on Linux, macOS, and Windows — unit, property-based, load, and live API-compatibility suites, with a coverage gate in CI.
  • Static analysis on every change: ruff, mypy (strict), and CodeQL.
  • Resilient API client: per-tier rate limiting, exponential-backoff retries that honour Retry-After, and typed, actionable errors.
  • Hardened supply chain: GitHub Actions pinned to commit SHAs; SLSA build-provenance attestations on the wheel, sdist, and container image; a CycloneDX SBOM published with each release.
  • Distributed on PyPI (with PEP 740 attestations) and as a container image on GHCR. MIT licensed.

Status & honest limitations

This is a Beta (v1.x) project under active maintenance; the tool API is stable across the v1 series. Known boundaries are documented in the open rather than glossed over:

  • Paper IDs are validated against injection-relevant characters but are not yet fully URL-encoded — a constrained, documented gap planned for a future release.
  • The per-request api_key tool parameter is deprecated (use the environment variable); removal is planned for v2.0.0.

Full detail: Known Limitations · Security policy