Paper Search MCP
An MCP server for searching and downloading academic papers from arXiv, PubMed, bioRxiv, Semantic Scholar and other open sources
Medium risk
We rate an entry medium when the tool runs code, makes network calls or reads project files. Check what exactly it does before installing.
Why this level
- Reaches external scientific services and downloads files to disk
- Optional API keys are sent to third-party servers
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/paper-search-mcpDetects the agents on your machine, checks the risk and pins the version.
Other ways to install
Run in a terminal
claude mcp add --transport stdio --env 'PAPER_SEARCH_MCP_UNPAYWALL_EMAIL=<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>' paper-search-mcp -- uvx paper-search-mcpOr add to the file .mcp.json, in the project
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
The button opens the agent and offers to add the server. If nothing happens, copy the config below.
Add to the file ~/.cursor/mcp.json, for all projects
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key. For a single project, put the same block into .cursor/mcp.json.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
The button opens the agent and offers to add the server. If nothing happens, copy the config below.
Run in a terminal
code --add-mcp '{"name":"paper-search-mcp","type":"stdio","command":"uvx","args":["paper-search-mcp"],"env":{"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL":"<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"}}'Or add to the file .vscode/mcp.json, in the project
{
"servers": {
"paper-search-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the servers key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Run in a terminal
codex mcp add paper-search-mcp --env 'PAPER_SEARCH_MCP_UNPAYWALL_EMAIL=<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>' -- uvx paper-search-mcpOr add to the file ~/.codex/config.toml, for all projects
[mcp_servers.paper-search-mcp]
command = "uvx"
args = ["paper-search-mcp"]
env = { PAPER_SEARCH_MCP_UNPAYWALL_EMAIL = "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>" }If the file already exists, append the block to the end.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Run in a terminal
gemini mcp add -s user -e 'PAPER_SEARCH_MCP_UNPAYWALL_EMAIL=<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>' paper-search-mcp uvx paper-search-mcpOr add to the file ~/.gemini/settings.json, for all projects
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.config/devin/mcp_config.json, for all projects
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key. Legacy Cascade keeps the MCP config in ~/.codeium/windsurf/mcp_config.json.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Formerly Windsurf.
Add to the file cline_mcp_settings.json, for all projects
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key. Open the settings file in Cline: MCP Servers tab, Configure MCP Servers.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file .roo/mcp.json, in the project
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
A fork of Roo Code, same .roo folders.
Add to the file opencode.json, in the project
{
"mcp": {
"paper-search-mcp": {
"type": "local",
"command": [
"uvx",
"paper-search-mcp"
],
"environment": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcp key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.config/zed/settings.json, for all projects
{
"context_servers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the context_servers key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file .codeassistant/mcp.json, in the project
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": [
"paper-search-mcp"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "<PAPER_SEARCH_MCP_UNPAYWALL_EMAIL value>"
}
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
PAPER_SEARCH_MCP_UNPAYWALL_EMAILrequired
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Install via uvx or add a uvx command with the paper-search-mcp package to your MCP configuration. For the Unpaywall source set PAPER_SEARCH_MCP_UNPAYWALL_EMAIL to any valid email.
Other ways from the author
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": ["paper-search-mcp"],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com"
}
}
}
}Runs through uvx with no permanent install. The email is only needed for the Unpaywall source.
This is third-party code. Review the repository files before installing.
What it does
The server gives an agent unified search and download of academic papers across many sources. A top layer combines concurrent multi-source search with deduplication and a download chain that runs from the source to open access and DOI resolution. A lower layer holds modular connectors for arXiv, PubMed, bioRxiv, medRxiv, Semantic Scholar, Crossref, OpenAlex, PubMed Central, Europe PMC, CORE, Zenodo, HAL and more. Results are normalized to one format, and for some papers PDF download and text extraction are available. The project follows a free-first principle: open databases come first, and API keys are optional, only widening limits and coverage. Beyond the MCP server, a Claude Code skill and a CLI over the same library are available.
Who it is for. For researchers, analysts and technical writers who gather academic literature through an agent.
Good fit when
- You need papers on a topic across several databases at once
- You need to download a PDF or extract text by identifier or DOI
- You need a source list that prioritizes open access
Not a fit when
- You need full text from paywalled databases you cannot access
- A plain web search is enough without installing a server
Example request
Find recent papers on CRISPR base editing in arXiv and Semantic ScholarLimitations
All API keys are optional except Unpaywall, which needs an email in an environment variable or the source is disabled. Some sources are limited on the provider side: Google Scholar and SSRN block bots, and Semantic Scholar and CORE can hit rate limits without a key. The IEEE and ACM connectors are skeletons for now and activate only with their own keys. PDF download is mostly available for open access. The optional Sci-Hub connector is unstable, and responsibility for its use lies with the user.
How to disable. Remove the server from the client's MCP configuration. If you installed the package, remove it via pip or uv, and delete the Claude Code skill from the skills directory.
MCP
- Transport
- stdio
- Authentication
- API key
| Environment variables | |
|---|---|
| PAPER_SEARCH_MCP_UNPAYWALL_EMAIL required | Any valid email; without it the Unpaywall source is disabled. |
| PAPER_SEARCH_MCP_CORE_API_KEY secret | Free CORE key that improves repository download stability. |
| PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY secret | Free Semantic Scholar key that raises request limits. |
| PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL | Proxy URL to bypass Google Scholar bot-detection. |
| PAPER_SEARCH_MCP_IEEE_API_KEY secret | Activates the IEEE Xplore connector, otherwise a skeleton. |
| PAPER_SEARCH_MCP_ACM_API_KEY secret | Activates the ACM Digital Library connector, otherwise a skeleton. |
Security check
- Reaches external scientific services and downloads files to disk
- Optional API keys are sent to third-party servers
README in short
The README describes a Python MCP server for searching and downloading academic papers from more than twenty sources with an open-access priority. The architecture has two layers: unified search with deduplication and a download chain on top, and modular per-database connectors below. It includes a capability matrix per source and a list of optional environment variables with keys. Installation is possible via Smithery, uvx, uv, pip, npx, Docker or from source, and for Claude Code there is a skill variant. MIT licensed.
FAQ
Are API keys required?
No, except the Unpaywall email. Open databases work without keys, and keys for Semantic Scholar, CORE and others only raise limits and stability.
Can I install it as a skill instead of a server?
Yes. For Claude Code there is a separate skill over the paper-search CLI that works without MCP configuration.
Related
166 skills for scientific work: bioinformatics, cheminformatics, clinical data, geospatial analysis and 100+ databases
Google's open-source MCP server for databases: ready tools for Postgres, MySQL, BigQuery, Spanner and more, plus custom tools in tools.yaml
Official Hugging Face skills: Hub operations via the hf CLI, datasets, model training, Spaces, evals and deployment
A visualization language for agents and an MCP server: neat charts from a simple semantic spec