Skip to main content
Glama
JOSETRA44

scopus-mcp

MCP Badge License: MIT Python 3.11+ MCP

Scopus MCP Server

Connects any MCP-compatible AI agent to the Elsevier Scopus academic database — search 100+ million scholarly records, retrieve full abstracts, analyze author impact, and track citation trends.

Works with: Claude Desktop · Claude Code · Cursor · VS Code Copilot · Windsurf · Zed · Continue.dev · any MCP client


Quickstart (2 minutes)

1. Get your Scopus API key (free) at dev.elsevier.com → Register → Create API Key

2. Install and run — pick one method:

# Option A: uvx (recommended — no environment setup needed)
uvx scopus-mcp

# Option B: pip
pip install scopus-mcp
scopus-mcp

3. Add to your AI client — see the Configuration section below.


Related MCP server: MCP-scopus

Prerequisites

Python 3.11+

python --version   # needs 3.11 or higher
# Install if missing: https://python.org/downloads
# Windows
winget install astral-sh.uv

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

Installation

Option A — uvx (zero configuration)

# Install and run in a single command
uvx scopus-mcp

# Upgrade later
uv tool upgrade scopus-mcp

Option B — pip

pip install scopus-mcp

# Verify installation
scopus-mcp --help

Option C — From source (development)

git clone https://github.com/JOSETRA44/scopus-mcp.git
cd scopus-mcp
uv sync                    # installs all dependencies
cp .env.example .env       # edit .env with your API key
uv run scopus-mcp          # run directly from source

Terminal CLI

Besides running as an MCP server, scopus-mcp also installs three equivalent commands — scopus-mcp, scopus, and the short alias scps — as a standalone command-line tool for one-off lookups, testing your API key, or scripting, no MCP client required.

# Install globally as a uv tool (adds scopus / scps / scopus-mcp to PATH)
uv tool install --editable /path/to/scopus-mcp

scopus --help                 # list all subcommands
scopus check                  # validate your API key live against each endpoint
scopus search 'TITLE-ABS-KEY("machine learning")' --count 5
scps abstract 85180904906 --type scopus_id
scopus author 7401234567
scopus search-authors "AUTHLASTNAME(Smith)"
scopus search-affiliations "AFFIL(MIT)"
scopus citation-count --doi 10.1016/j.cell.2023.01.001
scopus citations 85180904906 --start-year 2020 --end-year 2024

Add --json to any subcommand for raw structured output (useful for piping into jq or scripts).

Running any of the three commands with no subcommand starts the MCP stdio server instead — the mode MCP clients (Claude Desktop, Claude Code, etc.) use. It will sit waiting for input on stdin; that's expected, not a hang.

Subcommand

Equivalent MCP tool

search <query>

scopus_search

abstract <id> --type ...

scopus_get_abstract

author <author_id>

scopus_get_author

search-authors <query>

scopus_search_authors

search-affiliations <query>

scopus_search_affiliations

citation-count --scopus-id/--doi

scopus_get_citation_count

citations <scopus_id>

scopus_get_citations_overview

check

(CLI-only) diagnostic — live-checks your key against every endpoint


Environment Variables

Variable

Required

Default

Description

SCOPUS_API_KEY

Yes

Your Elsevier API key

SCOPUS_INST_TOKEN

No

Institutional token (for off-campus / full-text access)

SCOPUS_CACHE_TTL

No

300

Response cache duration in seconds (0 = disabled)

SCOPUS_MAX_RETRIES

No

3

Retries on rate-limit errors (HTTP 429)

LOG_LEVEL

No

INFO

Verbosity: DEBUG · INFO · WARNING · ERROR

Using a .env file? Copy .env.example.env and fill in your key. Never commit it.


Configuration by Client

Replace YOUR_API_KEY_HERE with your actual Elsevier API key in every config block below.

Claude Desktop

Config file:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "scopus": {
      "command": "uvx",
      "args": ["scopus-mcp"],
      "env": {
        "SCOPUS_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Restart Claude Desktop after saving. A hammer icon (🔨) in the input bar confirms tools are loaded.

Claude Code (CLI)

Add to your project's .mcp.json (or .antigravity.json):

{
  "mcpServers": {
    "scopus": {
      "command": "uvx",
      "args": ["scopus-mcp"],
      "env": {
        "SCOPUS_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

From source (local development):

{
  "mcpServers": {
    "scopus": {
      "command": "uv",
      "args": [
        "--directory", "/absolute/path/to/scopus-mcp",
        "run", "scopus-mcp"
      ],
      "env": {
        "SCOPUS_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Run /mcp in the Claude Code prompt to verify — you should see scopus with 7 tools.

Cursor

Global config: %APPDATA%\Cursor\User\globalStorage\cursor.mcp\mcp.json (Windows)

{
  "mcpServers": {
    "scopus": {
      "command": "uvx",
      "args": ["scopus-mcp"],
      "env": {
        "SCOPUS_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

VS Code + GitHub Copilot

Create .vscode/mcp.json in your workspace:

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

Windsurf

Config: %APPDATA%\Codeium\windsurf\mcp_config.json (Windows)

{
  "mcpServers": {
    "scopus": {
      "command": "uvx",
      "args": ["scopus-mcp"],
      "env": {
        "SCOPUS_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Zed

Edit ~/.config/zed/settings.json:

{
  "context_servers": {
    "scopus": {
      "command": {
        "path": "uvx",
        "args": ["scopus-mcp"],
        "env": {
          "SCOPUS_API_KEY": "YOUR_API_KEY_HERE"
        }
      }
    }
  }
}

Continue.dev

Edit .continue/config.yaml:

mcpServers:
  - name: scopus
    command: uvx
    args:
      - scopus-mcp
    env:
      SCOPUS_API_KEY: "YOUR_API_KEY_HERE"

Generic stdio (any MCP client)

command:  uvx
args:     ["scopus-mcp"]
env:      SCOPUS_API_KEY=YOUR_API_KEY_HERE

Automated Setup Script

# Interactive setup (auto-detects installed clients)
python setup_mcp.py

# Non-interactive
python setup_mcp.py --key YOUR_API_KEY_HERE --yes

# Dry-run preview
python setup_mcp.py --key YOUR_API_KEY_HERE --dry-run --yes

Available Tools (7)

Tool

Description

scopus_search

Search papers with Boolean queries — TITLE-ABS-KEY, AUTH, AFFIL, PUBYEAR, DOCTYPE…

scopus_get_abstract

Full paper record by Scopus ID, DOI, EID, or PubMed ID

scopus_get_author

Researcher profile: h-index, total citations, document count, affiliation, ORCID

scopus_search_authors

Find researchers by name, ORCID, or institution

scopus_search_affiliations

Find institution records by name or country

scopus_get_citation_count

Quick citation count by Scopus ID or DOI

scopus_get_citations_overview

Year-by-year citation timeline for a paper


Available Prompts (3)

Prompts are reusable research workflows that generate structured query strategies.

Prompt

Arguments

Description

systematic_literature_review

topic, population, intervention, outcome, start_year

Generates a PICO-framed SLR search strategy with Boolean queries and PRISMA flow template

author_impact_analysis

author_name, institution

Step-by-step plan to evaluate a researcher's h-index, citation trends, and collaboration network

research_trend_query

topic, field_code, compare_topic

Decade-by-decade publication trend queries with document type breakdown and OA analysis


Available Resources (3)

Resources are reference documents agents can read at any time.

Resource URI

Contents

scopus://search-syntax

Complete Boolean query reference — field codes, operators, wildcards, examples

scopus://subject-areas

All SUBJAREA() discipline codes organized by field

scopus://api-reference

Tool quota costs, identifier formats, and recommended workflow patterns


Example Queries

# Find recent papers on a topic
TITLE-ABS-KEY("machine learning" AND cancer) AND PUBYEAR > 2020

# Reviews only
TITLE-ABS-KEY("federated learning") AND DOCTYPE(re)

# By author ID
AU-ID(7401234567) AND SUBJAREA(COMP)

# From a specific institution
AF-ID(60022195) AND TITLE-ABS-KEY("robotics")

# Open access papers in a specific journal
SRCTITLE("Nature Medicine") AND OPENACCESS(1) AND PUBYEAR > 2022

# Cross-disciplinary topic
TITLE-ABS-KEY("climate change") AND (SUBJAREA(ECON) OR SUBJAREA(ENVI))

Rate Limits

The server tracks rate limits from response headers and sleeps automatically before making calls when quota is exhausted.

Endpoint

Weekly Quota

Scopus Search

20,000

Abstract Retrieval

5,000

Author Retrieval

5,000

Citation Count

50,000

Citations Overview

5,000

Tip: Use scopus_get_citation_count (50K quota) for bulk citation checks. Reserve scopus_get_abstract (5K quota) for the papers you actually need in detail.


Verify It's Working

# Fastest check: validates your API key live against every endpoint
scopus check

# Interactive browser UI (recommended for MCP-specific debugging)
npx @modelcontextprotocol/inspector uvx scopus-mcp

# Quick smoke test (server starts and exits cleanly)
echo "" | SCOPUS_API_KEY=your_key uvx scopus-mcp

# Unit tests (from source)
uv sync --group dev
uv run pytest tests/ -v
# Expected: 19 passed

Troubleshooting

command not found: uvx Install uv: https://docs.astral.sh/uv/getting-started/installation/

Configuration error: Missing required environment variable: SCOPUS_API_KEY Make sure your config's "env" block has "SCOPUS_API_KEY": "your_actual_key" — not a placeholder.

Tools fail with HTTP 401 API key is invalid or expired. Regenerate at dev.elsevier.com.

Tools fail with HTTP 403 Your key may lack Scopus access. An institutional subscription is required for most endpoints. Ask your librarian about SCOPUS_INST_TOKEN.

First run is slow uv downloads and caches the package on first run. Subsequent starts take ~0.2s.

Tools appear but return empty results Try broadening your query: replace TITLE(...) with TITLE-ABS-KEY(...) or remove PUBYEAR constraints.


Project Structure

scopus-mcp/
├── src/scopus_mcp/
│   ├── server.py        # Entry point — dispatches to CLI or FastMCP stdio server
│   ├── cli.py           # Terminal CLI (scopus / scps): subcommands + check diagnostic
│   ├── config.py        # Env var configuration (pydantic-settings)
│   ├── client.py        # Async HTTP client + TTL cache + rate limiter
│   ├── exceptions.py    # Error hierarchy
│   ├── formatters.py    # Raw Scopus JSON → clean AI-friendly dicts
│   ├── tools/           # 7 MCP tools (search, abstract, author, citations)
│   ├── prompts/         # 3 MCP prompts (SLR, author analysis, trend query)
│   └── resources/       # 3 MCP resources (syntax, subject areas, API reference)
├── scopus-researcher/   # Agent skill (npx skills add JOSETRA44/scopus-mcp@scopus-researcher)
│   ├── SKILL.md
│   └── references/
├── tests/               # Unit tests (19 cases, no network required)
├── setup_mcp.py         # Automated config installer for all clients
├── .env.example         # Environment variable template
└── pyproject.toml       # Package definition

License

MIT — © 2026 JOSETRA44

Available Tools

7 tools
scopus_get_abstractA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifier_typeYesType of identifier being provided
identifierYesThe identifier value (strip any 'SCOPUS_ID:' prefix from scopus_id)

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the return payload in detail (title, abstract, authors, affiliations, keywords, subject areas, citation count, DOI, open access status). With no annotations, the description carries the full burden, and it adequately communicates that this is a read operation with comprehensive output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with no fluff, front-loading the core action. The two sections (identifier types and return fields) are clearly separated. Slightly more structured formatting could improve readability but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description sufficiently enumerates returned fields. Usage tips (strip prefix) add completeness. No mention of pagination, rate limits, or errors, but for a straightforward retrieval tool, this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, yet the description adds significant meaning by listing identifier types and noting the stripping of 'SCOPUS_ID:' prefix. This goes beyond the schema's basic descriptions, helping agents construct valid calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Retrieve full paper details from Scopus using any supported identifier.' It lists identifier types and what is returned, distinguishing it from sibling tools that search or retrieve other entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on identifier value formatting (strip 'SCOPUS_ID:' prefix) and lists supported identifier types, helping agents use the correct input. However, does not explicitly state when to use this tool versus siblings like scopus_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scopus_get_authorA

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
author_idYesScopus Author ID (numeric string, without 'AUTHOR_ID:' prefix)

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavior. It lists the return fields (h-index, citation count, etc.) and gives example IDs. However, it does not mention rate limits, authentication needs, or potential error scenarios. The description is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (3 sentences) with front-loaded purpose, a clear list of return values, and a usage hint. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single parameter, no output schema), the description covers all necessary information: what the tool does, what it returns, and how to obtain the required input. It is complete for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'author_id' is documented in the schema (100% coverage). The description adds value by clarifying it is a numeric string, specifying to not include the 'AUTHOR_ID:' prefix, and providing example IDs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve a researcher's full Scopus profile') and specifies the resource (by Scopus Author ID). It distinguishes from sibling tools by directing users to first use scopus_search_authors to find the ID.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool (to get a profile given an ID) and provides a clear alternative (scopus_search_authors) for finding the ID first. While it doesn't list negative cases, the guidance is sufficient for a retrieval tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scopus_get_citation_countA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopus_idNoScopus numeric ID of the paper
doiNoDOI of the paper

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the endpoint is lightweight and cached, indicating performance characteristics. However, it does not mention authentication requirements, rate limits, or any potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no extraneous information. The purpose is front-loaded, and every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with no output schema, the description covers the key aspects: what it does, how to use it (identifiers), and when to use it. It could be improved by mentioning behavior when both identifiers are provided or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by clarifying the conditional requirement that at least one of the two parameters must be provided, which is not captured in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves the current total citation count for a paper, specifying the action and resource. It is distinct from sibling tools like scopus_get_abstract or scopus_get_author.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use the tool ('for quick citation lookups without fetching the full abstract') and explains that at least one identifier (Scopus ID or DOI) is required. However, it does not explicitly exclude situations or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scopus_get_citations_overviewA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopus_idYesScopus numeric ID of the paper
start_yearNoFirst year of citation range
end_yearNoLast year of citation range

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the output (citations per year within a date range) and implies a read-only operation. However, it does not explicitly state that the tool is read-only or mention any potential side effects, rate limits, or error conditions. Still, the main behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise: two sentences for the main function plus a separate sentence for prerequisites. It is front-loaded with the primary action, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although there is no output schema, the description adequately explains the return value (citations per year within date range). Combined with the parameter descriptions, the tool is fully understandable for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds context on how to obtain the scopus_id, which is value beyond the schema definitions for the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets a year-by-year citation timeline for a paper, with specific verb 'Get' and resource 'citation timeline'. It distinguishes from sibling tools like scopus_get_citation_count by emphasizing the yearly breakdown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: requires a Scopus ID and directs to scopus_search or scopus_get_abstract to obtain it. This tells the agent when to use this tool and what prerequisites are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scopus_search_affiliationsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesAffiliation/institution search query
countNoNumber of results (1–25)

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description implies read-only behavior with 'search' terminology but does not explicitly confirm safety or disclose any side effects. Adequate for a simple search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise; includes query examples and purpose in a few lines. Front-loaded with key action and examples. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with two parameters and full schema coverage, the description is complete. It explains query format, parameters, and the significance of the output (affiliation_id). No output schema needed for understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema covers 100% of parameters with descriptions. Description adds value by providing query examples and clarifying that the result is an affiliation_id, which aids understanding beyond schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Search for institution and affiliation records in Scopus.' Provides query examples and mentions output purpose (affiliation_id). Distinguishes from sibling tools like scopus_search_authors or scopus_search by focus on affiliations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives query examples and explains that output is needed for author searches. Implicitly guides when to use (for affiliations) but does not explicitly exclude alternative tools or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scopus_search_authorsA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesAuthor search query
countNoNumber of results (1–25)

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully carries the burden of behavioral disclosure. It describes the search operation and query syntax but lacks details on rate limits, authentication, pagination, or error handling. The schema already covers count constraints, but the description does not add beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with only a few sentences. It front-loads the main purpose, then provides key details (field codes, example) and a usage hint. There is no redundancy, and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks an explanation of the return values (output fields). Since there is no output schema, the description should at least mention what information is returned (e.g., author IDs, names). It also does not address authentication or error scenarios. Given the simple nature of the tool, it is adequate but incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the query parameter's schema description is generic ('Author search query'). The description adds significant value by listing supported field codes (AUTHLASTNAME, AUTHFIRST, ORCID, AF-ID) and providing an example, which is not present in the schema. This enhances the agent's understanding of how to construct queries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for author profiles in the Scopus author index. It provides query field codes and an example, distinguishing it from sibling tools like scopus_search (general search) and scopus_get_author (retrieves full metrics from an author ID).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly guides the user to use scopus_get_author with the returned author_id to fetch full metrics, indicating when to switch to an alternative. It also includes query construction guidance with field codes and an example, making usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 7 tool updatesv0.1.0
    • First observedscopus_get_abstract
    • First observedscopus_get_author
    • First observedscopus_get_citation_count
    • First observedscopus_get_citations_overview
    • First observedscopus_search
    • First observedscopus_search_affiliations
    • First observedscopus_search_authors

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct operation: paper retrieval, author profiles, citation count, citation timeline, paper search, affiliation search, and author search. No two tools overlap in purpose.

Naming Consistency5/5

All tools follow the consistent pattern 'scopus_<verb>_<noun>' (e.g., scopus_get_abstract, scopus_search_authors). No mixing of styles or irregular names.

Tool Count5/5

7 tools is a reasonable number for a Scopus API wrapper, covering search, retrieval, and citation tracking without being overwhelming or insufficient.

Completeness4/5

The tool set covers core Scopus operations (search, retrieve abstracts/authors, citation info). Minor gaps like pagination for large result sets or listing citing papers are absent but not critical for basic use.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

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
    39
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search and retrieve real academic papers from Scopus, preventing citation hallucination by providing accurate paper metadata, author info, and citation analysis.
    3
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Scopus MCP Server enables researchers to interact with the Scopus database through natural language. It provides tools for searching documents, fetching abstracts, finding author profiles, and viewing citation overviews.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables MCP agents to search academic literature across multiple scholarly engines, explore papers, authors, and references, inspect abstracts and full text, maintain saved paper collections, and export citations, BibTeX, abstracts, or full-text corpora.
    1
    Apache 2.0