Paper Download MCP Server
English | 简体中文
MCP server for downloading academic papers by DOI, arXiv ID, or URL.
What You Get
paper_download: Download one or more papers (1-50 per call)paper_get_metadata: Get paper metadata without downloading- Optional PDF-to-Markdown conversion via
to_markdown
Quick Start (MCP Clients)
Before configuration, make sure uvx is available:
uvx --version
Claude Code
Add as a project-scoped MCP server:
claude mcp add --transport stdio --scope project --env PAPER_DOWNLOAD_EMAIL=your-email@university.edu paper-download -- uvx paper-download-mcp
This writes .mcp.json in the current project. Equivalent config:
{
"mcpServers": {
"paper-download": {
"command": "uvx",
"args": ["paper-download-mcp"],
"env": {
"PAPER_DOWNLOAD_EMAIL": "your-email@university.edu"
}
}
}
}
Codex
Add with CLI:
codex mcp add paper-download --env PAPER_DOWNLOAD_EMAIL=your-email@university.edu -- uvx paper-download-mcp
Equivalent ~/.codex/config.toml snippet:
[mcp_servers.paper-download]
command = "uvx"
args = ["paper-download-mcp"]
[mcp_servers.paper-download.env]
PAPER_DOWNLOAD_EMAIL = "your-email@university.edu"
Claude Desktop
Edit Claude Desktop MCP config:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\\Claude\\claude_desktop_config.json
{
"mcpServers": {
"paper-download": {
"command": "uvx",
"args": ["paper-download-mcp"],
"env": {
"PAPER_DOWNLOAD_EMAIL": "your-email@university.edu"
}
}
}
}
Restart Claude Desktop after editing the file.
Configuration
Required
PAPER_DOWNLOAD_EMAIL: Required for Unpaywall API usage.
Optional (Advanced)
PAPER_DOWNLOAD_OUTPUT_DIR: Global fallback output directory.
In most cases, you do not need PAPER_DOWNLOAD_OUTPUT_DIR. Prefer passing output_dir in the paper_download tool call when you want a specific location.
Legacy env vars are still supported for compatibility:
SCIHUB_CLI_EMAILSCIHUB_OUTPUT_DIR
Tools
paper_download
Download papers with configurable concurrency (default parallel=10).
If parallel=1, papers are processed sequentially with a 2-second delay between items.
OA-first routing uses OpenAlex and Unpaywall first; CORE is disabled by default in MCP runtime.
Parameters:
identifiers(required):list[str], 1-50 itemsoutput_dir(optional): target directory (default uses runtime fallback:PAPER_DOWNLOAD_OUTPUT_DIRor./downloads)parallel(optional): concurrent workers,1-50(default10)to_markdown(optional): convert PDF to Markdown (falseby default)md_output_dir(optional): Markdown directory (default<output_dir>/md)
Examples:
paper_download(["10.1038/nature12373"])
paper_download(["10.1038/nature12373", "2301.00001"], output_dir="/path/to/papers")
paper_download(["10.1038/nature12373", "10.1126/science.169.3946.635"], parallel=10)
paper_download(["10.1038/nature12373"], to_markdown=true)
paper_get_metadata
Get metadata quickly (no PDF download).
Parameters:
identifier(required): DOI, arXiv ID, or URL
Example:
paper_get_metadata("10.1038/nature12373")
Troubleshooting
PAPER_DOWNLOAD_EMAIL environment variable is required
Set PAPER_DOWNLOAD_EMAIL in your MCP server config.
uvx: command not found
Install uv, then re-run the MCP configuration.
Download path errors
Pass a writable directory with output_dir, for example:
paper_download(["10.1038/nature12373"], output_dir="/absolute/path")
Legal Notice
This tool can access papers from multiple sources, including Unpaywall and Sci-Hub. You are responsible for complying with copyright and local laws in your jurisdiction.
License
MIT. See LICENSE.
Metadata
Release files for paper-download-mcp 0.9.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paper_download_mcp-0.9.2.tar.gz | 188.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| paper_download_mcp-0.9.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 314.6 kB
Release files / paper_download_mcp-0.9.2.tar.gz
| Download URL | paper_download_mcp-0.9.2.tar.gz |
|---|---|
| Size | 188.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
332ee731876ac2d3006052c9973393cf4278d90d619e0312cdcbdbe4bda5a457
|
|
BLAKE2b-256 checksum How to use checksums |
d0b86272ee9cbf9be34fa6ca6bc46c17da0530bd2b32d5a527195afcafde0806
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency logRelease files / paper_download_mcp-0.9.2-py3-none-any.whl
| Download URL | paper_download_mcp-0.9.2-py3-none-any.whl |
|---|---|
| Size | 125.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e7fd8960c5444b8ea476a23194cca009e2acbd626b9e85e7578bdafde706ecf8
|
|
BLAKE2b-256 checksum How to use checksums |
d545a532e056360df8a502ffa5e16cbcfcc6ecd4a62075983163205448a72dc4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Mar 17, 2026.
Transparency log