Skip to main content
Glama
scopus-mcp

scopus-mcp

Scopus MCP

Python 3.11+ License: MIT MCP

Search academic literature from your AI assistant or terminal. Find papers, retrieve abstracts, explore citations and export references with Elsevier Scopus. Includes a guided setup, 12 MCP tools and a standalone CLI. Después de inatalar el MCP los agentes pueden conectarse a scopus y acceder a los miles de papers indexados

Quick start · Installation methods · API key setup · Connect your AI assistant · Examples · Troubleshooting

Official package name: josetra-scopus-mcp · CLI commands: scopus, scps, scopus-mcp, josetra-scopus-mcp · Python import: scopus_mcp.

The first PyPI release is being prepared. The PyPI installation commands below work after that release is published; until then, use a GitHub source or local checkout. The unrelated PyPI name scopus-mcp is not this distribution.

Quick start

Install uv, then run:

uv tool install josetra-scopus-mcp
uv tool update-shell

Close and reopen your terminal so the PATH change takes effect. Then:

scopus setup
scopus check
scopus search 'TITLE-ABS-KEY("machine learning")' --count 5

setup asks for your API key without displaying it. Get a key from the Elsevier developer portal. Endpoint access depends on your Elsevier entitlements; a key alone does not guarantee access to every tool.

For Spanish prompts: scopus setup --language es.

Related MCP server: Scopus MCP Server

Installation methods

Choose one method. You do not need to install the package multiple ways.

You want to…

Method

How you run commands

Try it without adding commands to PATH

A. uvx

uvx josetra-scopus-mcp …

Run scopus from any folder

B. Install on PATH

scopus …

Use Python and pip

C. pip

Virtual-environment executable

Run or install a downloaded folder

D. Local path

uvx --from "/path/…" scopus …

Develop or modify the code

E. Source checkout

uv run scopus …

Python 3.11 or newer is required. uv can download a compatible Python when needed. Git is required for git+https://… installs and cloning; a local folder or wheel can be installed without Git.

Windows — PowerShell

winget install --id astral-sh.uv -e

macOS / Linux

curl -LsSf https://astral.sh/uv/install.sh | sh

Reopen the terminal, then verify:

uv --version
uvx --version

Alternative installers are listed in the official uv installation guide.

A. Run with uvx

Run the official PyPI package in an isolated environment, without adding commands to your PATH:

uvx josetra-scopus-mcp --help
uvx josetra-scopus-mcp setup
uvx josetra-scopus-mcp check

The equivalent longer form is uv tool run josetra-scopus-mcp --help. To select the shorter executable explicitly, use uvx --from josetra-scopus-mcp scopus --help. uv caches the tool environment, so it need not download everything each time.

To request the latest published release on a later run:

uvx josetra-scopus-mcp@latest --help

B. Install on your PATH

Recommended for regular terminal use. uv creates an isolated tool environment and exposes the scopus, scps and scopus-mcp commands:

uv tool install josetra-scopus-mcp
uv tool update-shell

Reopen your terminal. These commands should now work from any folder:

scopus --help
scopus setup
scopus check

To reinstall this distribution explicitly:

uv tool install --reinstall josetra-scopus-mcp

Locate the executable directory with uv tool dir --bin. To see which executable your terminal will use:

# Windows — PowerShell
(Get-Command scopus).Source
(Get-Command scopus-mcp).Source
# macOS / Linux
command -v scopus
command -v scopus-mcp

C. Install with pip

Use a virtual environment to keep dependencies separate from your system Python. These examples call its executables directly, so activation is optional.

Windows — PowerShell

py -3.11 -m venv .venv
& .\.venv\Scripts\python.exe -m pip install josetra-scopus-mcp
& .\.venv\Scripts\scopus.exe setup
& .\.venv\Scripts\scopus.exe check

Use your installed Python version if it is newer than 3.11.

macOS / Linux

python3 -m venv .venv
.venv/bin/python -m pip install josetra-scopus-mcp
.venv/bin/scopus setup
.venv/bin/scopus check

Check python3 --version first; it must be at least 3.11. To use scopus without its path, activate the environment in each terminal, or choose method B for a persistent PATH installation. MCP clients should use the absolute path to this environment's scopus-mcp executable.

D. Use a local folder

Already cloned or downloaded this repository? Point uv directly to the folder containing pyproject.toml. Quote paths containing spaces.

Windows — PowerShell

uvx --from "C:/Projects/scopus-mcp" scopus setup
uvx --from "C:/Projects/scopus-mcp" scopus check

macOS / Linux

uvx --from "/absolute/path/to/scopus-mcp" scopus setup
uvx --from "/absolute/path/to/scopus-mcp" scopus check

To install that folder on PATH instead:

uv tool install --editable "/absolute/path/to/scopus-mcp"
uv tool update-shell

On Windows, replace the path with C:/Projects/scopus-mcp. Reopen the terminal, then run scopus --help. An editable installation reads your local source; keep the folder in place. If replacing an existing tool installation, add --reinstall explicitly.

E. Work from source

To install from GitHub before the first PyPI release (Git required):

uv tool install --from git+https://github.com/JOSETRA44/scopus-mcp.git josetra-scopus-mcp
uv tool update-shell

Or clone the repository for development:

git clone https://github.com/JOSETRA44/scopus-mcp.git
cd scopus-mcp
uv sync --group dev
uv run scopus setup
uv run scopus check

No PATH installation is needed: prefix commands with uv run while inside the repository. From another folder, use an absolute directory:

uv --directory "/absolute/path/to/scopus-mcp" run scopus --help

API key setup

After installing, use scopus setup (or the corresponding uvx/uv run command). The wizard guides you through:

  1. Entering your Elsevier API key with hidden input.

  2. Optionally entering an institutional token.

  3. Confirming where to save the configuration.

scopus setup --language es
scopus setup --show
scopus setup --check

Enter preserves an existing value; - removes a saved institutional token. Ctrl+C cancels. --show displays status and path, never credentials. --check tests the saved credentials after saving and consumes API quota.

Configuration is stored for your operating-system account and works across folders. The file is plaintext with restricted permissions, not an encrypted vault. Environment variables override the working-directory .env, which in turn overrides the saved user configuration.

For containers or automation, supply SCOPUS_API_KEY and, if applicable, SCOPUS_INST_TOKEN through the environment. To save those values explicitly, use scopus setup --from-env; add --force to replace an existing saved file. A container or another operating-system user does not automatically inherit your saved local configuration.

Connect your AI assistant

First run setup using the same source and account that the client will use. Then add one of the following server definitions in your client's MCP settings.

Run directly with uvx

For clients using mcpServers, such as Claude Desktop or Cursor:

{
  "mcpServers": {
    "scopus": {
      "command": "uvx",
      "args": ["josetra-scopus-mcp"]
    }
  }
}

Use an installed executable

If you installed on PATH, use "command": "scopus-mcp" with "args": []. If the desktop app does not inherit your shell's PATH, use the absolute executable path reported by Get-Command scopus-mcp or command -v scopus-mcp.

For a pip virtual environment, a Windows example is:

{
  "mcpServers": {
    "scopus": {
      "command": "C:/Projects/scopus-mcp/.venv/Scripts/scopus-mcp.exe",
      "args": []
    }
  }
}

Replace the example path with your actual environment. On macOS/Linux it ends in .venv/bin/scopus-mcp. Forward slashes in Windows JSON paths avoid escaping backslashes.

Run a local checkout

{
  "mcpServers": {
    "scopus": {
      "command": "uv",
      "args": ["--directory", "C:/Projects/scopus-mcp", "run", "scopus-mcp"]
    }
  }
}

Replace the directory with your absolute path. This also works on macOS/Linux.

VS Code

In .vscode/mcp.json, use the servers wrapper and stdio transport:

{
  "servers": {
    "scopus": {
      "type": "stdio",
      "command": "uvx",
      "args": ["josetra-scopus-mcp"]
    }
  }
}

Restart or reconnect the MCP server in your client. Confirm that it lists the Scopus tools, then ask: “Find five papers about machine learning in medicine.”

Running scopus-mcp, scopus or scps without a subcommand starts the MCP server and waits for input. A quiet terminal is expected. Use --help for CLI help, setup for configuration or check for diagnostics.

Examples

These examples assume a PATH installation; otherwise add your uvx or uv run prefix.

scopus search 'TITLE-ABS-KEY("machine learning")' --count 5
scopus abstract 10.1038/nature14539 --type doi -f json
scopus search-authors 'AUTHLASTNAME(Smith)' --start 25
scopus author 7401234567
scopus citation-count --doi 10.1038/nature14539
scopus citations 85180904906 --start-year 2020

Export references or keep a reproducible search record:

scopus search 'TITLE-ABS-KEY(biodiversity)' --all --max 500 -f ris -o papers.ris --record search-record.json
scopus abstract 10.1038/nature14539 --type doi -f bibtex -o paper.bib
scopus search 'AU-ID(7401234567)' -f csl-json -o papers.json

General formats: table, json, jsonl, csv, md. Paper search and abstract retrieval also support ris, bibtex, csl-json. Search records can have incomplete author metadata; retrieve individual abstracts for richer exports.

--all retrieves up to --max and the implemented 5,000-record offset window. Check complete_corpus, truncated and stop_reason before treating results as complete. Missing metrics remain null, not zero. JSON preserves original retrieval timestamps separately from the time it was served; --record saves query and completeness metadata without credentials.

scopus describe --json          # Command and output-schema discovery
scopus cache stats -f json
scopus cache clear

Data goes to stdout; notes go to stderr. --json aliases -f json.

Exit code

Meaning

0

Successful operation, including empty results

1

API/unexpected response

2

Usage error or interrupted operation

3

Resource not found

4

Authentication/configuration error

5

Quota/rate limit

6

Network failure or timeout

MCP tools and resources

Tool

Purpose

scopus_search

Paginated paper search

scopus_search_authors

Paginated author search

scopus_search_affiliations

Paginated institution search

scopus_get_abstract

Paper by Scopus ID, DOI, EID or PubMed ID

scopus_get_abstracts

Batches of up to 25 identifiers

scopus_get_author

Author profile and available metrics

scopus_get_citation_count

Citation total

scopus_get_citations_overview

Citations by year

scopus_check_access

Live endpoint diagnostics

scopus_get_references

Available references from a paper

scopus_get_citing_documents

Paginated citing papers

scopus_analyze_results

Aggregates over a bounded retrieved corpus

Resources: scopus://search-syntax, scopus://subject-areas, scopus://api-reference. Prompts: systematic_literature_review, author_impact_analysis, research_trend_query. Prompts are workflow templates; corpus aggregates describe retrieved documents, not necessarily all matching literature.

Configuration reference

Variable

Default

Purpose

SCOPUS_API_KEY

Required or saved through setup

Elsevier API key

SCOPUS_INST_TOKEN

Optional

Institutional token when applicable

SCOPUS_CACHE_TTL

300

Cache lifetime in seconds; 0 disables caching

SCOPUS_MAX_RETRIES

3

Additional attempts, 0–10

SCOPUS_MAX_WAIT_SECONDS

10

Cumulative quota/retry wait budget, 0–60 seconds

LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR or CRITICAL

Quotas are tracked per API family and depend on your entitlement. Large reset delays return an error rather than waiting for days. See Elsevier's access and quota guidance.

Update or uninstall

PyPI installation on PATH

uv tool upgrade josetra-scopus-mcp

Source checkout

git pull --ff-only
uv sync --group dev

For pip, run python -m pip install --upgrade josetra-scopus-mcp with the same environment's Python. Restart running MCP clients after updating. For repeatable deployments, replace the Git source with git+https://github.com/JOSETRA44/scopus-mcp.git@COMMIT_SHA, using the full commit you intend to install.

Uninstall a uv tool with uv tool uninstall josetra-scopus-mcp. For pip, use the same virtual environment's Python: python -m pip uninstall josetra-scopus-mcp. Uninstalling the package does not remove your saved credentials; locate them with scopus setup --show before uninstalling if you also want to remove them.

Troubleshooting

Symptom

What to do

uv / uvx not found

Install uv and reopen the terminal.

scopus not found after a uv install

Run uv tool update-shell, reopen the terminal and inspect uv tool dir --bin.

setup is missing or tool names differ

Install josetra-scopus-mcp; the PyPI package named scopus-mcp is a different project.

MCP client cannot find the command

Use the absolute executable path; desktop apps may have a different PATH.

Terminal appears to wait forever

No subcommand starts MCP stdio. Use scopus --help for terminal use.

Missing API key

Run setup under the same account as the MCP client.

HTTP 401 / 403

Run scopus check; verify credentials and endpoint entitlement with Elsevier or your institution.

Saved key appears ignored

Environment variables and the working-directory .env override saved configuration.

Hidden input is unavailable

Run setup in an interactive terminal or inject credentials through the environment.

Windows reports an executable is in use during update

Stop that MCP server in its client, update, then restart it.

Development

From a source checkout:

uv run pytest
uv run ruff check src tests
uv run mypy
uv run python -m build

Tests use fake credentials and mocked HTTP. CI is configured for Windows/Linux and Python 3.11/3.13, including MCP transport and package installation checks. See CHANGELOG.md, IMPLEMENTATION.md and the PyPI release guide.

MIT license · Report an issue

Available Tools

12 tools
scopus_analyze_resultsA
Read-onlyIdempotent

Aggregate a bounded Scopus search corpus by cover year, publication source and affiliation. Defaults to 100 documents; at most 5000. Reports truncation, continuation and unknown metadata explicitly. Counts describe retrieved documents only; do not extrapolate to all literature. Each institution counts once per document.

Inputs: query (required), view, start, max_rows. Returns: view, query, source, by_year, +17 more

scopus_check_accessA
Read-only

Test each Scopus endpoint independently using seven live requests. Uses API quota; bypasses cache. Never returns credentials. Run when access is uncertain, not before every search.

Inputs: no named parameters. Returns: note, checked_at, rate_limits, capabilities

scopus_get_abstractA
Read-onlyIdempotent

Retrieve full paper details from Scopus using any supported identifier.

Identifier types:

  • scopus_id — Scopus internal numeric ID (e.g. "85123456789")

  • doi — Digital Object Identifier (e.g. "10.1016/j.labeco.2024.102505")

  • eid — Electronic ID (e.g. "2-s2.0-85123456789")

  • pubmed_id — PubMed/MEDLINE numeric ID

Returns: title, full abstract, authors with affiliations, keywords, subject areas, citation count, DOI, and open access status.

Inputs: identifier (required), identifier_type (required). Returns: doi, title, source, authors, +11 more

scopus_get_abstractsA
Read-onlyIdempotent

Fetch metadata/abstracts for 1–25 identifiers of the same type. Returns each record or its error in input order; access depends on Elsevier entitlements.

Inputs: identifiers (required), identifier_type (required), concurrency. Returns: failed, source, results, served_at, +2 more

scopus_get_authorA
Read-onlyIdempotent

Retrieve a researcher's full Scopus profile by their Scopus Author ID.

Returns: h-index, total citation count, document count, current institutional affiliation, subject areas, ORCID (if available), and publication year range.

To find an author's ID, first use scopus_search_authors. Example author IDs: '7401234567' or '57209123456'.

Inputs: author_id (required). Returns: name, orcid, source, h_index, +7 more

scopus_get_citation_countA
Read-onlyIdempotent

Get the current total citation count for a paper.

Provide either a Scopus ID or a DOI — at least one is required. This endpoint is lightweight and cached; use it for quick citation lookups without fetching the full abstract.

Inputs: doi, scopus_id. Returns: doi, source, scopus_id, served_at, +3 more

scopus_get_citations_overviewA
Read-onlyIdempotent

Get a year-by-year citation timeline for a paper.

Returns how many times the paper was cited in each calendar year within the specified date range. Useful for tracking research impact and citation trends over time.

Requires a Scopus ID. Use scopus_search or scopus_get_abstract first to obtain the scopus_id.

Prefer scopus_get_citation_count when you only need one total - it is a single cheap lookup. Use this when the shape of the citation curve over time matters.

Access depends on your Elsevier endpoint entitlement. An institutional token or approved network may be required; use scopus_check_access to diagnose access before retrying authorization failures.

Inputs: scopus_id (required), end_year, start_year. Returns: source, served_at, retrieved_at, total_citations, +1 more

scopus_get_citing_documentsA
Read-onlyIdempotent

Find Scopus documents citing a paper using REFEID. This search field requires specific Elsevier access permission. Returns a paginated corpus of indexed citing documents, not a universal citation census.

Inputs: scopus_id (required), count, start. Returns: query, papers, source, showing, +11 more

scopus_get_referencesA
Read-onlyIdempotent

Retrieve one page of a paper's bibliography using Elsevier REF view, with FULL bibliography fallback when REF metadata is absent. Requires appropriate entitlement. Missing references are reported as unavailable, never assumed to mean no references. Follow next_start when present.

Inputs: identifier (required), count, start, identifier_type. Returns: view, source, showing, truncated, +8 more

scopus_search_affiliationsA
Read-onlyIdempotent

Search for institution and affiliation records in Scopus.

Query examples:

  • AFFIL(MIT) — by name keyword

  • AFFIL(Harvard) AND COUNTRY(United States)

  • AFFIL-ID(60027950) — by Scopus affiliation ID

Returns affiliation_id needed for author searches and filtering.

Inputs: query (required), count, start. Returns: query, source, showing, served_at, +9 more

scopus_search_authorsA
Read-onlyIdempotent

Search for author profiles in the Scopus author index.

Query field codes:

  • AUTHLASTNAME(Smith) — last name

  • AUTHFIRST(John) — first name or initials

  • ORCID(0000-0002-1234-5678) — ORCID identifier

  • AF-ID(60027950) — affiliation ID

Example: AUTHLASTNAME(Smith) AND AUTHFIRST(J) AND AFFIL(MIT)

Use scopus_get_author with the returned author_id to fetch full metrics.

Inputs: query (required), count, start. Returns: query, source, authors, showing, +9 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 12 tools

    Disambiguation4/5

    Each tool has a clearly distinct scope: search vs. retrieve vs. citation-graph vs. aggregate analysis. The only risky pairs are scopus_get_abstract vs. scopus_get_abstracts (singular/plural distinguished mostly by the batch size mentioned in the description) and scopus_get_citation_count vs. scopus_get_citations_overview, but the descriptions explicitly state when to prefer which, so an agent can disambiguate.

    Naming Consistency5/5

    All twelve tools share a single scopus_ prefix followed by a snake_case verb_noun pattern (search_authors, get_abstract, get_citations_overview, analyze_results). No camelCase or verb-style mixing; the singular/plural distinction is the only naming subtlety and it is deliberate.

    Tool Count5/5

    Twelve tools is well within the sweet spot and each maps to a genuine Elsevier/SCOPUS capability (paper search, author index, affiliation index, retrieval, citation metrics, reference graph, aggregation, access diagnostics). Nothing looks like filler or a redundant alias.

    Completeness4/5

    The surface covers the full research workflow: discovery (papers, authors, affiliations), detail retrieval (single and batch abstracts, author profiles), citation graph (count, timeline, references, citing documents), analysis, and access troubleshooting. Minor gaps: there is no get_affiliation detail tool despite affiliation_id being returned by search, and no direct lookup by ISSN/source title, but agents can work around both via scopus_search.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    • Rivul is a free, read-only remote MCP server for searching scholarly literature. It runs semantic search over more than 300 million paper records from a dated OpenAlex snapshot, so an agent can find papers by meaning rather than exact keywords, then open the full record for any result. Tools: - search_papers: semantic search with optional filters for publication year range, minimum citation count, open access only, topic and field. Sort by relevance, most cited, newest or oldest. - get_paper_details: the full record for one work by its OpenAlex ID: title, every author, venue, work type, topic, field, publication date, citation count, DOI and open-access links. - usage_status: the workspace's MCP usage for the current day. Results come only from the index, never from a model. Each result carries a stable OpenAlex ID so the source can be checked, and every response states the snapshot date. Useful for literature reviews, scoping reviews, finding highly cited or open-access papers on a topic, citation chasing, and checking that a cited paper exists. Free for every account, with no plans or payment. Sign in with Google through OAuth 2.1 (PKCE, dynamic client registration), or use an MCP key from rivul.ai. Endpoint: https://rivul.ai/mcp (Streamable HTTP). Setup and docs: https://rivul.ai/features/atlas

      https://rivul.ai/mcp
    • Scrape, crawl and search the web for AI agents via MCP.

      https://mcp.messora.dev/mcp
    • Academic research MCP server for paper search, citation checks, graphs, and deep research.

      https://doxa.papersflow.ai/mcp
    • Search and inspect source-pinned agent skills, plugins and tools through a free public MCP.

      https://skills.maqamagent.com/mcp

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Provides access to the Elsevier Scopus API, enabling AI assistants to search for academic papers, retrieve detailed abstracts, and look up author profiles. It facilitates bibliometric research and scholarly data analysis through natural language commands.
      5
      107 PyPI
      53
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables MCP clients to search for published academic articles and retrieve detailed metadata, abstracts, citation counts, and related information from the Elsevier Scopus API. Supports citation verification and writing-style analysis grounded in peer-reviewed sources.
      3
      MIT
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables LLMs and compatible clients to search academic papers, retrieve detailed metadata and abstracts, access full-text content when available, and perform topic searches with optional date filters via MCP tools.
      -