Semantic Scholar MCP server: 14 typed tools for paper search, citation graphs, author profiles, recommendations, PyPI/Docker.
Semantic Scholar MCP Server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**A 14-tool Semantic Scholar MCP server for academic research workflows.** Direct access to 200M+ papers from Semantic Scholar — paper search, citation graph traversal, author profiles, and recommendations — from any Model Context Protocol client (e.g., Claude Desktop, Claude Code, Cursor, Cline, Continue, and others).
Every release ships **verifiable supply-chain provenance**: Sigstore-signed SLSA build-provenance attestations on the wheel, sdist, and container image; PEP 740 attestations on the PyPI upload; and a CycloneDX SBOM — so you can prove the artifact you installed was built from this repo. See Provenance & supply chain.
> Author: **Santiago Maniches** · ORCID 0009-0005-6480-1987 · TOPOLOGICA LLC
**Research authorship:** Santiago Maniches independently directs and maintains this project and is the sole scientific author of its research contributions. AI-assisted tools have supported coding, documentation, and internal review; they do not constitute scientific coauthors or independent validation. Semantic Scholar content and reused software and methods are attributed to their respective sources.
---
Quick start
No API key is needed to start. Set SEMANTIC_SCHOLAR_API_KEY to use your
assigned Semantic Scholar quota and avoid the shared unauthenticated pool.
Semantic Scholar currently assigns introductory API keys a 1 request/second
limit across all endpoints. Claude Desktop, Docker, pip, and remote
(Streamable HTTP) setups are in Installation.
---
Provenance & supply chain
A research tool is only as trustworthy as the chain from its source to the
binary you run. Every release of this server ships cryptographically
verifiable supply-chain evidence, all generated in CI from the tagged commit:
| Guarantee | What it proves | Where it is produced |
|---|---|---|
| **SLSA build provenance** (wheel + sdist) | the published distributions were built by this repo's publish.yml from the released tag, not hand-uploaded | publish.yml — actions/attest-build-provenance (build job) |
| **SLSA build provenance** (container image) | the ghcr.io image digest was built by this repo's docker.yml | docker.yml — actions/attest-build-provenance, push-to-registry (lines 141–147) |
| **PEP 740 attestations** | the PyPI upload itself carries Sigstore-backed attestations under Trusted Publishing | publish.yml — attestations: true (publish-pypi job) |
| **CycloneDX SBOM** | a machine-readable bill of materials, generated in an unprivileged job from the exact wheel's statically resolved dependency metadata (wheels only, none of it executed), SHA-256-bound to that wheel, then attested against the wheel alone | publish.yml — cyclonedx-py + scripts/release_sbom.py (sbom job) + actions/attest-sbom (attest-sbom job) |
| **SHA-pinned Actions** | every CI action is pinned to a commit SHA, so the release pipeline itself cannot silently change | all jobs in .github/workflows/ (e.g. publish.yml, docker.yml) |
Verify the wheel and the container image against their attestations with the
GitHub CLI:
The full supply-chain posture, including the known-limitations list, is in
SECURITY.md. This is **release-time** provenance (proving how
the artifact was built); the server does not currently attach a per-response
receipt to individual API results.
---
How it compares
There is no public Semantic Scholar MCP standard, so the most useful
comparison is against the obvious alternative: calling the
Semantic Scholar REST API yourself from an
agent. Everything in the right-hand column is plumbing this server already owns
and the caller would otherwise reimplement.
| | This server | Raw S2 REST API from an agent |
|---|---|---|
| Tool surface | 14 typed MCP tools (search, retrieval, recommendations, status) | caller composes raw HTTP requests |
| Citation graph | both directions (citations and references) in get_paper | manual paging over two endpoints |
| Bulk operations | papers (≤500) and authors (≤1000) in one call | caller batches and paginates |
| Full-text snippet search | snippet_search with surrounding context | separate endpoint, caller-assembled |
| Paper-ID resolution | seven formats — Semantic Scholar ID, DOI, ArXiv, PubMed, Corpus ID, ACL, URL — validated pre-flight (validators.py) | caller normalizes and validates IDs |
| Rate limiting | client-side limiter with a conservative S2-compatible authenticated default and configurable assigned quota (client.py) | caller throttles by hand |
| Retry / backoff | bounded, jittered retry on 429/502/503/timeout, honors Retry-After (client.py) | caller implements retry |