Wraps the Semantic Scholar API to give Claude direct access to academic paper search, citation networks, and author data. You can search papers by relevance or title, pull citation graphs, get author profiles, and batch-fetch paper details. The server handles rate limiting automatically and works with or without an API key. Includes 16 MCP tools covering everything from paper recommendations to reference tracking. Good for research workflows, literature reviews, or building academic data pipelines where you need programmatic access to scholarly publications through Claude's interface.
A FastMCP server implementation for the Semantic Scholar API, providing comprehensive access to academic paper data, author information, and citation networks.
Looking for Claude Code skills? Check out semantic-scholar-skills — the next-generation toolkit that bundles this MCP server with ready-to-use Claude Code skills (
/expand-references,/trace-citations,/paper-triage) and a Python workflow engine.
The project has been refactored into a modular structure for better maintainability:
semantic-scholar-server/
├── semantic_scholar/ # Main package
│ ├── __init__.py # Package initialization
│ ├── server.py # Server setup and main functionality
│ ├── mcp.py # Centralized FastMCP instance definition
│ ├── config.py # Configuration classes
│ ├── utils/ # Utility modules
│ │ ├── __init__.py
│ │ ├── errors.py # Error handling
│ │ └── http.py # HTTP client and rate limiting
│ ├── api/ # API endpoints
│ ├── __init__.py
│ ├── papers.py # Paper-related endpoints
│ ├── authors.py # Author-related endpoints
│ └── recommendations.py # Recommendation endpoints
├── run.py # Entry point script
This structure:
Paper Search & Discovery
Citation Analysis
Author Information
Advanced Features
pip install semantic-scholar-fastmcp
Or run directly with uvx:
uvx semantic-scholar-fastmcp
For any MCP client that supports uvx:
{
"mcpServers": {
"semantic-scholar": {
"command": "uvx",
"args": ["semantic-scholar-fastmcp"],
"env": {
"SEMANTIC_SCHOLAR_API_KEY": "your-api-key-here"
}
}
}
}
To install Semantic Scholar MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install semantic-scholar-fastmcp-mcp-server --client claude
git clone https://github.com/YUZongmin/semantic-scholar-fastmcp-mcp-server.git
cd semantic-scholar-fastmcp-mcp-server
pip install -e ".[dev]"
semantic-scholar-mcp-server
To get higher rate limits and better performance:
env sectionIf no API key is provided, the server will use unauthenticated access with lower rate limits.
See CONTRIBUTING.md.
SEMANTIC_SCHOLAR_API_KEY: Your Semantic Scholar API key (optional)
This repository includes a small HTTP bridge (semantic_scholar.bridge) that
exposes a minimal REST API for common workflows.
Default listening port: 8000.
Bridge configuration via environment variables:
SEMANTIC_SCHOLAR_ENABLE_HTTP_BRIDGE (default: 1) — set to 0 to disableSEMANTIC_SCHOLAR_HTTP_BRIDGE_HOST (default: 0.0.0.0)SEMANTIC_SCHOLAR_HTTP_BRIDGE_PORT (default: 8000)Available endpoints:
GET /v1/paper/search?q=... — paper search (params: fields, offset, limit)GET /v1/paper/{paper_id} — paper details (param: fields)POST /v1/paper/batch — batch paper details (JSON: { "ids": [ ... ] })GET /v1/author/search?q=... — author search (params: fields, offset, limit)GET /v1/author/{author_id} — author details (param: fields)POST /v1/author/batch — batch author details (JSON: { "ids": [ ... ] })GET /v1/recommendations?paper_id=... — recommendations for a paperThe bridge reuses the package's HTTP utilities (semantic_scholar.utils.http)
so rate limits, API key handling and connection pooling remain consistent with
the MCP tools.
Example:
curl 'http://localhost:8000/v1/paper/search?q=machine+learning&limit=5'
The server automatically adjusts to the appropriate rate limits:
With API Key:
Without API Key:
Note: Rate limits are subject to change. See Semantic Scholar API for the latest information.
This project uses the Semantic Scholar Academic Graph API, provided by the Allen Institute for AI (AI2). Please review the API License Agreement before use.
The server currently exposes 16 MCP tools.
Note: All tools are aligned with the official Semantic Scholar API documentation. Please refer to the official documentation for detailed field specifications and the latest updates.
paper_relevance_search: Search for papers using relevance ranking
paper_bulk_search: Bulk paper search with sorting options
paper_title_search: Find papers by exact title match
paper_details: Get comprehensive details about a specific paper
paper_batch_details: Efficiently retrieve details for multiple papers
paper_authors: Get the authors associated with a specific paper
paper_autocomplete: Get paper title suggestions for a partial query
snippet_search: Search within paper snippets and excerpts
paper_citations: Get papers that cite a specific paper
paper_references: Get papers referenced by a specific paper
author_search: Search for authors by name
author_details: Get detailed information about an author
author_papers: Get papers written by an author
author_batch_details: Get details for multiple authors
get_paper_recommendations_single: Get recommendations based on a single paper
get_paper_recommendations_multi: Get recommendations based on multiple papers
results = await paper_relevance_search(
context,
query="machine learning",
year="2020-2024",
min_citation_count=50,
fields=["title", "abstract", "authors"]
)
# Single paper recommendation
recommendations = await get_paper_recommendations_single(
context,
paper_id="649def34f8be52c8b66281af98ae884c09aef38b",
fields="title,authors,year"
)
# Multi-paper recommendation
recommendations = await get_paper_recommendations_multi(
context,
positive_paper_ids=["649def34f8be52c8b66281af98ae884c09aef38b", "ARXIV:2106.15928"],
negative_paper_ids=["ArXiv:1805.02262"],
fields="title,abstract,authors"
)
# Get details for multiple papers
papers = await paper_batch_details(
context,
paper_ids=["649def34f8be52c8b66281af98ae884c09aef38b", "ARXIV:2106.15928"],
fields="title,authors,year,citations"
)
# Get details for multiple authors
authors = await author_batch_details(
context,
author_ids=["1741101", "1780531"],
fields="name,hIndex,citationCount,paperCount"
)
The server provides standardized error responses:
{
"error": {
"type": "error_type", # rate_limit, api_error, validation, timeout
"message": "Error description",
"details": {
# Additional context
"authenticated": true/false # Indicates if request was authenticated
}
}
}
com.mcparmory/google-sheets
domdomegg/google-sheets-mcp
henilcalagiya/google-sheets-mcp
cct15/war-dashboard-data
moooonad/mcp-google-sheets-full
io.github.br0ski777/csv-to-json