doily
Enables research paper search and retrieval through Semantic Scholar, including metadata, citation counts, and open-access full-text links as part of the server's merged search and paper retrieval fallback chain.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
doily
An MCP server that gives an AI agent unpaywalled access to research papers, biomedical sciences first. It runs on Cloudflare Workers, is locked to a single owner, and is MIT licensed.
An agent can search the literature, pull merged metadata, judge a journal or an author, and read the full text of a paper through a fallback chain that tries every open-access route before it reaches Sci-Hub and, as a last resort, posts a Sci-Net bounty request and waits for it to be fulfilled.
Tools
Nine tools, all returning JSON text. Arguments, return shapes and errors are in docs/tools.md.
Tool | Purpose | Example call |
| Search Europe PMC, OpenAlex and Semantic Scholar in parallel; merged and deduplicated |
|
| Merged metadata for one paper: abstract, authors, OA links, MeSH, retraction status, journal |
|
| OpenAlex author profile: works, citations, h-index, topics, affiliations, ORCID |
|
| Journal signals: OpenAlex stats, SJR snapshot, predatory-list evidence |
|
| Full text as markdown through the fallback chain, paged at 60000 characters |
|
| The same chain, returning a one-hour download link and a |
|
| Post (or join) a Sci-Net bounty request for a paper nothing else can deliver |
|
| Long-poll a Sci-Net request; on success returns the first page of text |
|
| Every Sci-Net request with state and timestamps, plus today's spend against the daily cap |
|
Every tool except request_paper is read-only and says so in its annotations.
Related MCP server: omnisearch-mcp
Full-text fallback chain
get_full_text and get_pdf walk these sources in order and stop at the first
that delivers. Every hop is short-circuited by an R2 cache, and anything fetched
is cached indefinitely.
PMC / Europe PMC JATS XML (Europe PMC full-text XML, NCBI efetch from
db=pmc, BioC JSON). Only NCBI and Europe PMC APIs are used; PMC HTML is never scraped.Unpaywall: the best open-access location, then the others.
OpenAlex and Semantic Scholar open-access links.
bioRxiv / medRxiv.
CORE (skipped when no
CORE_API_KEYis set).Sci-Hub.
A Sci-Net request token.
get_full_textnever posts a request by itself; it returns arequest_tokenand the agent decides whether to callrequest_paper.
Any PDF is checked for the %PDF magic bytes. PDF text comes from unpdf, with
Workers AI toMarkdown() as the fallback for failures and scanned pages.
Legal note
Sci-Hub and Sci-Net are enabled by default. Whether retrieving a paper through them is lawful depends on where you are and what you do with it, and both are blocked in some countries. You are responsible for your own use. Everything above them in the chain (steps 1 to 5) is open access.
Journal signals
get_journal, and the journal block inside get_paper, report evidence and
leave the judgement to the reader:
Impact proxy. OpenAlex's
2yr_mean_citedness(the mean citations that the last two years of the journal's works have received) stands in for an impact factor, alongside h-index, DOAJ membership,is_core,listed_inand the APC.SJR. A committed snapshot of the SCImago Journal Rank (
sjr, quartile, year), credited to SCImago. Refreshed by hand about once a year.Predatory lists. Matches against snapshots of Beall's list and predatoryjournals.org are returned as
listed_on: [...]with the source named. This is evidence, never a verdict: the lists are opinions, include stale and disputed entries, and miss newer journals. Absence proves nothing.Retractions.
get_paperreports Crossref update-to relations, which carry Retraction Watch data, as retracted, corrected or concern notices.
Quick start: Claude Code
Once doily is deployed (see Self-hosting):
claude mcp add --transport http -s user doily https://<your-host>/mcpThen run /mcp inside a session and finish the OAuth consent in the browser tab
it opens. The consent page sits behind Cloudflare Access, so sign in as the owner
when asked.
To skip OAuth and use the static bearer instead:
claude mcp add --transport http -s user doily https://<your-host>/mcp \
--header "Authorization: Bearer <your DOILY_BEARER value>"Quick start: claude.ai
In claude.ai, open Settings > Connectors > Add custom connector.
Enter the server URL
https://<your-host>/mcp(no trailing slash).Leave the OAuth client ID and secret fields empty. claude.ai registers itself through dynamic client registration, then sends your browser to the consent page. Sign in through Cloudflare Access and approve.
Alternatively, paste Authorization: Bearer <your DOILY_BEARER value> under
Request headers and skip OAuth entirely.
Other MCP clients that speak streamable HTTP and OAuth 2.1 with PKCE work the same way.
Self-hosting
doily is built to be deployed by its owner onto their own Cloudflare account: one Worker, one D1 database, one R2 bucket, two KV namespaces, one Durable Object class, and a Cloudflare Access application in front of the consent page. The full walk-through, including every secret and the optional Sci-Hub proxy, is in docs/setup.md.
Upstream API keys (NCBI, OpenAlex, Semantic Scholar, CORE) are all optional; every path works without them, only slower or with fewer sources.
Development
npm ci
npm run check # lint, typecheck, format, ASCII, tests, dry-run build
npm test # unit and integration suites
npm run test:unit
npm run test:integration
npm run test:live # LIVE=1, hits real upstream APIs, never in CI
npm run dev # wrangler dev on :8787 (needs .dev.vars)Copy .dev.vars.example to .dev.vars for local runs. See
CONTRIBUTING.md for conventions and SECURITY.md
for the auth model and how to report a vulnerability. The locked design spec is
.claude/doily-spec.md.
License
MIT. See LICENSE. SJR data is credited to SCImago Journal & Country Rank; see data/README.md for the terms of each snapshot.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Research papers for AI agents: PubMed, arXiv, Crossref; citations, references, open access texts
arXiv and OpenAlex/Crossref paper search (an open Google Scholar alternative) as agent tools.
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Find academic papers across major sources like arXiv, PubMed, bioRxiv, and more. Download PDFs whe…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search across multiple academic databases (PubMed, arXiv, bioRxiv, medRxiv, Semantic Scholar) through a unified interface. Supports advanced filtering, metadata retrieval, PDF downloads, and comprehensive research workflows with citation analysis.5-
- AlicenseNot gradedqualityBmaintenanceEnables LLM agents to search academic literature across multiple sources (IEEE, arXiv, ACM, Semantic Scholar, CORE, Scite, Consensus) and index/search local PDFs.MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search and retrieve academic papers from arXiv and PubMed with citation-grade extraction, providing clean citations and summaries.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to retrieve the full text of research articles as downloadable files from DOIs, arXiv, PubMed Central, or OpenReview identifiers, falling back automatically across publisher APIs, open-access aggregators, and polite scraping. It supports single and concurrent batch requests, verifies the returned file matches the requested paper, can include supplementary files, and reports which source produced each result.59 PyPI30BSD 3-Clause