# io.github.SMABoundless/semanticscholar (npm · semanticscholar-mcp-server)

Search 200M+ papers, authors, citations, and recommendations via Semantic Scholar

- Trust score: 61/100 (medium)
- Change this week: +25
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- npm · `semanticscholar-mcp-server`: 61/100 (this document), [markdown](https://verifymcp.io/servers/smaboundless-semanticscholar/semanticscholar-mcp-server.md), [page](https://verifymcp.io/servers/smaboundless-semanticscholar/semanticscholar-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `semanticscholar-mcp-server`
- Version: `1.0.0`
- 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-08-03.

- **Supply Chain Security**: 87/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (95 of 99), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 19/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 29 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 61/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3786 tokens (~236/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add smaboundless-semanticscholar -- npx -y semanticscholar-mcp-server
```

### Codex

```bash
codex mcp add smaboundless-semanticscholar -- npx -y semanticscholar-mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "smaboundless-semanticscholar": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "semanticscholar-mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add smaboundless-semanticscholar --command npx --arg -y --arg semanticscholar-mcp-server
```

### Hermes

```yaml
mcp_servers:
  smaboundless-semanticscholar:
    command: "npx"
    args: ["-y", "semanticscholar-mcp-server"]
```

### Other

```json
{
  "mcpServers": {
    "smaboundless-semanticscholar": {
      "command": "npx",
      "args": [
        "-y",
        "semanticscholar-mcp-server"
      ]
    }
  }
}
```

## 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-08-03 (score 61, −3)

No change was recorded against any check on this day. Supply Chain Security went from 97 to 87. Other categories moved too: Stability & Change Management rose 4.

### 2026-08-02 (score 64, +51)

- [security regression] Provenance: unverified → fail
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Stability: unverified → 0.23
- [functional improvement] Schema quality: unverified → excellent
- [functional] Licence: MIT

### 2026-08-01 (score 13, −5)

- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified

### 2026-07-31 (score 18, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 18, −18)

- [security regression] Malware scan: pass → unverified

### 2026-07-27 (score 36)

First indexed and scored.

## MCP tools (16)

### `paper_search` (~468 tokens)

Search for academic papers by keyword across 200M+ papers in the Semantic Scholar corpus. Supports filtering by year range, venue, field of study, open access, citation count, and publication type. Results are ranked by relevance.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `fieldsOfStudy` (string): Comma-separated fields of study, e.g. 'Computer Science,Medicine'. Valid values: Computer Science, Medicine, Physics, Mathematics, Biology, Chemistry, etc.
- `limit` (integer): Number of results to return (1-100, default: 10)
- `minCitationCount` (integer): Minimum number of citations a paper must have.
- `offset` (integer): Offset for pagination (default: 0)
- `openAccessPdf` (boolean): If true, only return papers with an open access PDF available.
- `publicationDateOrYear` (string): Filter by publication date. Supports ranges: '2019-03-05:2020-06-15', '2019-03:', ':2020-06'.
- `publicationTypes` (string): Comma-separated publication types: JournalArticle, Conference, Review, Book, BookSection, Preprint, LettersAndComments, ClinicalTrial, CaseReport, Editorial, News.
- `query` (string, required): Search query string. Supports phrases with quotes and boolean operators.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data
- `venue` (string): Filter by publication venue name, e.g. 'Nature', 'NeurIPS', 'ICLR'. Comma-separated for multiple.
- `year` (string): Year filter. Single year '2023' or range '2020-2023'. Also supports open ranges: '2020-' or '-2023'.

### `paper_search_bulk` (~341 tokens)

Bulk-search papers with cursor-based pagination for retrieving large result sets (up to 10M results). Returns a continuation token to fetch subsequent pages. Use for systematic literature collection.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `fieldsOfStudy` (string): Fields of study, comma-separated.
- `limit` (integer): Results per page (1-1000, default: 100).
- `minCitationCount` (integer): Minimum citation count.
- `openAccessPdf` (boolean): Only open access papers.
- `publicationTypes` (string): Publication types, comma-separated.
- `query` (string, required): Search query string.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data
- `sort` (string): Sort order: 'citationCount' (desc), 'publicationDate' (desc), or 'paperId' (asc). Default: relevance.
- `token` (string): Continuation token from a previous bulk search response to get next page.
- `venue` (string): Venue filter, comma-separated.
- `year` (string): Year filter, e.g. '2020' or '2018-2023'.

### `paper_match` (~181 tokens)

Find the single best paper matching a given title string. Useful for resolving a known paper title to its Semantic Scholar ID and metadata. More precise than keyword search when you know the exact title.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `query` (string, required): The paper title to match.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `paper_autocomplete` (~83 tokens)

Autocomplete a partial paper title, returning up to 10 suggestions. Use for title disambiguation or quick lookup of papers by partial title.

Input parameters:

- `query` (string, required): Partial paper title to autocomplete (max 100 characters).
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `paper_get` (~237 tokens)

Retrieve full details for a single paper by its identifier. Returns title, abstract, authors, venue, year, citation counts, external IDs, open access PDF link, and more.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `paper_id` (string, required): Paper identifier. Accepts: bare S2 Paper ID (40-char hash), DOI:10.xxxx/xxxx, ARXIV:xxxx.xxxx, PMID:nnnnn, PMCID:PMCnnnnn, MAG:nnnnn, ACL:xxx, CorpusId:nnnnn
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `paper_batch` (~188 tokens)

Retrieve details for multiple papers in a single request (up to 500). More efficient than calling paper_get repeatedly. Pass a list of paper IDs in any supported format.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `paper_ids` (array, required): List of paper IDs to retrieve (1-500). Supports all ID formats.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `paper_citations` (~270 tokens)

Get papers that cite a given paper (forward citations / 'cited by'). Shows which papers reference this work, with influential citation annotations and citation context snippets.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `limit` (integer): Number of results to return (1-100, default: 10)
- `offset` (integer): Offset for pagination (default: 0)
- `paper_id` (string, required): Paper identifier. Accepts: bare S2 Paper ID (40-char hash), DOI:10.xxxx/xxxx, ARXIV:xxxx.xxxx, PMID:nnnnn, PMCID:PMCnnnnn, MAG:nnnnn, ACL:xxx, CorpusId:nnnnn
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `paper_references` (~263 tokens)

Get papers cited by a given paper (its bibliography / reference list). Shows what this paper references, with influential citation annotations.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `limit` (integer): Number of results to return (1-100, default: 10)
- `offset` (integer): Offset for pagination (default: 0)
- `paper_id` (string, required): Paper identifier. Accepts: bare S2 Paper ID (40-char hash), DOI:10.xxxx/xxxx, ARXIV:xxxx.xxxx, PMID:nnnnn, PMCID:PMCnnnnn, MAG:nnnnn, ACL:xxx, CorpusId:nnnnn
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `paper_authors` (~265 tokens)

Get the list of authors for a specific paper with author-level details (affiliations, h-index, paper count, citation count).

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `limit` (integer): Number of results to return (1-100, default: 10)
- `offset` (integer): Offset for pagination (default: 0)
- `paper_id` (string, required): Paper identifier. Accepts: bare S2 Paper ID (40-char hash), DOI:10.xxxx/xxxx, ARXIV:xxxx.xxxx, PMID:nnnnn, PMCID:PMCnnnnn, MAG:nnnnn, ACL:xxx, CorpusId:nnnnn
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `author_get` (~180 tokens)

Retrieve full profile for a Semantic Scholar author. Returns name, affiliations, homepage, h-index, paper count, and citation count.

Input parameters:

- `author_id` (string, required): Semantic Scholar Author ID (numeric string, e.g. '1741101')
- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `author_batch` (~176 tokens)

Retrieve profiles for multiple authors in a single request (up to 1000). More efficient than calling author_get repeatedly.

Input parameters:

- `author_ids` (array, required): List of Semantic Scholar Author IDs to retrieve (1-1000).
- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `author_search` (~198 tokens)

Search for authors by name. Returns matching author profiles with h-index, paper count, and affiliation.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `limit` (integer): Number of results to return (1-100, default: 10)
- `offset` (integer): Offset for pagination (default: 0)
- `query` (string, required): Author name search query.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `author_papers` (~219 tokens)

Get all papers published by a specific author, paginated. Returns the author's publication list with title, year, venue, and citation counts.

Input parameters:

- `author_id` (string, required): Semantic Scholar Author ID (numeric string, e.g. '1741101')
- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `limit` (integer): Number of results to return (1-100, default: 10)
- `offset` (integer): Offset for pagination (default: 0)
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `recommendations_for_paper` (~295 tokens)

Get papers recommended as similar or related to a given paper, using Semantic Scholar's machine learning recommendation engine. Choose 'recent' pool for latest papers or 'all-cs' for all Computer Science papers.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `from` (string): Recommendation pool: 'recent' for recently added papers (default), 'all-cs' for all Computer Science papers.
- `limit` (integer): Number of recommendations to return (1-500, default: 10).
- `paper_id` (string, required): Paper identifier. Accepts: bare S2 Paper ID (40-char hash), DOI:10.xxxx/xxxx, ARXIV:xxxx.xxxx, PMID:nnnnn, PMCID:PMCnnnnn, MAG:nnnnn, ACL:xxx, CorpusId:nnnnn
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `recommendations_from_lists` (~258 tokens)

Get paper recommendations based on a list of positive example papers (papers you like) and optional negative examples (papers to avoid). Useful for discovering papers in a specific research niche or building a reading list.

Input parameters:

- `fields` (string): Comma-separated fields to return, overriding defaults. Paper fields: paperId, title, abstract, authors, year, citationCount, referenceCount, influentialCitationCount, isOpenAccess, openAccessPdf, fie…
- `limit` (integer): Number of recommendations to return (1-500, default: 10).
- `negative_paper_ids` (array): Optional list of paper IDs to steer away from (0-100). These are used as negative examples.
- `positive_paper_ids` (array, required): List of paper IDs the user finds relevant/interesting (1-100). These are used as positive examples for the recommendation engine.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

### `snippet_search` (~164 tokens)

Search for text snippets from within paper bodies (not just titles and abstracts). Returns matching text passages with section labels and the papers they come from. Useful for finding papers that discuss specific methods, datasets, or concepts in detail.

Input parameters:

- `fields` (string): Comma-separated paper fields to include with each snippet. E.g. 'paperId,title,year,authors,url,citationCount'. Default includes paperId, title, year, authors, url.
- `limit` (integer): Number of snippet results to return (1-1000, default: 10).
- `query` (string, required): Text to search for within paper bodies.
- `response_format` (string): Output format: 'markdown' for human-readable text (default), 'json' for raw structured data

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/smaboundless-semanticscholar/semanticscholar-mcp-server#diagnostics

## Score history

- 2026-08-03: 61
- 2026-08-02: 64
- 2026-08-01: 13
- 2026-07-31: 18
- 2026-07-30: 18
- 2026-07-28: 36
- 2026-07-27: 36

## Links

- npm package: https://www.npmjs.com/package/semanticscholar-mcp-server
- Socket report: https://socket.dev/npm/package/semanticscholar-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/smaboundless-semanticscholar/semanticscholar-mcp-server/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/smaboundless-semanticscholar/semanticscholar-mcp-server/changelog.json
- HTML version of this page: https://verifymcp.io/servers/smaboundless-semanticscholar/semanticscholar-mcp-server
