Paperfind
Provides read-only search and metadata retrieval for arXiv papers, including arXiv IDs, titles, authors, abstracts, links, and source status. arXiv is queried only when explicitly named as a source, and full text is never returned.
Provides read-only search and metadata retrieval for PubMed records via NCBI E-utilities, with support for PMID/PMCID-based lookups and optional NCBI API key configuration.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Paperfindfind recent open access papers on CRISPR delivery"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
paperfind-mcp (Paperfind)
Paperfind is a read-only Model Context Protocol connector for academic paper metadata and links. It searches arXiv, Crossref, OpenAlex, Europe PMC, PubMed, and DOAJ, and it asks Unpaywall for open-access locations by DOI. Every tool is read-only. The server speaks stdio, and it can serve stateless Streamable HTTP on 127.0.0.1 only.
A paper record carries normalized ids (DOI in lowercase without a https://doi.org/ prefix, plus arXiv, PMID, PMCID, OpenAlex, and DOAJ ids when a source provides them), title, authors, year, venue, abstract, landing and PDF links, open-access fields, citation count, and the sources that returned the record. Search merges duplicates that share a DOI, or that share a normalized title and year when their strong ids do not conflict. The richest abstract wins. An abstract without a copyright note beats a longer abstract that carries one. Source lists and ids are unioned.
Connects to: public scholarly APIs (arXiv, Crossref, OpenAlex, Europe PMC, PubMed / NCBI E-utilities, DOAJ, and Unpaywall). Keys for OpenAlex and NCBI are optional.
The npm package, binary, and User-Agent name are papers.
By Issah Abubakari (@si-essence). Also listed on Bot Essentials.
Requirements
Node.js 20 or newer (CI uses Node.js 22)
npm
Related MCP server: Papers by Ouroboros Apps
Tools
Limits default to 5 and max out at 25. Page defaults to 1 and maxes out at 200. yearFrom must be less than or equal to yearTo.
Tool | Input | Output |
|
| Deduplicated papers and a status per source ( |
|
| Papers from that source and one status. A failure fails this call. |
|
| One merged paper from Crossref and OpenAlex, plus Unpaywall locations when that lookup succeeds, and a status for each upstream. |
|
| One paper from the matching source. DOI resolution stays on |
|
|
|
| One of | Citing works from OpenAlex and Europe PMC, plus statuses. |
| Same as citations. | Referenced works from OpenAlex, Crossref when a DOI is present, and Europe PMC, plus statuses. |
|
| OpenAlex authors with ORCID, affiliations, works count, and h-index when present. |
|
| Papers for that author. |
| One of | Plain text and the licence when Europe PMC says the record is open access and the licence is open. Otherwise links or ids and a reason. arXiv never returns text. |
| None. | Each source, whether it is searchable, the rate this process enforces, the terms link, auth, and the env names |
|
| A citation string. A DOI without a title is resolved first. |
Tool errors use these prefixes and name the source: [invalid-input], [not-found], [rate-limited], [upstream], [timeout], [config]. Messages do not include stack traces or secret values.
Setup
From a clone of this repository:
npm ci
npm run ci # typecheck, lint, test, build
npm start # stdio
npm run start:http # http://127.0.0.1:3000/mcp and /health
node scripts/live-check.mjs # optional, calls the real public APIsCopy .env.example and export the variables, or set them in the client config.
{
"mcpServers": {
"papers": {
"command": "node",
"args": ["/path/to/paperfind-mcp/dist/index.js"],
"env": {
"PAPERS_CONTACT_EMAIL": "contact@example.com"
}
}
}
}OPENALEX_API_KEY and NCBI_API_KEY are optional. Leave them unset for keyless limits. Do not log them.
Docker binds HTTP with no authentication. Keep the port on localhost.
docker build -t papers .
docker run -p 3000:3000 -e PAPERS_CONTACT_EMAIL=contact@example.com papersThe image sets PAPERS_CONTACT_EMAIL=contact@example.com. Override it with an address you control. Do not bake a personal address or an API key into the image.
Environment
Variable | Default | Role |
|
| User-Agent mailto, and the email sent to Crossref, PubMed, and Unpaywall. Must look like an email and must not contain an API key. |
| unset | Optional bearer token for OpenAlex. At least 8 characters. Never printed. |
| unset | Optional NCBI |
|
| Inbound sliding window. Cache hits do not spend it. |
|
| TTL for a successful redacted upstream body. |
|
| Per-attempt upstream timeout. |
|
|
|
|
| HTTP port. The listener is |
Invalid values are reported by field name and issue code. The rejected value is not included in the error.
The User-Agent is papers/0.1.0 (mailto:<PAPERS_CONTACT_EMAIL>).
Sources and terms
Checked on 2026-10-17. The rate column is what this process enforces.
Source | What we use | Data licence | Rate we enforce | Auth | What we never do | Terms |
arXiv | Atom search and id lookup. Metadata and links. | Metadata is CC0. | 1 request every 3 seconds, one at a time. | None. | Fetch or return PDF or source bytes. Imply arXiv endorsement. | |
Crossref | Works search, DOI lookup, deposited references. | Most metadata is free of copyright. Some abstracts are publisher copyright and are marked. | 3 requests/s in the polite pool, then slower when | None. | Treat a copyrighted abstract as a licence to reuse it. | https://www.crossref.org/documentation/retrieve-metadata/rest-api/ |
OpenAlex | Works, authors, citations, references, open-access fields. | Data is CC0. The API is a metered service. | 10 requests/s keyless, 30 requests/s when a key is set. | Optional | Call the key-signup endpoint or invent an email. | |
Europe PMC | Search, citations, references, and full text XML for the open-access subset. | API use is a sanctioned channel. Full text follows the article licence. | 5 requests/s. | None. | Return full text unless | |
PubMed | E-utilities esearch and efetch. | Metadata via NCBI. Abstracts may be publisher copyright and are marked. | 3 requests/s, or 10 requests/s when | Optional | Present an abstract as a licence to reuse it. | |
DOAJ | Article search. | Article metadata from the API is CC0. | 2 requests/s. | None for public search. | Copy DOAJ website content. | |
Unpaywall | DOI open-access location lookup only. Enrichment, not a search source. | Location links. The files they point at keep their own licences. | 1 request/s. |
| Use Unpaywall as a paper search. Download PDF bytes. |
An open licence here means a Creative Commons licence (the string starts with cc or names creativecommons.org), CC0, or public domain. The full-text cap is 80,000 characters. The licence string is returned with any text.
Excluded sources
Semantic Scholar is excluded. Its API licence forbids repackaging, selling, renting, leasing, lending, distributing, or sublicensing the API, some of the data is CC BY-NC, and Ai2 ships an official MCP. Google Scholar is excluded because it has no API for this use and scraping breaks its terms. Sci-Hub and LibGen are excluded because they distribute texts without a licence to do so.
Attribution
Metadata comes from Crossref. OpenAlex data is CC0. arXiv metadata is CC0. Thank you to arXiv for use of its open access interoperability. Europe PMC records are used through its REST API. This connector uses NCBI E-utilities from the National Library of Medicine (NLM). NLM is not responsible for this project and does not endorse it. DOAJ article metadata is CC0. Unpaywall locations come from the Unpaywall API, now documented by OpenAlex. None of these providers endorse this project.
Limits and caveats
Crossref does not publish a fixed numeric polite-pool rate. This connector starts at 334 ms between Crossref calls, only lengthens that gap when
X-Rate-Limit-LimitandX-Rate-Limit-Intervalask for a slower pace, and honoursRetry-Afteron HTTP 429.contact@example.comis a placeholder. Unpaywall rejects it with HTTP 422 and asks for the caller's own email. In that casefind_open_accessreports Unpaywall as unavailable and still returns the OpenAlex location. SetPAPERS_CONTACT_EMAILto an address you control. When both lookups fail, the tool returns a reason and per-source statuses. Upstream error text replaceshttpandhttpsURLs with[url].Unpaywall is used for the DOI lookup
GET /v2/{doi}only. Paper search goes to OpenAlex.NCBI E-utilities require
toolandemailand allow 3 requests per second without a key. WithNCBI_API_KEYset, this connector allows 10 requests per second.Europe PMC calls are capped at 5 requests per second.
DOAJ's API docs allow a burst of five requests if the average stays at 2 per second. This connector spaces every DOAJ call by 500 ms and does not burst.
OpenAlex's current authentication page says 10 requests per second with no key and 30 with a free key. Semantic search is 1 request per second. This connector does not call semantic search, and it does not sign up for a key.
Retries run on 429, 5xx, timeout, and network errors, with bounded backoff and jitter, up to 3 attempts. Other 4xx responses, HTML bodies, and redirects are not retried. Redirects are refused, including a redirect toward a PDF.
The cache and the inbound window live in the process. They disappear on exit.
search_sourceandget_paperreport a single source, so a failure of that source fails the call.get_paper_by_doireturns not found when both Crossref and OpenAlex miss.Year filters drop records that have no year. Open-access filters drop records the source did not mark open.
Title dedupe lowercases, strips punctuation and diacritics, and collapses whitespace. Two different DOIs are never merged.
Running the tests
The tests use mocked upstream responses. They need no API key and make no network calls to the paper sources.
npm ci
npm test # unit and tool tests (vitest)
npm run ci # typecheck, lint, tests, and buildAt the time of this commit, npm test reports 49 passing tests.
Author
Issah Abubakari (@si-essence).
This connector is also listed on Bot Essentials.
Licence
MIT. See LICENSE. The data licences above are separate from the MIT licence on this code.
This server cannot be deployed
Maintenance
Related MCP Connectors
Find research papers and arXiv preprints, and get an abstract and free full text from a DOI or id.
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
arXiv, PubMed, Crossref and OpenAlex scholarly metadata.
Search and download academic papers from arXiv, PubMed, bioRxiv, medRxiv, Google Scholar, Semantic…
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables retrieval of academic paper metadata, PDFs, full text, citations, and references by title via Semantic Scholar, arXiv, and other sources.637 PyPI1MIT
- AlicenseNot gradedqualityBmaintenancePapers by Ouroboros Apps (https://ouroborosapps.com). Research paper search with real citations from OpenAlex, Semantic Scholar, PubMed, Crossref, and arXiv: find papers, fetch abstracts, follow citations, and format references. Connect by pasting https://papers-mcp.vercel.app/mcp into Claude, Cursor, Grok, or ChatGPT developer mode (OAuth). Docs: https://ouroborosapps.com/docs/papers4 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables searching and retrieving academic paper information from Semantic Scholar and Crossref, including metadata, abstracts, full-text when available, and structured responses for LLM tool use.-
- FlicenseNot gradedqualityAmaintenanceEnables LLMs such as Claude to search and retrieve academic paper information from Semantic Scholar and Crossref, including metadata, abstracts, full-text content when available, and topic/date-filtered results.-