# Scholar MCP (pypi · scholar-mcp)

Federated academic search, citation traversal, persistent PDF download, and temporary reading.

- Trust score: 62/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- pypi · `scholar-mcp`: 62/100 (this document), [markdown](https://verifymcp.io/servers/liyux3-scholar-mcp/scholar-mcp.md), [page](https://verifymcp.io/servers/liyux3-scholar-mcp/scholar-mcp)

## Channel facts

- Registry: `pypi`
- Package: `scholar-mcp`
- Version: `0.8.4`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 50/100
  - Malware scan not yet available for this package.
  - No known CVEs affecting this package version or its production dependencies.
  - Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it.
  - 1 of 43 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 35/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 14 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 82/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 1366 tokens (~195/item across 7 items; 6 tools + 1 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 50/100
  - Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 6 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 7 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Scholar MCP server?

Scholar MCP runs locally as a PyPI package, launched with uvx scholar-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add liyux3-scholar-mcp -- uvx scholar-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "liyux3-scholar-mcp": {
      "command": "uvx",
      "args": [
        "scholar-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "liyux3-scholar-mcp": {
      "command": "uvx",
      "args": [
        "scholar-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add liyux3-scholar-mcp -- uvx scholar-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "liyux3-scholar-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "scholar-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add liyux3-scholar-mcp --command uvx --arg scholar-mcp
```

### Hermes

```yaml
mcp_servers:
  liyux3-scholar-mcp:
    command: "uvx"
    args: ["scholar-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "liyux3-scholar-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "scholar-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add liyux3-scholar-mcp -t stdio -c uvx -a scholar-mcp
```

### Other

```json
{
  "mcpServers": {
    "liyux3-scholar-mcp": {
      "command": "uvx",
      "args": [
        "scholar-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-20 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 61, +1)

No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-17 (score 60, −15)

- [security regression] Malware scan: pass → unverified

### 2026-09-16 (score 75, +16)

- [security improvement] Malware scan: unverified → pass

### 2026-09-13 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 58, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-09-05 (score 55)

First indexed and scored.

## MCP tools (6)

### `search_papers` (~416 tokens)

Search academic papers

Search for academic papers across many sources (OpenAlex, Semantic Scholar,
arXiv, PubMed, OpenReview, Crossref and more), merge duplicates across
DOI/arXiv/S2/OpenAlex identities, and rerank for relevance.

Use this to find papers from a topic, a question, or a half-remembered
title. Use paper_info when you already hold an identifier,
recommend_papers to expand from one known paper, and search_authors for
people. Read-only. Each call fans out to live APIs under a time budget;
sources that time out are reported as degraded coverage instead of
failing the call. Put years, venues and filters in the parameters, not in
the query text.

Input parameters:

- `debug` (boolean): Include per-source latency, provenance, and internal ranking diagnostics.
- `fields_of_study` (string): Comma-separated fields (e.g., "Computer Science,Mathematics")
- `intent` (string): Soft relevance focus used by reranking and expansion. Use balanced normally; alternatives are foundational, recent, survey, method, and dataset.
- `limit` (integer): Maximum results to return (1-100, default 10)
- `min_citations` (integer): Minimum citation count filter (default 0)
- `open_access_only` (boolean): Only return papers with free PDF access
- `paper_types` (string): Comma-separated types (e.g., "JournalArticle,Conference,Review,Book,Dataset"). Default: all types.
- `query` (string, required): Search query (e.g., "attention is all you need", "CRISPR gene editing")
- `sort` (string): Hard final order. Use relevance normally; citations and date replace the reranker's ordering.
- `venue` (string): Filter by venue (e.g., "NeurIPS", "Nature")
- `year` (string): Filter by year or range (e.g., "2023", "2020-2024")

### `paper_info` (~174 tokens)

Inspect a paper and its citation neighborhood

Get metadata for one known paper, optionally with the papers that cite it
and the papers it references.

Use this when you already have an identifier; use search_papers to find
one first, and recommend_papers for related work that is not a direct
citation. Read-only, one upstream lookup per requested section. An
unresolvable identifier returns a not-found message rather than an error.
Citation and reference lists are ordered by influence and cut at limit.

Input parameters:

- `include` (string): Comma-separated: "detail", "citations", "references" (default: "detail")
- `limit` (integer): Max citations/references to return (default 20)
- `paper_id` (string, required): Paper identifier (S2 ID, DOI, ArXiv:ID, OpenAlex W-ID, etc.)

### `recommend_papers` (~245 tokens)

Recommend related papers

Find related papers by a chosen citation-graph relation.

Use this when you hold one paper and want its neighbourhood. Use
search_papers for a topic and paper_info for a paper's direct citation
lists. Read-only; results come from embedding and citation data, so very
new or uncited papers return few or no neighbours.

"Related" is several different questions, and which one you want depends
on what you are doing:

    similar     embedding neighbours (SPECTER2). Same topic, possibly
                different vocabulary. Good default.
    peers       what is cited alongside this paper. Its intellectual
                cohort, which is usually what "related work" means.
    kin         what cites the same works this paper does. Shared method
                rather than shared topic, so this is the relation that
                crosses field boundaries: two papers can be coupled
                without sharing any vocabulary.

Input parameters:

- `limit` (integer): Maximum results (default 10)
- `paper_id` (string, required): Paper identifier (S2 ID, DOI, ArXiv:ID, OpenAlex ID, etc.)
- `relation` (string): similar | peers | kin

### `search_authors` (~120 tokens)

Search academic authors

Search for researchers by name and return profiles with affiliations,
paper counts, h-index and identifiers.

Use this for people, not papers: use search_papers for papers and
paper_info for a paper's own author list. Read-only. Name matching is
fuzzy, so common names return many candidates; add an affiliation or
field word to the query and keep limit small to disambiguate.

Input parameters:

- `limit` (integer): Maximum results (1-1000, default 5)
- `query` (string, required): Author name to search for

### `download_paper` (~182 tokens)

Download a paper PDF

Resolve one paper to an open-access PDF and save it to disk, optionally
indexing it into a library collection.

Writes a file under save_dir (default: the configured papers directory);
a repeat call for the same paper overwrites the same path. Use read_paper
instead when you only need the text once. Resolution tries the canonical
archive (arXiv, Europe PMC), repository resolvers, preprint servers and
Unpaywall in order; a paywalled paper with no open copy returns a clear
failure and writes nothing.

Input parameters:

- `collection` (string): Knowledge-base collection to index the PDF in. Empty disables indexing.
- `paper_id` (string, required): Paper identifier (S2 ID, DOI, ArXiv:ID, etc.)
- `save_dir` (string): Directory to save PDF (default: configured download directory)

### `read_paper` (~213 tokens)

Read a paper's main text or a page range

Fetch a paper's PDF into a temporary file and return page-aware Markdown
text plus selectors for its figures and tables.

Use this to read; use download_paper to keep the PDF. Nothing persists
after the call. Resolution follows the same open-access chain as
download_paper, so paywalled papers without an open copy fail cleanly.
Pass a selector from a previous response as visual to get one figure or
table with its surrounding text.

Input parameters:

- `pages` (string): One-indexed page range. The default usually reaches the conclusion of an AI conference paper. Use ranges such as "11-20" for appendices. At most 20 pages can be read per call.
- `paper_id` (string, required): Paper identifier (S2 ID, DOI, ArXiv:ID, etc.)
- `visual` (string): Optional selector returned by this tool, such as "Figure 3", "Table 2", or "page 5". Returns one focused visual with its text.

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Dependencies. The full working is on the page: https://verifymcp.io/servers/liyux3-scholar-mcp/scholar-mcp#diagnostics

## Score history

- 2026-09-20: 62
- 2026-09-19: 61
- 2026-09-18: 61
- 2026-09-17: 60
- 2026-09-16: 75
- 2026-09-15: 59
- 2026-09-14: 59
- 2026-09-13: 59
- 2026-09-12: 58
- 2026-09-11: 55
- 2026-09-10: 55
- 2026-09-09: 55
- 2026-09-08: 55
- 2026-09-07: 55
- 2026-09-06: 55
- 2026-09-05: 55

## Common questions

### What is the Scholar MCP server?

Scholar MCP is listed in the public MCP registry as io.github.Liyux3/scholar-mcp. Federated academic search, citation traversal, persistent PDF download, and temporary reading. This page covers its PyPI package (scholar-mcp).

### Is the Scholar MCP server safe to use?

Scholar MCP scores 62 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Scholar MCP server expose?

Scholar MCP exposes 6 tools: search_papers, paper_info, recommend_papers, search_authors, download_paper, read_paper. Their descriptions and schemas cost roughly 1,350 tokens of context every time the server is loaded.

### Is the Scholar MCP server still maintained?

Scholar MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- PyPI project: https://pypi.org/project/scholar-mcp/
- Socket report: https://socket.dev/pypi/package/scholar-mcp
- Repository: https://github.com/Liyux3/scholar-mcp
- Changelog RSS feed: https://verifymcp.io/servers/liyux3-scholar-mcp/scholar-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/liyux3-scholar-mcp/scholar-mcp.json
- HTML version of this page: https://verifymcp.io/servers/liyux3-scholar-mcp/scholar-mcp
