Skip to main content
Glama
penny4nonsense

mcp-scholaris

README.md
# 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

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness5/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues