# Scopus (npm · scopus-mcp)

Scopus search, author and affiliation profiles, citation data, and PlumX metrics via Elsevier APIs.

- Trust score: 87/100 (high trust)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- npm · `scopus-mcp`: 87/100 (this document), [markdown](https://verifymcp.io/servers/anddrrew-scopus-mcp/scopus-mcp.md), [page](https://verifymcp.io/servers/anddrrew-scopus-mcp/scopus-mcp)

## Channel facts

- Registry: `npm`
- Package: `scopus-mcp`
- Version: `0.5.1`
- 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-11-05.

- **Supply Chain Security**: 100/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 0 of 4 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to Anddrrew/scopus-mcp).
  - 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**: 54/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2480 tokens (~310/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 73/100
  - Stability observed for 22 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 8 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

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

Scopus runs locally as an npm package, launched with npx -y scopus-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 anddrrew-scopus-mcp -- npx -y scopus-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "anddrrew-scopus-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "scopus-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "anddrrew-scopus-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "scopus-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add anddrrew-scopus-mcp -- npx -y scopus-mcp
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add anddrrew-scopus-mcp --command npx --arg -y --arg scopus-mcp
```

### Hermes

```yaml
mcp_servers:
  anddrrew-scopus-mcp:
    command: "npx"
    args: ["-y", "scopus-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "anddrrew-scopus-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "scopus-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add anddrrew-scopus-mcp -t stdio -c npx -a -y scopus-mcp
```

### Other

```json
{
  "mcpServers": {
    "anddrrew-scopus-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "scopus-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-11-03 (score 87, +1)

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

### 2026-11-01 (score 86, +1)

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

### 2026-10-30 (score 85, +1)

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

### 2026-10-28 (score 84, +1)

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

### 2026-10-26 (score 83, +1)

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

### 2026-10-24 (score 82, +1)

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

### 2026-10-22 (score 81, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-10-14 (score 77, +28)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: good
- [functional] First check of Tool coverage: 100
- [functional] First check of Tool coverage: 100

## MCP tools (8)

### `scopus_search` (~497 tokens)

Scopus Search

Search Scopus publications with its native query syntax. Returns one page of the original Elsevier JSON, including search-results, entry and pagination. Example: TITLE-ABS-KEY(machine learning) AND PUBYEAR > 2020. Credentials come from the server environment. Access to views and cursor pagination depends on your Scopus entitlements.

Input parameters:

- `alias` (boolean): Whether author-ID searches include superseded profiles. Omitted values use the API default of true.
- `content`: Scopus content collection to search: all, core, or dummy.
- `count` (integer): Maximum results in this page. Defaults to 25; up to 200 for STANDARD or 25 for COMPLETE/COMPONENT. With field, Elsevier determines the effective view and limit.
- `cursor` (string): Use * for the first cursor page, then search-results.cursor["@next"] from the previous response. Use instead of start; keep the query and other options unchanged.
- `date` (string): Publication year or inclusive year range, e.g. 2024 or 2020-2024.
- `facets` (string): Native facet expression, e.g. pubyear;subjarea(count=10,sort=fd).
- `field` (string): Comma-separated response fields, e.g. identifier,title,doi. Overrides view; omitted fields remain absent in the response.
- `query` (string, required): Native Scopus publication query, e.g. TITLE-ABS-KEY(machine learning) AND PUBYEAR > 2020.
- `reqId` (string): Caller-supplied request identifier for Elsevier support.
- `sort` (string): Up to three comma-separated sort fields; + ascending, - descending, e.g. -coverDate,+creator.
- `start` (integer): Zero-based result offset. Use instead of cursor. The requested window start + count must not exceed 5000; omitted count means 25.
- `subj` (string): Scopus subject area code to filter by, e.g. COMP.
- `suppressNavLinks` (boolean): Suppress top-level navigation links. Omitted values use the API default of false.
- `ver` (string): Resource version flags: facetexpand, allexpand, new; comma or semicolon separated.
- `view`: Response view. Defaults to STANDARD; COMPLETE and COMPONENT require the relevant Scopus entitlements. Overridden by field.

Output parameters:

- `search-results` (object): Native Scopus search response, including page metadata and entries.

### `author_search` (~400 tokens)

Author Search

Search Scopus author profiles using native queries, or supply co-author to find an author’s collaborators. Returns one page of native Elsevier JSON, including search-results and pagination. Example: AUTHLASTNAME(Smith) AND AUTHFIRST(John). Credentials come from the server environment. Access depends on your Scopus entitlements.

Input parameters:

- `alias` (boolean): Whether author-ID searches include superseding profiles. Omitted values use the API default of true.
- `co-author` (string): One numeric Scopus author ID as a string. Returns associated co-authors and takes precedence over query.
- `count` (integer): Maximum results in this page, from 0 to 200. Defaults to 25.
- `facets` (string): Native facet expression, e.g. affilcountry(count=10,sort=fd);active.
- `field` (string): Comma-separated response fields, e.g. identifier,preferred-name. Overrides view; omitted fields remain absent in the response.
- `query` (string): Native author query, e.g. AUTHLASTNAME(Smith) AND AUTHFIRST(John). Required unless co-author is supplied; Elsevier ignores query when both are present.
- `reqId` (string): Caller-supplied request identifier for Elsevier support.
- `sort` (string): Up to three comma-separated sort fields; + ascending, - descending, e.g. -document-count,+surname.
- `start` (integer): Zero-based result offset. The requested window start + count must not exceed 5000; omitted count means 25.
- `suppressNavLinks` (boolean): Suppress top-level navigation links. Omitted values use the API default of false.
- `ver` (string): Resource version flags: facetexpand, subjexpand, allexpand, new; comma or semicolon separated.
- `view` (string): Response view. STANDARD is the default and only supported view; overridden by field.

Output parameters:

- `search-results` (object): Native author search response, including page metadata and entries.

### `affiliation_search` (~322 tokens)

Affiliation Search

Search Scopus institution profiles using native affiliation query syntax. Returns one page of native Elsevier JSON, including search-results and pagination. Example: AFFIL(university) AND AFFIL(London). Credentials come from the server environment. Access depends on your Scopus entitlements.

Input parameters:

- `count` (integer): Maximum results in this page, from 0 to 200. Defaults to 25.
- `facets` (string): Native facet expression, e.g. affilcountry(count=10,sort=fd);affilcity.
- `field` (string): Comma-separated response fields, e.g. identifier,affiliation-name. Overrides view; omitted fields remain absent in the response.
- `query` (string, required): Native affiliation query, e.g. AFFIL(university) AND AFFIL(London).
- `reqId` (string): Caller-supplied request identifier for Elsevier support.
- `sort` (string): Up to three comma-separated sort fields; + ascending, - descending, e.g. -document-count,+affiliation-name.
- `start` (integer): Zero-based result offset. The requested window start + count must not exceed 5000; omitted count means 25.
- `suppressNavLinks` (boolean): Suppress top-level navigation links. Omitted values use the API default of false.
- `ver` (string): Resource version flags: facetexpand, allexpand, new; comma or semicolon separated.
- `view` (string): Response view. STANDARD is the default and only supported view; overridden by field.

Output parameters:

- `search-results` (object): Native affiliation search response, including page metadata and entries.

### `author_retrieval` (~307 tokens)

Author Retrieval

Retrieve Scopus author profiles by author_id, eid, or orcid. Comma-separated author_id or eid values use one native batch request. Returns the original Elsevier JSON; view access depends on entitlements. Pagination and superseded-profile resolution are explicit.

Input parameters:

- `alias` (boolean): Single profiles only: false requests a superseded profile instead of its replacement (API default: true).
- `author_id` (string): Scopus author ID, or comma-separated IDs for one native batch request. Provide exactly one of author_id, eid, orcid.
- `eid` (string): Author electronic ID (EID), or comma-separated EIDs for one native batch request. Use instead of author_id or orcid.
- `field` (string): Comma-separated response fields to include.
- `orcid` (string): One ORCID identifier; comma-separated lists are not accepted. Returns the Scopus author profile. Use instead of author_id or eid.
- `refcount` (integer): Single profiles only: number of related documents to return; API limits depend on service level.
- `reqId` (string): Caller-supplied request identifier for Elsevier support.
- `startref` (integer): Single profiles only: zero-based offset for related documents. No additional pages are fetched automatically.
- `ver` (string): Elsevier resource version.
- `view`: Response view (API default: LIGHT). DOCUMENTS requires a single identifier. Access depends on entitlements.

Output parameters:

- `author-retrieval-response`: Author profile or profiles in Elsevier’s native object, array, or null representation. View-specific and unrecognized fields are preserved.
- `author-retrieval-response-list`: Native batch response envelope. Inspect each profile’s @status for individual outcomes; HTTP success does not imply every author was found.

### `affiliation_retrieval` (~241 tokens)

Affiliation Retrieval

Retrieve a Scopus institution profile by affiliation_id or eid. Returns the original Elsevier JSON, including profile data or one page of related documents/authors when requested through view. Access depends on entitlements; no linked records or additional pages are fetched automatically.

Input parameters:

- `affiliation_id` (string): One Scopus affiliation ID. Provide exactly one of affiliation_id or eid; comma-separated lists are not supported.
- `eid` (string): One affiliation electronic ID (EID). Use instead of affiliation_id; comma-separated lists are not supported.
- `field` (string): Comma-separated response fields to include; unavailable with DOCUMENTS and AUTHORS views.
- `refcount` (integer): Number of related documents or authors to return; API limits depend on service level.
- `reqId` (string): Caller-supplied request identifier for Elsevier support.
- `startref` (integer): Zero-based result offset for related documents or authors. No additional pages are fetched automatically.
- `ver` (string): Elsevier resource version.
- `view`: Response view (API default: LIGHT). DOCUMENTS and AUTHORS return related records. Availability depends on entitlements.

Output parameters:

- `affiliation-retrieval-response`: Affiliation response in Elsevier’s native object, array, or null representation. May contain a profile or related documents/authors according to view; unrecognized fields are preserved.

### `plumx_metrics` (~151 tokens)

PlumX Metrics

Retrieve native PlumX metrics for one publication or artifact by identifier. Returns the original Elsevier JSON, including metric categories, count types and sources. Requires active Scopus access. HTTP 404 can mean that no metrics are available or that the identifier is unknown.

Input parameters:

- `idType` (required): Identifier namespace used to locate the publication or artifact in PlumX.
- `idValue` (string, required): Identifier in the selected namespace, e.g. 10.1103/physrevlett.116.061102 for doi. Supply the original value without URL encoding; a lone . or .. is not allowed.
- `reqId` (string): Caller-supplied request identifier for tracing this request with Elsevier support.

Output parameters:

- `count_categories`: Available PlumX metric categories and their counts; may be absent or null.
- `id_type` (string): Identifier namespace returned by PlumX.
- `id_value` (string): Identifier value returned by PlumX.

### `citation_overview` (~368 tokens)

Citation Overview

Retrieve yearly citation counts and summaries for Scopus documents. Supply one native document identifier type, with comma-separated values for multiple documents. Returns the original Elsevier JSON in one request. Citation Overview access must be enabled for your API key.

Input parameters:

- `author_id` (string): Comma-separated author IDs whose citations should be excluded. Ignored when citation is exclude-books.
- `citation`: Exclude self-citations or book citations; Elsevier includes all citations when omitted.
- `count` (integer): Maximum number of results. Elsevier determines the default and maximum from your API service level.
- `date` (string): Year or inclusive year range for citation counts, e.g. 2024 or 2020-2024.
- `doi` (string): One or more comma-separated DOIs. Supply exactly one document identifier type.
- `field` (string): Comma-separated native response fields to include. Omit to use the full STANDARD view.
- `pii` (string): One or more comma-separated publication item identifiers. Supply exactly one document identifier type.
- `pubmed_id` (string): One or more comma-separated PubMed IDs. Supply exactly one document identifier type.
- `reqId` (string): Caller-supplied request identifier for tracing this request with Elsevier support.
- `scopus_id` (string): One or more comma-separated Scopus document IDs. Supply exactly one document identifier type.
- `sort`: One sort field: sort-year or rowTotal. Prefix with + for ascending or - for descending; no prefix means ascending.
- `start` (integer): Zero-based result offset; Elsevier defaults to zero when omitted.
- `ver` (string): Requested Elsevier resource version.
- `view` (string): Citation Overview supports only the STANDARD view.

Output parameters:

- `abstract-citations-response` (object): Native Elsevier Citation Overview response. Counts and years remain strings; requested fields may be omitted or null.

### `subject_classifications` (~168 tokens)

Scopus Subject Classifications

Retrieve or filter Scopus subject classifications. Returns the original Elsevier JSON, including subject codes, descriptions, details, and abbreviations. Omit filters to list all classifications. This public endpoint does not require an API key.

Input parameters:

- `abbrev` (string): Case-insensitive exact subject abbreviation, e.g. AGRI.
- `code` (string): Exact subject classification code, e.g. 1106.
- `description` (string): Case-insensitive partial match on the primary subject description, e.g. biological.
- `detail` (string): Case-insensitive partial match on the subject detail, e.g. food.
- `field` (string): Comma-separated response fields: code, abbrev, detail, description. Use exact names without spaces; omit to return all fields.

Output parameters:

- `subject-classifications` (object): Native Elsevier subject classification response, including any no-results message.

## Diagnostics

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

## Score history

- 2026-11-05: 87
- 2026-11-04: 87
- 2026-11-03: 87
- 2026-11-02: 86
- 2026-11-01: 86
- 2026-10-31: 85
- 2026-10-30: 85
- 2026-10-29: 84
- 2026-10-28: 84
- 2026-10-27: 83
- 2026-10-26: 83
- 2026-10-25: 82
- 2026-10-24: 82
- 2026-10-23: 81
- 2026-10-22: 81
- 2026-10-21: 77
- 2026-10-20: 77
- 2026-10-19: 77
- 2026-10-18: 77
- 2026-10-17: 77
- 2026-10-16: 77
- 2026-10-15: 77
- 2026-10-14: 77
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-11: 49

## Common questions

### What is the Scopus MCP server?

Scopus is an MCP server listed in the public MCP registry as io.github.Anddrrew/scopus-mcp. Scopus search, author and affiliation profiles, citation data, and PlumX metrics via Elsevier APIs. This page covers its npm package (scopus-mcp).

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

Scopus scores 87 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 Scopus MCP server expose?

Scopus exposes 8 tools: scopus_search, author_search, affiliation_search, author_retrieval, affiliation_retrieval, and 3 more. Their descriptions and schemas cost roughly 2,454 tokens of context every time the server is loaded.

### Is the Scopus MCP server still maintained?

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

### What licence is the Scopus MCP server under?

Scopus declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/scopus-mcp
- Socket report: https://socket.dev/npm/package/scopus-mcp
- Repository: https://github.com/Anddrrew/scopus-mcp
- Changelog RSS feed: https://verifymcp.io/servers/anddrrew-scopus-mcp/scopus-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/anddrrew-scopus-mcp/scopus-mcp.json
- HTML version of this page: https://verifymcp.io/servers/anddrrew-scopus-mcp/scopus-mcp
