Scholar MCP Server
Unified MCP server for scientific literature search and extraction, integrating databases like Scopus, OpenAlex, Semantic Scholar, and Unpaywall to enable AI agents to discover papers, track citations, and analyze content.
README
Scholar MCP Server
A Model Context Protocol (MCP) server providing structured access to scientific literature databases. It serves as a unified interface for Scopus, OpenAlex, Semantic Scholar, and Unpaywall, enabling AI agents to perform systematic paper discovery, author disambiguation, citation lineage tracking, and multimodal Content extraction.
Core Capabilities
-
Unified Literature Search
- Semantic Scholar Integration — High-relevance search and detailed metadata, including AI-generated TLDRs (requires API key).
- Scopus Integration — Targeted metadata retrieval via advanced Boolean syntax (requires API key).
- OpenAlex Integration — Broad search across 250M+ works with abstract reconstruction.
- Unpaywall Resolution — DOI-to-PDF cross-referencing across global Open Access repositories.
- Sci-Hub Fallback (⚠️ Use with Caution) — Automatic mirror resolution and parsing for paywall bypassing.
-
Book Search & Extraction
- Google Books & Open Library — Integrated search for book metadata, editions, and descriptions without API keys.
- Library Genesis (Libgen) — Search and extract full text from books directly using PyMuPDF. Features smart caching and token-saving strategies (TOC reading, targeted keyword searching, and page range extraction).
-
Author Identification & Metrics
- Instant author disambiguation and ID resolution via OpenAlex autocomplete.
- Comprehensive profiles: H-index, i10-index, institutional affiliation history, and ORCID linkage.
- Precision metrics from Elsevier (Scopus) for verified publication counts.
-
Citation Lineage Tracking
- Map research evolution through forward citations (citing works) and backward references (cited works).
-
Structured & Multimodal Extraction
- Text Extraction — Layout-aware parsing of OA PDFs using PyMuPDF.
- Vision Rendering — Page-by-page PNG rendering for LLM-based analysis of charts, tables, and equations.
- HTML Fallbacks — Extraction from web-based research resources via BeautifulSoup.
-
Topic Mapping & Field Analysis
- Concepts and domain hierarchy discovery to map research landscapes.
- Batch metadata retrieval for high-throughput literature processing (up to 50 DOIs/request).
-
Access Management & Fallbacks
- Automated detection of closed-access content with human-in-the-loop instructions for manual uploads.
Architecture
graph TD
A[LLM Agent] -->|MCP Protocol| B(Scholar MCP Server)
B --> C{Database Router}
C -->|Primary| D[Scopus API]
C -->|Fallback| E[OpenAlex API]
C -->|DOI Resolver| F[Unpaywall API]
C -->|Citations| P[CrossRef API]
D --> G{Access Check}
E --> G
F --> G
P --> G
G -->|Open Access| H[PDF Buffer Download]
G -->|Closed Access| I[Human-in-the-Loop Prompt]
H --> J[PyMuPDF Text Extractor]
H --> K[PyMuPDF Vision Renderer]
J --> L[Return Context to LLM]
K --> L
I --> L
B --> M{Author Router}
M -->|Profile| N[OpenAlex Authors API]
M -->|Metrics| O[Scopus Author API]
N --> L
O --> L
Installation
Quick Start (via PyPI)
The fastest way to use the server is directly via PyPI:
pip install scholar-academic-mcp
Manual Setup (for Development)
# Clone the repository
git clone https://github.com/mlintangmz2765/Scholar-MCP.git
cd Scholar-MCP
# Setup virtual environment
python -m venv venv
.\venv\Scripts\activate # Windows
source venv/bin/activate # Unix
# Install in editable mode
pip install -e .
Environment Variables
| Variable | Required | Description |
|---|---|---|
SCOPUS_API_KEY |
Yes | Elsevier API key for Scopus search and author retrieval. |
S2_API_KEY |
No | Semantic Scholar API key for TLDRs and S2 graph access. |
SCIHUB_MIRRORS |
No | Comma-separated list of active Sci-Hub mirrors for PDF fallback. |
LIBGEN_MIRRORS |
No | Comma-separated list of active Library Genesis mirrors. |
SCOPUS_INST_TOKEN |
No | Institutional token for full abstract access via Scopus. |
CONTACT_EMAIL |
Yes | Email for OpenAlex/Unpaywall polite-pool API routing. |
Configuration
Claude Desktop / Cursor
Add the following to your configuration file (e.g., claude_desktop_config.json):
{
"mcpServers": {
"scholar-academic-mcp": {
"command": "scholar-academic-mcp",
"env": {
"SCOPUS_API_KEY": "your_scopus_api_key",
"S2_API_KEY": "your_s2_api_key",
"SCIHUB_MIRRORS": "https://sci-hub.ru,https://sci-hub.st",
"LIBGEN_MIRRORS": "https://libgen.la,http://libgen.li",
"SCOPUS_INST_TOKEN": "your_optional_inst_token",
"CONTACT_EMAIL": "your_email@domain.com"
}
}
}
}
Quick Start & Examples
Once configured, your AI agent can perform complex research workflows. Below are representative examples of tool inputs and structured outputs.
1. Literature Discovery (Scopus)
Prompt: "Find recent papers about 'Transformer architectures' published after 2022 using Scopus."
Tool Call: search_papers_tool(query="TITLE-ABS-KEY(Transformer architectures) AND PUBYEAR > 2022", limit=3)
Output:
Found 3 papers via Scopus:
- [SCOPUS_ID:85184...] Attention is All You Need? A Survey of Transformer Variants
Authors: Smith, J., Doe, A.
Date: 2024-01-15 | DOI: 10.1016/j.artint.2023.104012
2. Multimodal Content Analysis
Prompt: "I need to see the diagram for the neural network architecture on page 3 of this URL."
Tool Call: get_full_text_visual_tool(url="https://arxiv.org/pdf/1706.03762.pdf", max_pages=3)
Output:
[Text]"Successfully rendered 3 pages visually..."[Image](PNG data of page 1)[Image](PNG data of page 2)[Image](PNG data of page 3 - containing the architecture diagram)
3. Research Topic Mapping
Prompt: "Help me understand the subfields and domains related to 'Generative AI'."
Tool Call: search_topics_tool(query="Generative AI")
Output:
Found 1 topics for 'Generative AI':
- Artificial Intelligence
Hierarchy: Computer Science → Artificial Intelligence → Machine Learning
Works: 12,450 | Citations: 450,210
Description: A field of computer science that focuses on creating systems capable of generating...
Tools
The server registers 23 tools across 7 categories:
Paper Discovery
| Tool | Signature | Description |
|---|---|---|
search_papers_tool |
(query, limit=5, use_scopus=True, sort_by="relevance") |
Search papers via Scopus (Boolean syntax) or OpenAlex. Sort by cited_by_count or publication_year. |
search_papers_s2_tool |
(query, limit=5) |
Search papers via Semantic Scholar. Note: strictly rate-limited to 1 request/sec. |
get_paper_details_tool |
(paper_id) |
Fetch full metadata and abstract by Scopus ID, DOI, or OpenAlex ID (with automatic routing). |
get_paper_details_s2_tool |
(paper_id) |
Fetch full metadata from Semantic Scholar, including AI-generated TLDRs. Accepts S2 ID or DOI. |
search_titles_unpaywall_tool |
(query, is_oa=None) |
Search Unpaywall's database directly by title. Set is_oa=True for strictly OA results. |
get_related_works_tool |
(paper_id, limit=10) |
Find related/similar papers using OpenAlex's bibliographic coupling. |
Book Discovery & Extraction
| Tool | Signature | Description |
|---|---|---|
search_books_tool |
(query, limit=5, source="googlebooks") |
Search for book metadata via Google Books or Open Library. |
get_book_details_tool |
(book_id, source="googlebooks") |
Fetch complete book details, descriptions, and ISBNs. |
search_libgen_tool |
(query, limit=5) |
Search Library Genesis for books to retrieve their download MD5 hashes. |
interact_with_book_tool |
(md5, action, keyword, start_page, end_page) |
Smart extraction from Libgen. Actions: toc (Table of Contents), search (keywords), pages (range). |
Author Analytics
| Tool | Signature | Description |
|---|---|---|
autocomplete_authors_tool |
(name, limit=5) |
Rapidly disambiguate author names and resolve OpenAlex Author IDs. |
search_authors_tool |
(name, institution=None, limit=5) |
Detailed bibliometric profiles: H-index, i10-index, ORCID, and research concepts. |
search_author_by_orcid_tool |
(orcid) |
Look up an author directly by ORCID (raw or URL format). |
retrieve_author_works_tool |
(author_id, limit=15) |
Chronologically sorted publications for a given OpenAlex author. |
get_author_profile_scopus_tool |
(author_id) |
Fetch precise Scopus-sourced h-index, citation counts, and affiliation. |
get_author_profile_s2_tool |
(author_id) |
Fetch Semantic Scholar author profile (H-index, paper count, citations). |
Citation Tracking
| Tool | Signature | Description |
|---|---|---|
get_citations_tool |
(paper_id, direction="references") |
Retrieve forward citations or backward references via OpenAlex. |
Full-Text & PDF
| Tool | Signature | Description |
|---|---|---|
get_full_text_tool |
(url, start_page=None, end_page=None) |
Extract text from an OA PDF or HTML page. Supports page range selection. |
get_full_text_visual_tool |
(url, max_pages=3) |
Render PDF pages as images for Vision-capable LLMs. |
fetch_pdf_text_unpaywall_tool |
(doi) |
All-in-one: resolve DOI via Unpaywall → download PDF → extract text. |
get_scihub_link_tool |
(doi) |
Attempts to resolve a strict paywalled DOI to a free direct PDF link using Sci-Hub. |
fetch_pdf_text_scihub_tool |
(doi) |
All-in-one bypass: resolve DOI via Sci-Hub → download PDF → extract text. |
Citation & Writing
| Tool | Signature | Description |
|---|---|---|
get_bibtex_tool |
(doi) |
Generate a BibTeX entry for LaTeX via CrossRef content negotiation. |
format_citation_tool |
(doi, style="apa") |
Format citation in APA, IEEE, Chicago, Harvard, Vancouver, MLA, or Turabian. |
Open Access Resolution
| Tool | Signature | Description |
|---|---|---|
get_unpaywall_link_tool |
(doi) |
Resolve a DOI to all available OA locations via Unpaywall. |
Topic Mapping & Batch Analysis
| Tool | Signature | Description |
|---|---|---|
search_topics_tool |
(query, limit=10) |
Browse research topics/concepts. Returns fields, domains, and publication volume. |
batch_lookup_tool |
(dois: list[str]) |
Batch-fetch metadata for multiple DOIs in a single call (max 50). |
Technical Design & Reliability
Scholar MCP is engineered for precision and fault tolerance in high-stakes research environments, utilizing several layers of protection to ensure data integrity:
-
Strict Data Contracts (Pydantic)
- All upstream API responses are validated against Pydantic models before being returned to the agent.
- Ensures a predictable, type-safe interface even if upstream database schemas change.
-
Fault-Tolerant Networking (Tenacity)
- Integrated Exponential Backoff using
tenacityfor transient HTTP errors (429, 5xx). - Configurable rate-limit awareness for Elsevier and OpenAlex "polite pool" routing.
- Integrated Exponential Backoff using
-
Resource Safety & Concurrency
- Context-Managed Extractors: Automatic cleanup of PDF buffers and file descriptors.
- Isolated Concurrency: Batch operations utilize
asyncio.gatherwith localized exception handling to prevent session-wide failures.
-
System Observability
- Structured standard-error (
stderr) logging provides execution visibility during the tool lifecycle without interfering with the MCP JSON-RPC protocol.
- Structured standard-error (
-
Automated Verification
- Comprehensive test suite leveraging respx for deterministic API mocking, ensuring 100% coverage of edge cases without network externalites.
Project Structure
Scholar-MCP/
├── .github/workflows/ # GitHub Actions (CI & Releases)
├── scripts/ # Automation & Validation scripts
├── tests/ # Pytest suite (respx mocked)
├── server.py # FastMCP tool entry point
├── api.py # API Clients (Scopus, OpenAlex, Unpaywall, CrossRef)
├── extractor.py # PDF/HTML Extraction & Rendering
├── models.py # Pydantic Data Validation
├── server.json # MCP Registry Manifest
├── pyproject.toml # Python packaging configuration
├── requirements.txt # Dependencies
├── VERSION # Version tracking (v1.0.0)
├── LICENSE # MIT License
├── README.md # Documentation
├── .env.example # Template for API keys
└── .gitignore # Git exclusion rules
Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
HTTP 401 from Scopus |
Standard API keys lack META_ABS view access. |
Set SCOPUS_INST_TOKEN or use OpenAlex as fallback. |
HTTP 403 on PDF download |
Publisher anti-bot protection (Cloudflare, DataDome). | Provide the PDF manually to the LLM. |
| Empty Unpaywall results | Paper is behind a strict paywall with no OA copies. | Request the PDF from the author via ResearchGate or institutional access. |
SCOPUS_API_KEY is not set |
Missing environment variable. | Ensure .env is configured or pass via MCP client env block. |
Contributing
- Fork the repository.
- Create a feature branch (
git checkout -b feature/my-feature). - Commit your changes (
git commit -m 'feat: add new capability'). - Push to the branch (
git push origin feature/my-feature). - Open a Pull Request.
Please ensure all code follows PEP 8 conventions.
License
MIT License. See LICENSE for details.
Disclaimer: Automated querying of publisher APIs must comply with the respective Terms of Service of Elsevier, OpenAlex, and Unpaywall. Do not distribute API keys. Adhere to all applicable rate limits.
mcp-name: io.github.mlintangmz2765/scholar
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。