Content
# PaperMCP — All-in-One Academic Paper MCP Server
A unified [Model Context Protocol](https://modelcontextprotocol.io/) server that combines **6 academic paper sources** into a single server, giving AI assistants comprehensive access to research papers.
## 📚 Supported Sources
| Source | Description | Tools |
|--------|-------------|-------|
| **ArXiv** | Search, download & read arXiv papers | 4 |
| **HuggingFace Daily Papers** | Trending ML papers from HuggingFace | 1 |
| **Google Scholar** | Search papers & get author info | 3 |
| **OpenReview** | Conference papers (ICLR, NeurIPS, ICML) | 4 |
| **DBLP** | CS bibliography, BibTeX, fuzzy search | 5 |
| **PapersWithCode** | Papers + code repos + benchmarks | 11 |
| **Unified** | Cross-source search, download, read, list | 4 |
| **Total** | | **32 tools** |
## 🚀 Quick Start
### Install
```bash
# From source
cd PaperMCP
pip install -e .
# Or with uv
uv pip install -e .
```
### Run
```bash
paper-mcp
# or
python -m paper_mcp
```
### MCP Client Configuration
**Claude Desktop / Cursor / Claude Code:**
```json
{
"mcpServers": {
"paper-mcp": {
"command": "paper-mcp",
"env": {
"PAPER_MCP_STORAGE": "~/.paper-mcp/papers"
}
}
}
}
```
> **Have an OpenReview account?** Add your credentials to unlock OpenReview tools:
> ```json
> "env": {
> "PAPER_MCP_STORAGE": "~/.paper-mcp/papers",
> "OPENREVIEW_USERNAME": "your_email@example.com",
> "OPENREVIEW_PASSWORD": "your_password"
> }
> ```
**VS Code (`.vscode/mcp.json` in your workspace):**
```json
{
"servers": {
"paper-mcp": {
"type": "stdio",
"command": "paper-mcp",
"env": {
"PAPER_MCP_STORAGE": "~/.paper-mcp/papers"
}
}
}
}
```
**Claude Code (quick):**
```bash
claude mcp add paper-mcp -- paper-mcp
```
## 🛠️ All Tools
### 🔗 Unified Tools (cross-source)
These 4 high-level tools fan out to **all sources in parallel** and merge results:
| Tool | Description |
|------|-------------|
| `search` | Search across all/selected sources at once. Filter with `sources="arxiv,dblp,scholar"` |
| `download` | Download a paper by ID or URL. Auto-detects source (ArXiv, OpenReview, any PDF URL) |
| `read` | Read a paper's full text. Auto-detects source from ID/URL format |
| `list_papers` | List locally downloaded papers + today's HuggingFace trending papers |
**`search` examples:**
```
search("transformer architecture") # all sources
search("attention mechanism", sources="arxiv,dblp") # specific sources
search("diffusion models", sources="scholar,pwc", max_results=10)
```
**`download` / `read` auto-detection:**
```
download("2401.12345") # ArXiv ID
download("https://arxiv.org/abs/2401.12345") # ArXiv URL
download("https://openreview.net/pdf?id=abc123") # OpenReview URL
read("2401.12345") # reads downloaded ArXiv paper
read("https://example.com/paper.pdf") # reads any PDF URL
```
---
### ArXiv
| Tool | Description |
|------|-------------|
| `arxiv_search` | Search papers with date ranges and category filters |
| `arxiv_download` | Download paper PDF by arXiv ID |
| `arxiv_list` | List all locally downloaded papers |
| `arxiv_read` | Read full text of a downloaded paper |
### HuggingFace Daily Papers
| Tool | Description |
|------|-------------|
| `hf_daily_papers` | Get trending papers for a date (defaults to today) |
### Google Scholar
| Tool | Description |
|------|-------------|
| `scholar_search` | Search papers by keywords |
| `scholar_advanced_search` | Search with author & year filters |
| `scholar_author_info` | Get author profile (affiliation, citations, top pubs) |
### OpenReview
| Tool | Description |
|------|-------------|
| `openreview_search` | Search papers across conferences by keywords |
| `openreview_conference_papers` | Get papers from a specific venue/year |
| `openreview_user_papers` | Get papers by user email |
| `openreview_search_user` | Find user profile by email |
### DBLP
| Tool | Description |
|------|-------------|
| `dblp_search` | Search with boolean queries (AND/OR), year & venue filters |
| `dblp_fuzzy_title_search` | Fuzzy title matching with similarity threshold |
| `dblp_author_publications` | Get author's publications with fuzzy name matching |
| `dblp_venue_info` | Get venue information (journal/conference) |
| `dblp_bibtex` | Fetch BibTeX entry by DBLP key |
### PapersWithCode
| Tool | Description |
|------|-------------|
| `pwc_search_papers` | Search by title, abstract, or ArXiv ID |
| `pwc_get_paper` | Get paper metadata by ID |
| `pwc_paper_repositories` | List code repos for a paper |
| `pwc_paper_datasets` | List datasets for a paper |
| `pwc_paper_methods` | List methods in a paper |
| `pwc_paper_results` | List benchmark results |
| `pwc_search_authors` | Search authors by name |
| `pwc_author_papers` | List papers by author |
| `pwc_conferences` | List/search conferences |
| `pwc_conference_papers` | Papers for a conference proceeding |
| `pwc_read_paper` | Read paper from PDF/HTML URL |
## ⚙️ Environment Variables
| Variable | Description | Required |
|----------|-------------|----------|
| `PAPER_MCP_STORAGE` | Local path for downloaded papers | No (default: `~/.paper-mcp/papers`) |
| `OPENREVIEW_USERNAME` | OpenReview email for API access | No (enables OpenReview tools) |
| `OPENREVIEW_PASSWORD` | OpenReview password | No (enables OpenReview tools) |
| `OPENREVIEW_BASE_URL` | OpenReview API URL | No (default: `https://api2.openreview.net`) |
## 📦 Dependencies
- Python 3.11+
- `mcp` — Model Context Protocol SDK
- `arxiv` — ArXiv API client
- `scholarly` — Google Scholar
- `openreview-py` — OpenReview API
- `httpx` / `requests` — HTTP clients
- `beautifulsoup4` — Web scraping
- `PyPDF2` / `pymupdf4llm` — PDF extraction
## 📝 Example Usage
```
> Search arXiv for recent transformer papers in AI
> Get today's trending papers from HuggingFace
> Find papers by "Yann LeCun" on Google Scholar
> Search ICLR 2024 papers about "token merging" on OpenReview
> Get BibTeX for "conf/nips/VaswaniSPUJGKP17" from DBLP
> Find code repositories for attention papers on PapersWithCode
```
## Credits
Inspired by and learned from these excellent MCP servers:
- [blazickjp/arxiv-mcp-server](https://github.com/blazickjp/arxiv-mcp-server)
- [huangxinping/huggingface-daily-paper-mcp](https://github.com/huangxinping/huggingface-daily-paper-mcp)
- [JackKuo666/Google-Scholar-MCP-Server](https://github.com/JackKuo666/Google-Scholar-MCP-Server)
- [anyakors/openreview-mcp-server](https://github.com/anyakors/openreview-mcp-server)
- [szeider/mcp-dblp](https://github.com/szeider/mcp-dblp)
- [hbg/mcp-paperswithcode](https://github.com/hbg/mcp-paperswithcode)
## License
MIT
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
Fetch
Retrieve and process content from web pages by converting HTML into markdown format.
Agent-Reach
Give your AI agent eyes to see the entire internet. Read & search Twitter,...
Context 7
Context7 MCP provides up-to-date code documentation for any prompt.
context7-mcp
Context7 MCP Server provides natural language access to documentation for...
mempalace
The highest-scoring AI memory system ever benchmarked. And it's free.