scopus-mcp
Read-only access to Elsevier Scopus academic literature: search, retrieve, and analyze papers, authors, affiliations, and citations.
Search papers with Scopus Boolean query syntax (TITLE-ABS-KEY, AUTH, AFFIL, PUBYEAR, DOCTYPE), paginated up to 25 per page.
Search authors by name, ORCID, or affiliation ID, and search affiliations/institutions.
Retrieve full paper details (abstract, authors, keywords, subject areas, citation count, open access) by Scopus ID, DOI, EID, or PubMed ID.
Batch-fetch abstracts for up to 25 identifiers of the same type, returning per-item success/error in input order.
Get author profiles with h-index, citation count, document count, ORCID, and subject areas.
Get citation counts and year-by-year citation timelines for a paper.
Retrieve a paper's references/bibliography (paginated, with fallback views).
Find citing documents for a paper (paginated).
Aggregate a bounded search corpus (up to 5,000 documents) by year, publication, and affiliation, with explicit truncation/unknown metadata reporting.
Diagnose API access with a live 7-request endpoint check (uses quota, bypasses cache).
Supporting context: resources for search syntax, subject areas, and API reference; prompts for literature review, author impact, and research trend workflows.
All operations are read-only, idempotent, and non-destructive; results include retrieval timestamps and completeness flags.
Provides tools to search and retrieve academic papers, author profiles, and citation data from the Scopus database.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@scopus-mcp search for papers on machine learning in cancer from 2020"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scopus 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-shellClose and reopen your terminal so the PATH change takes effect. Then:
scopus setup
scopus check
scopus search 'TITLE-ABS-KEY("machine learning")' --count 5setup 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 |
| |
Run |
| |
Use Python and pip | Virtual-environment executable | |
Run or install a downloaded folder |
| |
Develop or modify the code |
|
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 -emacOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | shReopen the terminal, then verify:
uv --version
uvx --versionAlternative 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 checkThe 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 --helpB. 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-shellReopen your terminal. These commands should now work from any folder:
scopus --help
scopus setup
scopus checkTo reinstall this distribution explicitly:
uv tool install --reinstall josetra-scopus-mcpLocate 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-mcpC. 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 checkUse 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 checkCheck 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 checkmacOS / Linux
uvx --from "/absolute/path/to/scopus-mcp" scopus setup
uvx --from "/absolute/path/to/scopus-mcp" scopus checkTo install that folder on PATH instead:
uv tool install --editable "/absolute/path/to/scopus-mcp"
uv tool update-shellOn 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-shellOr 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 checkNo 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 --helpAPI key setup
After installing, use scopus setup (or the corresponding uvx/uv run command).
The wizard guides you through:
Entering your Elsevier API key with hidden input.
Optionally entering an institutional token.
Confirming where to save the configuration.
scopus setup --language es
scopus setup --show
scopus setup --checkEnter 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,scopusorscpswithout a subcommand starts the MCP server and waits for input. A quiet terminal is expected. Use--helpfor CLI help,setupfor configuration orcheckfor 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 2020Export 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.jsonGeneral 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 clearData 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 |
| Paginated paper search |
| Paginated author search |
| Paginated institution search |
| Paper by Scopus ID, DOI, EID or PubMed ID |
| Batches of up to 25 identifiers |
| Author profile and available metrics |
| Citation total |
| Citations by year |
| Live endpoint diagnostics |
| Available references from a paper |
| Paginated citing papers |
| 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 |
| Required or saved through setup | Elsevier API key |
| Optional | Institutional token when applicable |
|
| Cache lifetime in seconds; |
|
| Additional attempts, 0–10 |
|
| Cumulative quota/retry wait budget, 0–60 seconds |
|
| 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-mcpSource checkout
git pull --ff-only
uv sync --group devFor 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 |
| Install uv and reopen the terminal. |
| Run |
| Install |
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 |
Missing API key | Run setup under the same account as the MCP client. |
HTTP 401 / 403 | Run |
Saved key appears ignored | Environment variables and the working-directory |
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 buildTests 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.
Available Tools
12 toolsscopus_analyze_resultsARead-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_accessARead-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_abstractARead-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_abstractsARead-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_authorARead-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_countARead-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_overviewARead-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_documentsARead-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_referencesARead-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_searchARead-onlyIdempotent
Search the Scopus academic database for papers using Boolean query syntax.
Common field codes:
TITLE-ABS-KEY(term) — search title, abstract, and keywords (most useful)
TITLE(term) — title only
AUTH(name) — author name, e.g. AUTH("Smith J")
AFFIL(institution) — author affiliation
PUBYEAR > 2020 — filter by publication year
DOCTYPE(ar) — document type: ar=article, re=review, cp=conference paper
Boolean operators: AND, OR, AND NOT Example: TITLE-ABS-KEY("machine learning" AND cancer) AND PUBYEAR > 2020
Read the scopus://search-syntax resource for the full syntax reference.
Inputs: query (required), view, count, start. Returns: query, papers, source, showing, +9 more
scopus_search_affiliationsARead-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_authorsARead-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
Scored across 12 tools
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.
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.
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.
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
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
Scrape, crawl and search the web for AI agents via MCP.
Academic research MCP server for paper search, citation checks, graphs, and deep research.
Search and inspect source-pinned agent skills, plugins and tools through a free public MCP.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides 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.5107 PyPI53MIT
- AlicenseAqualityCmaintenanceEnables 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.3MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to search academic papers and retrieve metadata, abstracts, and available full-text content from Semantic Scholar and Crossref through MCP tools.-
- FlicenseNot gradedqualityAmaintenanceEnables 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.-