elsevier-mcp
# elsevier-mcp
MCP server for the [Elsevier Developer APIs](https://dev.elsevier.com). Gives Claude Code access to Scopus, ScienceDirect, and other Elsevier academic databases.
## Quick Start
Get a free API key at [dev.elsevier.com](https://dev.elsevier.com), then pick an install method below.
### Claude Code — plugin marketplace (recommended)
This repository is a Claude Code [plugin marketplace](https://docs.claude.com/en/docs/claude-code/plugin-marketplaces). Add it, then install the plugin — no clone or `npm install` required:
```
/plugin marketplace add kemalabuteliyte/elsevier-mcp
/plugin install elsevier-mcp@elsevier-tools
```
The plugin ships a self-contained server bundle, so it just works once installed. Provide your API key through your environment before launching Claude Code:
```bash
export ELSEVIER_API_KEY=your_api_key_here
# optional — institutional access unlocks all 14 tools:
# export ELSEVIER_INST_TOKEN=your_institutional_token
# export ELSEVIER_ENABLE_ALL_TOOLS=true
```
Restart Claude Code. The `elsevier` tools are now available. Done.
### Claude Desktop — one-click install
Download the latest `.mcpb` file from [Releases](https://github.com/kemalabuteliyte/elsevier-mcp/releases), then open it with Claude Desktop. You'll be prompted to enter your API key during setup.
### Manual install (from source)
```bash
git clone https://github.com/kemalabuteliyte/elsevier-mcp.git
cd elsevier-mcp
npm install
npm run build
```
Then add to your Claude Code settings:
```json
{
"mcpServers": {
"elsevier": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/elsevier-mcp/dist/index.js"],
"env": {
"ELSEVIER_API_KEY": "your_api_key_here"
}
}
}
}
```
Or via CLI:
```bash
claude mcp add elsevier -e ELSEVIER_API_KEY=your_key -- node /absolute/path/to/elsevier-mcp/dist/index.js
```
## Available Tools
These 6 tools work with a free Elsevier API key:
| Tool | Description |
|------|-------------|
| `scopus_search` | Search Scopus for scholarly documents by query |
| `abstract_retrieval` | Retrieve abstract/metadata by DOI, Scopus ID, EID, PII, or PubMed ID |
| `article_retrieval` | Retrieve ScienceDirect article by DOI, PII, or EID |
| `serial_title_search` | Search for journals by title, ISSN, publisher, or subject |
| `serial_title_retrieval` | Retrieve journal details by ISSN |
| `subject_classifications` | Look up Scopus/ScienceDirect subject area codes and descriptions |
## Enabling All Tools (Institutional Access)
8 additional tools require institutional network access, an institutional token, or additional API subscriptions. Enable with `ELSEVIER_ENABLE_ALL_TOOLS=true`:
```json
{
"mcpServers": {
"elsevier": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/elsevier-mcp/dist/index.js"],
"env": {
"ELSEVIER_API_KEY": "your_api_key_here",
"ELSEVIER_INST_TOKEN": "your_institutional_token",
"ELSEVIER_ENABLE_ALL_TOOLS": "true"
}
}
}
}
```
| Tool | Description | Requires |
|------|-------------|----------|
| `author_search` | Search for authors in Scopus | Institutional access |
| `affiliation_search` | Search for institutions and affiliations | Institutional access |
| `author_retrieval` | Retrieve author profile by ID, EID, or ORCID | Institutional access |
| `affiliation_retrieval` | Retrieve institution details by ID or EID | Institutional access |
| `citation_count` | Get citation counts (supports batch lookup) | API subscription |
| `citations_overview` | Detailed citation overview with yearly breakdowns | API subscription |
| `plumx_metrics` | PlumX altmetrics (usage, captures, social media) | Institutional access |
| `fulltext_retrieval` | Retrieve full text of a ScienceDirect article as plain text | Institutional access |
To get institutional access:
- Connect from a university/institutional network with a Scopus subscription
- Or request an institutional token from `apisupport@elsevier.com`
- The server automatically attempts IP-based authentication on 401 errors
## Example Queries
Scopus search uses Boolean syntax with field codes:
- `TITLE(machine learning) AND PUBYEAR > 2020`
- `AUTH(Einstein) AND TITLE(relativity)`
- `AFFIL(MIT) AND KEY(quantum computing) AND PUBYEAR = 2024`
- `DOI(10.1016/j.jclepro.2020.121092)`
## Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `ELSEVIER_API_KEY` | Yes | API key from dev.elsevier.com |
| `ELSEVIER_INST_TOKEN` | No | Institutional token for expanded access |
| `ELSEVIER_ENABLE_ALL_TOOLS` | No | Set to `true` to enable all 13 tools |
## Troubleshooting
- **401 error**: Your API key lacks entitlements for this endpoint. You may need institutional access or an institutional token.
- **403 error**: Your API key doesn't have the required subscription for this resource.
- **429 error**: Rate limit exceeded. Elsevier quotas reset weekly.
- **No results**: Try broadening your query or using different field codes.
## License
MIT
TDQS
Scored across 6 tools
Each tool targets a distinct resource and operation: document search, document abstract retrieval, full-text retrieval, serial search, serial metadata retrieval, and subject classifications. There is no overlap in purpose, making selection unambiguous.
Most tools follow a noun_action pattern (scopus_search, abstract_retrieval, serial_title_search). The only deviation is subject_classifications, which is a noun without an explicit action, but it clearly implies retrieval. Overall, the naming is predictable and readable.
Six tools is well-scoped for Elsevier's APIs, covering both Scopus and ScienceDirect search and retrieval needs. Each tool has a clear purpose without redundancy.
Core workflows are covered: searching publications, retrieving abstracts, fetching full-text, and managing serial metadata. Missing are author/affiliation search and citation lookup, but these are not essential for the primary document retrieval purpose.