scholar-search-mcp
An MCP server for academic paper search that integrates with AI assistants (e.g., Claude Code, Cursor), enabling them to search and retrieve academic paper metadata.
README
Scholar Search MCP
An MCP server for academic literature workflows in Claude, Cursor, and other MCP clients.
It combines Semantic Scholar + arXiv into one unified toolset, with fast parallel search, normalized outputs, source-aware deduplication, and practical research utilities (citations, references, author graph, recommendations, and arXiv source download).
Table of Contents
- Why this project
- Demo videos
- Install
- Quick setup (Claude Desktop / Cursor)
- Environment variables
- Tool list
- Testing with MCP Inspector
- Contributing
- License
Why this project
Most paper tools force you to choose one source or one API style. scholar-search-mcp provides one MCP layer for literature search and graph retrieval:
- One MCP server, multiple scholarly sources
- Free-first defaults (
arXivworks without keys) - LLM-friendly outputs for downstream reasoning and agent workflows
- Practical research actions, not only search
- Unified search:
search_papersruns Semantic Scholar + arXiv in parallel and deduplicates by normalized title. - Research graph tools: details, citations, references, author profile/papers, and recommendations.
- Batch + source workflows: fetch up to 500 papers, and download/extract arXiv LaTeX sources.
- Operational controls: built-in caching plus env-based source toggles (enable/disable channels).
- Source strategy: built-in Semantic Scholar + arXiv, free-first by default (
arXivkey-free), optional API key for higher Semantic Scholar limits.
Demo videos
Agent writes a survey paper with Scholar Search MCP.
<a href="https://youtu.be/C81rVeznoRY"><img src="./static/scholar_search_demo.jpg" alt="Agent uses Scholar Search MCP to write a survey paper" width="640" style="max-width: 100%; height: auto;"></a>
<br>
Install
pip install scholar-search-mcp
Requires Python 3.10+.
Quick setup (Claude Desktop / Cursor)
Use the same server command in both clients:
{
"mcpServers": {
"scholar-search": {
"command": "python",
"args": ["-m", "scholar_search_mcp"],
"env": {
"SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR": "true",
"SCHOLAR_SEARCH_ENABLE_ARXIV": "true"
}
}
}
}
SEMANTIC_SCHOLAR_API_KEY is optional. Add it only if you want higher Semantic Scholar rate limits:
{
"mcpServers": {
"scholar-search": {
"command": "python",
"args": ["-m", "scholar_search_mcp"],
"env": {
"SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR": "true",
"SCHOLAR_SEARCH_ENABLE_ARXIV": "true",
"SEMANTIC_SCHOLAR_API_KEY": "your-key"
}
}
}
}
Difference:
- Claude Desktop: edit local config file directly.
- Cursor: add an MCP server in Cursor settings UI (or corresponding settings JSON).
Claude Desktop config file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Environment variables
| Variable | Description |
|---|---|
SEMANTIC_SCHOLAR_API_KEY |
Optional. Increases Semantic Scholar rate limits. |
SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR |
true/false, default true. |
SCHOLAR_SEARCH_ENABLE_ARXIV |
true/false, default true. |
SCHOLAR_SEARCH_CACHE_DIR |
Optional cache directory path. |
SCHOLAR_SEARCH_CACHE_TTL_SECONDS |
Cache TTL in seconds, default 86400. |
SCHOLAR_ARXIV_SOURCE_DIR |
Default parent directory for extracted arXiv sources. |
Example (arXiv only):
{
"SCHOLAR_SEARCH_ENABLE_SEMANTIC_SCHOLAR": "false",
"SCHOLAR_SEARCH_ENABLE_ARXIV": "true"
}
Tool list
| Tool | Purpose |
|---|---|
search_papers |
Search papers with optional limit, fields, year, venue. |
get_paper_details |
Get one paper by DOI, arXiv ID, S2 ID, or URL. |
get_paper_citations |
Get papers that cite a given paper. |
get_paper_references |
Get references of a given paper. |
get_author_info |
Get an author profile by ID. |
get_author_papers |
Get papers by a given author. |
get_paper_recommendations |
Get similar paper recommendations. |
batch_get_papers |
Batch fetch paper details (up to 500 IDs). |
download_arxiv_source |
Download and extract arXiv source bundle (tar.gz). |
Testing with MCP Inspector
npm install -g @modelcontextprotocol/inspector
mcp-inspector python -m scholar_search_mcp
Contributing
Issues and PRs are welcome: fork repo, create branch, add validation/tests, and open a PR with clear before/after behavior.
License
MIT
References
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.