Your AI's research copilot.
Your AI Googles when you say "research." Paper Pilot actually searches real academic databases, downloads the PDFs, reads them cover to cover, and gives you evidence with citations.
uvx paper-pilotThat's it. Or install it:
pip install paper-pilotgraph LR
A[Prompt] --> B[Search 6 databases]
B --> C[Resolve OA PDFs]
C --> D[Download & read]
D --> E[Extract evidence]
E --> F[Render figures]
F --> G[Markdown report]
G --> H[Zotero sync]
One prompt. Six academic databases. Real PDFs. Real citations.
Research retrieval-augmented generation, deep-read the top papers, and compare the methods.
Your AI will:
- Search Semantic Scholar, OpenAlex, arXiv, Crossref, and Europe PMC
- Find the open-access PDFs, not just abstracts
- Download and read them cover to cover
- Extract evidence chunks with source attribution
- Render specific pages so it can see the figures and tables
- Write a structured Markdown report
- Save everything into your Zotero library
| ChatGPT Deep Research | Gemini Deep Research | Perplexity Pro | Paper Pilot | |
|---|---|---|---|---|
| Reads actual PDFs | Web summaries | Web summaries | Web summaries | Full text extraction |
| Figures and tables | Text only | Text only | Text only | Page rendering to PNG |
| Your library | Locked in their UI | Locked in Google | Locked in Perplexity | Syncs to Zotero |
| Sources | Generic web search | Generic web search | Web search | 6 academic databases |
| Cost | $200/month | $20/month | $20/month | Free, MIT licensed |
| Your data | Their cloud | Their cloud | Their cloud | Your machine |
| Open source | No | No | No | Yes |
Add to your claude_desktop_config.json:
{
"mcpServers": {
"paper-pilot": {
"command": "uv",
"args": ["--directory", "/path/to/paper-pilot", "run", "paper-pilot"],
"env": {
"OPENALEX_EMAIL": "you@example.com",
"UNPAYWALL_EMAIL": "you@example.com",
"ZOTERO_LOCAL": "true",
"SCIHUB_ENABLED": "false"
}
}
}
}claude mcp add --scope user paper-pilot -- uv --directory /path/to/paper-pilot run paper-pilotAdd to ~/.codex/config.toml:
[mcp_servers.paper_pilot]
command = "uv"
args = ["--directory", "/path/to/paper-pilot", "run", "paper-pilot"]
[mcp_servers.paper_pilot.env]
OPENALEX_EMAIL = "you@example.com"
ZOTERO_LOCAL = "true"paper-pilot --transport streamable-http --host 127.0.0.1 --port 8000| Tool | What it does |
|---|---|
research_topic |
Full pipeline: search, download, report, Zotero sync |
deep_read_topic |
Everything above + full-text extraction with evidence chunks |
render_pdf_pages |
PDF pages to PNG for figure and table inspection |
search_literature |
Fine-grained multi-source academic search |
find_similar_papers |
Related work expansion from a seed paper |
inspect_open_access_pdf |
OA availability check and PDF preview |
extract_local_pdf_text |
Text extraction from any local PDF |
search_scihub |
Search Sci-Hub by DOI, title, or keyword (opt-in) |
download_scihub_paper |
Download a paper via Sci-Hub by DOI (opt-in) |
search_libgen |
Supplementary shadow library search |
healthcheck |
Verify all connections are up |
Sci-Hub access is disabled by default. To opt in:
SCIHUB_ENABLED=trueOnce enabled, use search_scihub and download_scihub_paper directly, or pass include_scihub=True to research_topic / deep_read_topic for automatic fallback.
Disclaimer: Sci-Hub integration is provided strictly for educational and research purposes. Users are solely responsible for compliance with applicable laws and institutional policies.
PhD students that don't want to spend a week on a literature review. Point it at your thesis topic, get back a structured comparison with real citations and the PDFs already in Zotero.
Research labs that want to scan preprints weekly and auto-file them. Run research_topic on a schedule and keep your group library current.
AI builders that need their agents to work with real academic papers instead of web scraping snippets.
OPENALEX_EMAIL=you@example.com # Required for polite API access
UNPAYWALL_EMAIL=you@example.com # Required for OA resolution
SEMANTIC_SCHOLAR_API_KEY= # Optional, higher rate limits
# Local Zotero
ZOTERO_LOCAL=true
ZOTERO_LIBRARY_TYPE=user
# Web Zotero API (alternative)
ZOTERO_LIBRARY_ID=
ZOTERO_API_KEY=
# Sci-Hub (disabled by default)
SCIHUB_ENABLED=false
# Storage
PAPER_PILOT_DATA_DIR=./data
# Institutional networks
HTTP_PROXY=
HTTPS_PROXY=
SSL_CERT_FILE=src/paper_pilot/
server.py MCP tools and pipeline orchestration
config.py Environment and settings
services/
academic.py Multi-source scholarly search
open_access.py OA resolution and PDF downloads
scihub.py Sci-Hub paper resolution (opt-in)
deep_read.py Full-text extraction and page rendering
zotero.py Local and web Zotero integration
reporting.py Markdown report generation
libgen.py Supplementary LibGen support
Architecture details: docs/ARCHITECTURE.md
- AGENTS.md -- shared operating guide
- CLAUDE.md -- Claude Desktop and Claude Code setup
- CODEX.md -- Codex setup
- docs/CLIENTS.md -- side-by-side client comparison
PRs welcome. The most impactful areas:
- New scholarly source adapters
- Better OA resolution logic
- PDF parsing improvements
- More MCP client configs
See CONTRIBUTING.md.
This tool is designed for academic research and educational purposes only. Open-access features use only legal, publicly available sources. Sci-Hub and LibGen integrations are disabled by default and provided as opt-in features.
MIT. Do whatever you want with it.
If this helps your research, star the repo and tell a colleague.
