Science Made Readable adds MCP access to OpenAlex literature search
Maxime Rivest added an MCP server to Science Made Readable, an open-source semantic search service built on OpenAlex and DenseOn embeddings. Casual access is limited to 10 requests per minute.

TL;DR
- Science Made Readable now has a free MCP connector for literature search, paper lookup, similarity search and citation walks, as announced in the MCP follow-up.
- The advertised 203,486,035 embeddings in the launch image exceed the live semantic index: the coverage table lists about 125 million searchable records.
- Public access currently allows 30 calls per minute, according to the API guide, versus 10 requests per minute in the launch announcement.
- Retrieval includes a junk score and filtering controls, which Rivest described in a reply about noisy records.
The MCP implementation returns Markdown rather than structured JSON to avoid duplicating results for the model. Its citation walk finds papers a starting paper “should also have cited.”
Four MCP tools
Maxime Rivest added MCP to an HTTP API that agents could already use from a plain-language prompt. The MCP endpoint exposes a refreshingly small surface: four read-only tools over Streamable HTTP, with no authentication or sign-up.
search_papers: semantic or keyword search, with publication-year, publication-type and open-access filters.get_papers: retrieve records for up to 20 identifiers at once, including DOIs, OpenAlex IDs and PMCIDs.find_similar_papers: retrieve semantically related papers from a seed paper.citation_walk: find neighbours that share references, then surface works those neighbours cite that the seed does not.
The server also supplies literature_review and check_claim prompts. Its documented CLI registrations are:
OpenAlex coverage
The launch graphic counts embedded papers from their titles and abstracts:
Actual searchable coverage differs by operation. The October 11 release inventory reports:
- Semantic search: 124,950,164 records.
- Keyword search and paper lookup: 203,543,614 records, across all years.
- Semantic search within the readable collection: 3,901,819 records. This collection restricts results to PubMed Central research articles with CC BY licensing that Science Made Readable can open and rewrite.
Search covers English titles and abstracts, rather than full texts; papers without an English abstract are excluded. Similarity lookup returns a 404 when a paper exists in the broader corpus but is absent from the semantic index.
Junk ranking
Rivest acknowledged OpenAlex’s cleanliness problems in a reply about coverage. The search implementation ranks semantic results using:
The default penalty is 0.3 for the general corpus and 0 for the readable collection. Keyword results do not receive this reranking.
On the project’s 60 judged test questions, junk among the top 10 results fell from 27% to 1%, while useful nDCG@10 rose from 0.57 to 0.78. The API guide warns that genuine papers with thin records can also be penalized, while crank papers can score clean.
CPU retrieval
Search serving uses no GPU per query, according to the technical walkthrough. That walkthrough describes the 125-million-record index as five stages:
- Encode the question: DenseOn produces a 768-dimensional vector on CPU, taking about 40-60 ms.
- Select clusters: a FAISS IVF index has 32,768 lists; each query opens the closest 128.
- Scan compressed vectors: 1-bit RaBitQ codes use about 96 bytes per paper, with an approximately 14 GB index resident in RAM.
- Rescore candidates: the top 300 are checked against the original float16 vectors.
- Fetch metadata: titles, authors and links come from local SQLite.
Rivest reported roughly 65-90 ms server-side searches on the warm home server. His reported 92% agreement with exhaustive vector-search top-10 results belongs to an earlier 72.5-million-paper index; evaluation of the 125-million-paper index was unfinished.
Embedding the corpus took about a week on one RTX 3090, Rivest said in a reply about hardware.
MCP payloads
The backend carries an Apache 2.0 license in the repository he shared. Its MCP implementation notes describe several model-facing trade-offs:
- Markdown answers: no structured output. The author estimates that duplicating facts as structured JSON and JSON text would cost roughly three times the tokens.
- Short abstracts by default: first sentences keep a 30-result response around 6,000 tokens; full abstracts remain available.
- Fewer controls: MCP omits
nprobe,depth,junk_penalty,license,pmc_open_accessand map positions. The HTTP API exposes the broader parameter surface. - Stateless responses: no session state or progress messages during a call. Citation walks can take about five seconds.
- Request logging: the MCP gateway records method, tool and app name, but never tool arguments.
Rate limits
The public quota in the current documentation is 30 tool calls per minute per address, compared with 10 requests per minute in the original announcement.
- MCP handshakes, tool listings and guide reads do not consume the quota.
- An over-limit MCP call returns a tool error stating how long to wait. The implementation avoids an HTTP 429 because it can break some apps’ connections.
- Direct HTTP API calls instead receive a 429 with a
Retry-Afterheader and aretry_afterfield in the response body.
Daily additions
Asked about updates, Rivest suggested nightly OpenAlex refreshes. The published release inventory records daily fetches: 57,579 additions beyond the October 5 OpenAlex snapshot, with the latest fetch dated October 11.
Those newly fetched papers are not yet included in citation walks. Nightly data updates can also make the HTTP API unavailable for approximately one to three minutes, returning 502 or 503 errors.