Skip to main content
Glama
michalhron

Scopus Plus MCP

by michalhron

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SCOPUS_API_KEYYesYour Elsevier Scopus API key, obtained from the Elsevier Developer Portal (register with your institutional email). Required for Scopus data; OpenAlex needs no key.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_scopusC

Search for documents in Scopus using a query string.

search_allA

Search Scopus (or OpenAlex with source='openalex') and page through results automatically, returning up to max_results entries in one call. Scopus pages hold SCOPUS_PAGE_SIZE records (default 25) and switch to cursor paging beyond 5,000; OpenAlex pages hold 200. Results over 50 records are written to disk as JSON and CSV. Large max_results values consume significant quota — use conservatively.

search_fulltextA

Search the full text of Elsevier (ScienceDirect) journal articles, not just titles and abstracts: finds papers that use a construct in their body without naming it up front. Needs Scopus/ScienceDirect subscriber access; covers Elsevier-published content only. With context=true, the top results' full texts are retrieved to count mentions in the body (separately from the reference list), give their positions through the article, and quote example sentences: how a paper uses the construct, not just that it does. Up to 1000 results; over 50 are written to JSON and CSV.

get_abstract_detailsC

Retrieve full details for a specific document by Scopus ID.

resolve_identifierA

Resolve any document identifier (Scopus ID, EID, DOI, or PII) to the full cross-reference set (scopus_id, eid, doi, pii, title). Use this to obtain a DOI for cross-linking with OpenAlex/Crossref, or to normalize an ID before calling other tools.

search_authorsA

Find authors by name, optionally narrowed by affiliation. Scopus (default, needs subscriber entitlement): author IDs for get_author_profile, document counts, current affiliation, subject areas and name variants, ranked by document count. OpenAlex: OpenAlex author IDs, ORCID, works and citation counts, h-index, institution and topics. Common surnames need an affiliation or given name to be useful.

get_author_profileC

Retrieve an author's profile by Author ID.

get_fulltextA

Retrieve the full text of a paper via a provider waterfall: (1) ScienceDirect full text (requires SCOPUS_INSTTOKEN or institutional IP), (2) open-access copy: every open location in OpenAlex, Semantic Scholar's open PDF and arXiv ID, arXiv by exact title, Europe PMC, and Unpaywall or CORE when configured; published versions first, and the result names the source and version (preprint, accepted manuscript, published), (3) Scopus abstract fallback. Returns provenance, character count, file path, and a ~1500-char sample. Full body is written to disk — never returned inline. ToS note: retrieval is for the user's own non-commercial text-and-data-mining; content written to local disk must not be redistributed.

get_referencesA

Retrieve the cited-reference list of a document (Backward Citations) via the Abstract Retrieval REF view. Complements get_citing_papers, which returns forward citations. Scopus requires an entitled (subscriber) key; source='openalex' does not.

get_citing_papersC

Retrieve a list of papers that have cited the specified document (Forward Citations).

bibliographic_couplingA

Build a bibliographic-coupling graph for a set of seed papers. Two seeds are coupled when they share cited references; edge weight = count of shared references, cosine = Salton index. Maps the current research front. Scopus needs an entitled (subscriber) key for REF-view access; source='openalex' does not. Output: GraphML + CSV edge list written to disk.

co_citationA

Build a co-citation graph for a set of seed papers. Two seeds are co-cited when a later paper cites both; edge weight = count of co-citing papers, cosine = Salton index. Maps the intellectual base of a field. max_citing_per_seed bounds the API quota used per seed. Output: GraphML + CSV edge list written to disk.

citation_lineageA

Walk the citation lineage of a seed paper across multiple generations. Forward: generation 1 = papers that cite the seed; generation 2 = papers that cite those; up to 3 generations. Backward: walks cited references. All papers are deduplicated globally. Output: corpus written to disk as JSON plus compact inline summary; the corpus is also returned inline as base64 so sandboxed callers can inspect it. Use sort='citedby' (default for forward) to collect the most-cited citers first, which gives a meaningful citation-backbone; sort='coverDate' collects the most recent citers first (which can produce a recency-dominated walk). source='openalex' walks OpenAlex instead (no Scopus entitlement; node IDs are OpenAlex work IDs; reference lists are thinner and absent for AIS eLibrary papers). Server version is included in every response.

citation_networkA

Direct-citation network within a set of papers, in one call: fetches every paper's reference list, keeps only the references to other papers in the set, and runs main-path analysis (SPC weights, local and global main path, key routes). Give ids (Scopus IDs/EIDs; with source='openalex', DOIs or OpenAlex IDs) or a query. Completeness: each list is compared with an independent reference count (Crossref, else OpenAlex, else Semantic Scholar; the source is reported per paper); short = fewer than 90% of the comparison count and at least 5 references missing (SCOPUS_COMPLETENESS_RATIO, SCOPUS_COMPLETENESS_MIN_MISSING). Papers whose references could not be loaded or parsed are listed, retried once after rate limits, and the main path is marked provisional while any are missing. Likely duplicate records are listed. Writes JSON, Pajek .net (arcs from cited to citing, SPC weights; Pajek, VOSviewer, Gephi) and an edge CSV. Cost: one reference request per paper (cached). Sets over about 50 papers may return a job ID: poll job_status, then job_result.

resolve_citersA

All papers citing one or more seed papers, found by several search strategies at once and verified. Runs REF() on each seed plus any extra queries (for example a title-phrase query), merges the hits, then checks each hit's own reference list for the seeds. Reports a per-strategy table (hits, confirmed, unconfirmed, verification failed, confirmed citers the strategy missed). With cross_check (default on when scope is given) it also asks OpenAlex and Semantic Scholar which in-scope papers cite the seeds and lists those Scopus misses or cannot confirm, with Scopus's reference count against the external one, so truncated Scopus reference lists become visible. The Scopus result stays Scopus-only. Long runs may return a job ID: poll job_status, then job_result.

citation_contextA

How one paper cites another: the citing sentences, the citation intent (background, methodology, result) and whether Semantic Scholar classes the citation as influential. Evidence for whether a citation edge carries the cited idea or is a passing mention. Up to 50 pairs per call; IDs are DOIs, Scopus IDs or OpenAlex IDs, resolved to Semantic Scholar by DOI, MAG ID, then title and year (the route is reported). Statuses: found, contexts_withheld (the citation is known, its sentences are not), edge_absent_in_s2, citing_paper_unresolved, cited_paper_unresolved. Contexts are cleaned of page headers and citation-free noise and ranked, most informative first. Where Semantic Scholar has no usable sentences, the citing paper's full text is searched instead (context_source: semantic_scholar, fulltext_sciencedirect, fulltext_oa or none).

rpysA

Reference Publication Year Spectroscopy (Marx et al. 2014): counts every cited reference of a set of papers by the year the cited work appeared, subtracts the five-year median, and reports the peak years with the works cited most from each: the set's historical roots. Give ids or a query (e.g. the confirmed citers from resolve_citers). Writes a CSV of the spectrogram and a PNG. Cost: one reference request per paper (cached; shared with citation_network). With source='openalex' the cited works are fetched in batches of 50.

historiographA

Garfield's historiograph: the papers most cited within the set (local citation score) on a time axis, with the citations among them and the global main path highlighted. Complements the main path with the picture readers expect beside it. Give ids or a query. Writes a PNG and a Pajek file; lists the papers with their local and global citation counts.

research_frontsA

Research fronts of a paper set: Louvain communities of its direct-citation network (as in CitNetExplorer), each described by its years, density, core papers (most cited within the set) and the keywords that distinguish it. Also reports which front each paper of the global main path belongs to and where the path hops from one front to another: a main path that stays in one front traces a single conversation, one that hops stitches several together. Give ids or a query. Writes JSON and Pajek .net plus .clu (partition) files. Cost: one reference and one abstract request per paper (cached).

thematic_evolutionA

Themes of a corpus and how they change over time (Cobo et al. 2011; as in bibliometrix's thematic map and thematic evolution). Per period: keyword co-occurrence clusters, each placed in the strategic diagram by Callon centrality and density (motor, basic, niche, emerging or declining); between periods: which themes continue, split, merge, appear or vanish (inclusion index). With construct_terms it follows a construct through the periods: the theme that holds it, where that theme sits, and the keywords it keeps company with, i.e. whether the construct stays central, drifts or dissolves into another. Give ids or a query. Writes JSON, CSV and a PNG of the strategic diagrams. Cost: one abstract request per paper (cached).

path_transmissionA

Transmission audit of a main path: for each consecutive edge (later paper citing the earlier one) it gathers the citing sentences (Semantic Scholar, then the citing paper's full text), Semantic Scholar's intent and influential flags, how many contexts name the construct terms, and whether the citation sits in a list of three or more works. Proposes a draft label per edge (substantive, construct-shifted, hollow, unresolved) with its evidence, and writes a CSV coding sheet with blank columns for two independent coders. Draft labels are heuristics for a human coder to confirm or overturn, not findings: substantive = the citing paper engages the cited work (influential, method/result intent, or two or more non-list contexts) and a context names a construct term in the cited work's own clause; construct-shifted = engages it without naming the construct; hollow = only background or list citations; unresolved = no context sentences from any source.

coding_agreementA

Inter-coder agreement on a coding sheet from path_transmission (or citation_network with edge_contexts) once two coders have filled their columns: Cohen's kappa with a 95% interval and its Landis & Koch reading, agreement per label, the confusion matrix and the disagreeing edges. Also scores the draft labels against each coder and against the coders' consensus, i.e. how far the heuristic can be trusted. Reads .csv (comma, semicolon or tab), as saved from Excel.

check_retractionsA

Retractions, withdrawals, expressions of concern and corrections for a set of papers, from Crossref (which carries the Retraction Watch database). Give DOIs, Scopus IDs, or a corpus_file from import_records. citation_network runs the same check on every network by default.

index_coverageB

Which papers cite the seeds according to Scopus, OpenAlex and Semantic Scholar, under the same journal scope, and how the three sets overlap. Papers are matched by DOI, else by title and year. Makes index coverage a reported property of a study rather than a hidden one. Scopus side: REF() search (not verified; use resolve_citers for that).

publication_countsA

Count publications per year for a query, e.g. to chart how attention to a topic rose and fell. Scopus: your query in Scopus syntax, one request per year, so from_year and to_year are required (at most 60 years). OpenAlex: plain words matched against title and abstract (quote phrases), one request for all years. The two sources count differently; compare trends within one source, not levels across sources.

topic_landscapeA

Where and at what prestige a topic is published. Runs a Scopus query and reports (1) papers per broad subject area over all results, and (2) per subject category, how many papers appear in Q1, Q2, Q3 and Q4 journals of that category, with the main journals. A journal can be Q1 in one category and Q3 in another, so each paper counts in every category of its journal. By default quartiles count journal papers only: proceedings series such as IFAC-PapersOnLine or Procedia CIRP also carry CiteScore ranks, and are reported separately with book series, together with the overall mix of venue types. Large topics are analysed on a sample of max_papers papers (up to 2000): most recent by default, or most cited to see where influential work appears; coverage is stated. Needs Scopus search entitlement.

get_journal_metricsA

Journal metrics for a list of journals, e.g. a litbaskets basket. Scopus (default): SJR, SNIP, CiteScore and CiteScore Tracker with their years, plus subject areas, from the Serial Title API. Give ISSNs, or Scopus source IDs (SRCIDs), which are mapped to ISSNs through one Scopus search each (needs search entitlement). source='openalex': OpenAlex's own measures (2-year mean citedness, h-index, i10-index), ISSNs only, no entitlement. Journals not found are listed, never dropped. Also written to CSV. At most 200 journals per call.

find_journalsA

List the journals in one or more Scopus subject categories at or above a CiteScore percentile within that category: the quality cut-off for scoping a literature review (Q1 = 75, top 10% = 90). Categories are ASJC names or codes, e.g. 'Information Systems' (1710), 'Management Information Systems' (1404); ambiguous names return the candidates. Returns each journal's rank, percentile, quartile and CiteScore, a CSV, and ready-to-use Scopus query fragments SRCID(...) for search_all. Percentiles are from the latest complete CiteScore year.

get_bibtexA

BibTeX entries for a list of papers, written to a .bib file and returned inline. Identifiers may be DOIs, Scopus IDs/EIDs or OpenAlex work IDs. Entries come from the publisher's metadata via DOI content negotiation (errors included, so check author names). Papers without a DOI, such as AIS conference papers, get a minimal entry built from Scopus or OpenAlex metadata, marked with a note. At most 200 identifiers per call.

import_recordsA

Read saved bibliographic exports into one deduplicated corpus file: Scopus CSV, RIS or BibTeX exports and Web of Science plain-text or tab-delimited exports (format detected). Records are merged across files by Scopus ID, WoS ID, DOI, or title and year. With resolve (default true), records without a Scopus ID (e.g. from Web of Science) are matched in Scopus by DOI, then by exact title and year. Returns the corpus file path and the Scopus IDs. Pass the file as corpus_file to citation_network, rpys, historiograph, research_fronts or thematic_evolution to analyse exactly these records again later (thematic_evolution then reads keywords from the file, with no API calls).

diagnose_connectionA

Diagnose Scopus connectivity and entitlement. Checks config presence, api.elsevier.com reachability, metadata and search entitlement, and per-API capabilities (REF-view references, ScienceDirect full text, Serial Title journal metrics). Returns a JSON report with a one-line verdict and 'unavailable_tools', the tools that cannot work with the current access. Run this first when Scopus behaves strangely — especially when valid searches fail with 'Error translating query', which usually means missing subscriber entitlement (off-network without SCOPUS_INSTTOKEN), not bad query syntax.

get_quota_statusA

Get the current API quota status (remaining/limit). Note: Values are updated only after making a request.

get_server_infoA

Return the server version and a health summary. Call this to confirm which build you are talking to.

job_statusB

State of a background job started by a long tool call (citation_network, resolve_citers, ...) that passed the sync budget: running, finished or failed, and its last step.

job_resultC

Output of a finished background job (its status if still running).

Prompts

Interactive templates invoked by user choice

NameDescription
research-summarySearch for papers on a topic and generate a research summary
author-analysisAnalyze an author's research impact and recent work

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 35 tools

Disambiguation4/5

Most tools target clearly distinct bibliometric operations, with descriptions that explain unique workflows. A few boundaries blur, especially job_status vs job_result and citation_lineage vs citation_network vs resolve_citers, but the detailed descriptions usually disambiguate them.

Naming Consistency4/5

Tool names are consistently snake_case and mostly follow predictable verb_noun or resource-oriented phrasing. Minor deviations include acronym-style rpys and several noun-phrase analysis names, but overall the convention is readable and stable.

Tool Count2/5

With 35 tools, the server exceeds the practical threshold where an agent can easily scan and select without overload. Although the domain is broad, many advanced analyses could be grouped or layered behind fewer entry points.

Completeness4/5

The surface covers the research lifecycle well: search, identifier resolution, full-text retrieval, citation analysis, journal metrics, exports, imports, diagnostics, and background jobs. Only minor gaps remain, such as lack of direct document-level metrics or broader export/lifecycle operations, but these are generally workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues