mcp-scholaris
# mcp-scholaris
An MCP server for retrieving academic papers from open access sources. Provides search across arXiv, Semantic Scholar, and PubMed, with full text retrieval via arXiv PDFs, PubMed Central (BioC API), and Unpaywall. No paywalls, no grey area — legitimate open access only.
## Installation
``````bash
pip install mcp-scholaris
``````
## Tools
### ``search_papers``
Search for academic papers by topic, author, or keyword.
**Parameters:**
- ``query`` (required) — search terms
- ``sources`` (optional) — list of sources to search: ``arxiv``, ``semantic_scholar``, ``pubmed``. Defaults to all three.
- ``max_results`` (optional) — maximum results per source. Defaults to 5.
### ``fetch_paper``
Fetch the full text of a paper. Tries open access sources in order: arXiv → PubMed Central → Unpaywall. Provide at least one identifier.
**Parameters:**
- ``arxiv_id`` — e.g. ``2301.00001`` or ``arxiv:2301.00001``
- ``pubmed_id`` — PubMed ID (PMID), e.g. ``36383508``
- ``doi`` — e.g. ``10.1371/journal.pone.0276755``
## Configuration
Semantic Scholar works without an API key but is rate-limited. For higher limits, create a ``.env`` file in your working directory:
``````
SEMANTIC_SCHOLAR_API_KEY=your_key_here
``````
API keys are free at [semanticscholar.org](https://www.semanticscholar.org/product/api).
## Usage with an MCP client
Add to your MCP client configuration:
``````json
{
"mcpServers": {
"scholaris": {
"command": "scholaris"
}
}
}
``````
Or run directly:
``````bash
scholaris
``````
The server communicates over stdio using the MCP protocol (JSON-RPC 2.0).
## Sources
| Source | Search | Full Text |
|---|---|---|
| arXiv | ✓ | ✓ PDF |
| Semantic Scholar | ✓ | ✓ when OA PDF available |
| PubMed | ✓ | ✓ via BioC API (PMC articles) |
| Unpaywall | — | ✓ for any DOI with OA version |
## License
MIT
TDQS
Scored across 2 tools
The two tools have clearly separate roles: search_papers is for discovery, returning metadata about papers, while fetch_paper retrieves full text for a known identifier. There is no overlap in purpose or output.
Both tool names follow a consistent verb_noun snake_case pattern: search_papers and fetch_paper. The naming clearly communicates what each tool does and matches the same style.
With only two tools, the server is on the small side, but the two operations form a natural and sufficient pair for a focused scholarly search-and-retrieval tool. Each tool is essential and earns its place.
For the stated purpose of finding academic papers and retrieving their full text, the pipeline is complete: search returns identifiers and metadata, and fetch consumes those identifiers to return content. No obvious dead ends or missing core operations exist in this read-only domain.