MCP-scopus
Allows searching and retrieving academic papers from the Scopus database, providing tools for paper search, author information, citation analysis, and journal metrics.
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., "@MCP-scopus Find recent papers on deep learning for natural language processing"
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.
MCP-Scopus
An MCP (Model Context Protocol) server for searching academic papers on Scopus - helping AI assistants write papers without hallucinating citations.
Why This Matters
When AI assistants write academic papers or research content, they often hallucinate citations - inventing papers that don't exist, misattributing authors, or fabricating DOIs. This MCP server solves that problem by giving AI direct access to real academic data from Scopus, the world's largest abstract and citation database.
The Problem
AI hallucinates non-existent papers
Fabricated author names and affiliations
Invented DOIs and citation counts
Outdated or incorrect publication data
The Solution
Real papers from Scopus database
Accurate author information
Verified DOIs and citation metrics
Up-to-date publication details
Related MCP server: Strato Scopus MCP
Features
Paper Search & Retrieval
search_papers - Search by keywords, title, author, abstract, year range
search_papers_advanced - Structured search combining author, journal, affiliation, keywords, year range, and document type without needing Scopus query syntax
get_paper_by_id - Get full details by Scopus ID
get_paper_by_doi - Retrieve paper by DOI (full metadata including authors, affiliations, keywords)
get_abstract - Fetch paper abstracts
Author Information
search_authors - Find authors by name
get_author_by_id - Get author profile with h-index, citations, subject areas, and top co-authors
get_author_publications - List all publications by an author
Citation Analysis
get_citations - Papers citing a specific work
get_references - Bibliography of a paper (with pagination warnings for large reference lists)
get_citation_overview - Year-by-year citation breakdown for a paper
Journal & Venue Intelligence
get_journal_info - Get journal metrics: CiteScore, SJR, SNIP, subject areas
search_journals - Search for journals by name, get ISSN and metadata
Institution & Domain Search
search_by_affiliation - Find papers by university/organization (with year filtering)
search_by_subject_area - Search within ASJC subject area codes for domain-specific literature reviews
Installation
Prerequisites
Node.js 18+ (required)
A Scopus API Key (free for academic use)
Step 1: Clone & Build
# Clone the repository
git clone https://github.com/andri-setiawan/MCP-scopus.git
cd MCP-scopus
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm testStep 2: Get Scopus API Key
Create a free account
Apply for API access
Select "Scopus Search API"
You'll receive an API key via email
Note: Free API keys have rate limits. For production use, consider a paid subscription.
Configuration (Choose One)
Option A: Direct Node.js (Recommended)
Most stable and reliable method. Uses stdio transport directly without network overhead.
Claude Desktop Configuration
Add to your claude_desktop_config.json:
{
"mcpServers": {
"scopus": {
"command": "node",
"args": [
"/path/to/MCP-scopus/dist/index.js"
],
"env": {
"SCOPUS_API_KEY": "your_api_key_here"
}
}
}
}Config file locations:
OS | Path |
Windows |
|
macOS |
|
Linux |
|
Example: Windows Configuration
{
"mcpServers": {
"scopus": {
"command": "node",
"args": [
"D:\\Documents\\MCP-scopus\\dist\\index.js"
],
"env": {
"SCOPUS_API_KEY": "your_api_key_here"
}
}
}
}Example: macOS/Linux Configuration
{
"mcpServers": {
"scopus": {
"command": "node",
"args": [
"/home/username/MCP-scopus/dist/index.js"
],
"env": {
"SCOPUS_API_KEY": "your_api_key_here"
}
}
}
}Why This Method is Recommended
Aspect | Direct Node.js | HTTP/SSE (Docker) |
Stability | Best | Good |
Latency | Lower | Higher |
Connection | Direct stdio | Network-based |
Timeouts | No issues | Possible |
Docker Required | No | Yes |
Setup Complexity | Simple | More complex |
Option B: Docker + HTTP/SSE (Alternative)
If you prefer containerization or need remote access:
# Build the image
docker build -t mcp-scopus .
# Run the container
docker run -d \
--name mcp-scopus \
--restart unless-stopped \
-p 5566:5566 \
-e SCOPUS_API_KEY=your_api_key_here \
mcp-scopusClaude Desktop Configuration (HTTP)
{
"mcpServers": {
"scopus": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:5566/sse"],
"env": {}
}
}
}Docker Management
docker logs mcp-scopus # View logs
docker restart mcp-scopus # Restart container
docker stop mcp-scopus # Stop container
docker start mcp-scopus # Start containerUsage Examples
Once configured, restart Claude Desktop and try:
"Search for recent papers about transformer architectures in NLP"
"Find papers by Geoffrey Hinton from the last 5 years"
"What papers cite the attention is all you need paper?"
"Get details about paper with DOI 10.1016/j.example.2023.01.001"
"Find publications from Stanford University about machine learning"
"What are the metrics for the journal Nature (ISSN 0028-0836)?"
"Search for conference papers about LLMs published between 2023 and 2024"
"Show me the citation trajectory of paper 2-s2.0-85012345678"
"Find papers in Computer Science (ASJC 1700) about reinforcement learning"Search Syntax
The server supports Scopus advanced query syntax:
machine learning AND PUBYEAR > 2023
TITLE(deep learning) AND AUTHOR(lecun)
ABS(neural networks) AND KEY(transformer)
SRCTITLE(Nature) AND PUBYEAR = 2024Or use search_papers_advanced for structured queries without learning Scopus syntax:
keywords: "transformer", author: "vaswani", journal: "NeurIPS", yearFrom: 2017, documentType: "conference-paper"Available Tools
Tool | Description |
| Search papers by query with filters and year range |
| Structured multi-field search (author, journal, affiliation, keywords, year, doc type) |
| Get paper details by Scopus ID |
| Get paper details by DOI (full metadata) |
| Get paper abstract |
| Search for authors |
| Get author profile with co-authors |
| List author's papers |
| Get citing papers |
| Get paper's references |
| Year-by-year citation breakdown |
| Journal metrics: CiteScore, SJR, SNIP |
| Search journals by name |
| Search by institution (with year filter) |
| Search by ASJC subject code |
API Reference
search_papers
{
query: string, // Required: Search query
count?: number, // Default: 10, Max: 200
start?: number, // For pagination
sortBy?: string, // 'relevance' | 'date' | 'citedby-count' | 'pub-name'
sortOrder?: string, // 'asc' | 'desc'
yearFrom?: number, // Filter from year (e.g., 2020)
yearTo?: number // Filter to year (e.g., 2024)
}search_papers_advanced
{
keywords?: string, // Keywords for title/abstract/keywords search
author?: string, // Author name
affiliation?: string, // Institution name
journal?: string, // Source/journal title
yearFrom?: number, // Start year
yearTo?: number, // End year
documentType?: string, // 'article' | 'review' | 'conference-paper' | etc.
count?: number, // Default: 10
sortBy?: string, // Sort field
sortOrder?: string // Sort order
}get_journal_info
{
issn: string // Required: ISSN of the journal
}get_citation_overview
{
scopusId: string // Required: Scopus ID of the paper
}search_by_subject_area
{
subjectCode: string, // Required: ASJC code (e.g., '1700' for Computer Science)
keywords?: string, // Additional keywords
yearFrom?: number, // Start year
yearTo?: number, // End year
count?: number, // Default: 10
sortBy?: string, // Sort field
sortOrder?: string // Sort order
}Architecture
src/
index.ts # Stdio MCP server (recommended)
http-server.ts # HTTP/SSE MCP server (alternative)
handlers.ts # All tool execution logic (shared)
tools.ts # Tool definitions and schemas (shared)
formatters.ts # Response formatting helpers (shared)
client.ts # Scopus API client with rate limiting (shared)
schemas.ts # Zod input validation schemas (shared)
types.ts # TypeScript interfaces for Scopus API responses
__tests__/ # Test suiteBoth transport modes share identical logic via the registerHandlers() function, so any bug fix or feature applies to both.
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run tests
npm test
# Watch tests
npm run test:watch
# Run in development mode (stdio)
npm run dev
# Run HTTP server
npm run start:httpProject Structure
MCP-scopus/
src/
index.ts # Stdio MCP server (recommended)
http-server.ts # HTTP/SSE MCP server (alternative)
handlers.ts # Shared tool execution logic
tools.ts # Shared tool definitions
formatters.ts # Response formatters
client.ts # API client with rate limiting
schemas.ts # Zod validation schemas
types.ts # TypeScript interfaces
__tests__/ # Test files
dist/ # Compiled JavaScript
Dockerfile
docker-compose.yml
package.json
tsconfig.json
vitest.config.ts
README.mdTroubleshooting
Connection Timeout Errors
If you see timeout errors with HTTP/SSE, switch to Option A (Direct Node.js) - it's more stable.
API Key Issues
# Test your API key
curl -H "X-ELS-APIKey: your_key" "https://api.elsevier.com/content/search/scopus?query=test"Rate Limiting (429 Errors)
The server automatically retries on 429 responses with exponential backoff. If you still see issues, reduce your count parameter or space out requests.
Container Won't Start
# Check logs
docker logs mcp-scopus
# Rebuild
docker stop mcp-scopus && docker rm mcp-scopus
docker build -t mcp-scopus . --no-cache
docker run -d --name mcp-scopus -p 5566:5566 -e SCOPUS_API_KEY=your_key mcp-scopusLicense
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Model Context Protocol by Anthropic
Scopus API by Elsevier
Disclaimer
This project is not affiliated with, endorsed by, or sponsored by Elsevier or Scopus. Scopus is a registered trademark of Elsevier B.V. Use of the Scopus API is subject to Elsevier's terms of service.
Available Tools
15 toolsget_abstractB
Retrieve the abstract of a specific paper using its Scopus ID.
Inputs: scopusId (required).
get_author_by_idA
Retrieve detailed information about a specific author using their Scopus Author ID, including h-index, citation count, subject areas, and top co-authors.
Inputs: authorId (required).
get_author_publicationsC
Retrieve a list of publications by a specific author using their Scopus Author ID.
Inputs: authorId (required), count, start, sortBy, +1 more.
get_citation_overviewA
Get a citation overview for a specific paper including total citations and yearly citation breakdown. Useful for understanding the impact trajectory of a paper.
Inputs: scopusId (required).
get_citationsB
Retrieve the list of papers that cite a specific paper using its Scopus ID.
Inputs: scopusId (required), count, start.
get_journal_infoB
Get journal metrics including CiteScore, SJR, SNIP, and subject area classifications. Essential for evaluating publication venues.
Inputs: issn (required).
get_paper_by_doiA
Retrieve detailed information about a specific paper using its DOI (Digital Object Identifier). Returns full metadata including authors, affiliations, keywords, and subject areas.
Inputs: doi (required).
get_paper_by_idC
Retrieve detailed information about a specific paper using its Scopus EID or Scopus ID.
Inputs: scopusId (required), field.
get_referencesB
Retrieve the list of references (bibliography) of a specific paper using its Scopus ID.
Inputs: scopusId (required), count, start.
search_authorsA
Search for authors on Scopus by name. Returns author profiles with affiliations, publication counts, citation counts, and h-index.
Inputs: query (required), count, start.
search_by_affiliationC
Search for papers from a specific institution/affiliation.
Inputs: affiliationName (required), count, start, yearTo, +1 more.
search_by_subject_areaA
Search for papers within a specific ASJC (All Science Journal Classification) subject area code. Useful for domain-specific literature reviews.
Inputs: subjectCode (required), count, start, sortBy, +4 more.
search_journalsA
Search for journals/serial titles by name. Returns ISSN, publisher info, and links to full metrics.
Inputs: query (required), count, start.
search_papersA
Search for academic papers on Scopus by keywords, title, author, or other criteria. Returns a list of matching papers with metadata including title, authors, abstract, citations, DOI, and more. Supports Scopus advanced query syntax like TITLE(), ABS(), AUTHOR(), KEY(), SRCTITLE(), PUBYEAR.
Inputs: query (required), count, field, start, +4 more.
search_papers_advancedB
Structured advanced search combining multiple criteria without needing Scopus query syntax. Build complex searches by specifying author, keywords, journal, affiliation, year range, and document type separately.
Inputs: count, start, author, sortBy, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Most tools have clearly distinct purposes, but search_papers and search_papers_advanced overlap in searching papers with different interfaces, and get_paper_by_id may overlap with get_abstract if the former returns abstracts. Descriptions help clarify boundaries, but minor confusion is possible.
All tool names use snake_case with consistent get_ and search_ prefixes, following a predictable verb_noun pattern. Minor inconsistency exists between search_by_affiliation/search_by_subject_area and search_papers/search_authors, but this is a small deviation.
15 tools is well-scoped for a Scopus API wrapper, covering search, retrieval, citations, and journals without excessive redundancy. Each tool provides a distinct service, and the count fits the domain's needs.
The surface covers paper, author, and journal search and retrieval, plus citations, references, and citation overview. Minor gaps include direct retrieval of author citation lists or journal details by ISSN, but these can be worked around via existing search tools.
Maintenance
Related MCP Connectors
Research paper search with real citations and reference formatting for AI assistants
Search 340M+ academic papers — citation graphs, semantic similarity, and AI literature reviews.
Academic papers, reference verification and research data for AI agents.
AI research grounded in 300M scientific works — every citation a verifiable DOI.
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.5110 PyPI53MIT
- AlicenseNot gradedqualityDmaintenanceConnects Scopus to AI assistants for literature discovery. Provides tools for finding papers, experts, citation networks, and analyzing research trends.2GPL 2.0
- AlicenseAqualityBmaintenanceEnables AI agents to search and retrieve academic papers, author profiles, and citation data from the Scopus database via MCP tools.12MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching Elsevier's Scopus database for scientific literature, retrieving abstracts and metadata, and exporting results in RIS or BibTeX format.1MIT