scholar-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| S2_API_KEY | No | Semantic Scholar API key (https://www.semanticscholar.org/product/api#api-key-form) (1 req/s) | |
| CORE_API_KEY | No | CORE API key (https://core.ac.uk/services/api) | |
| OPENALEX_EMAIL | No | Email for Unpaywall + OpenAlex polite pool | |
| SCIHUB_ENABLED | No | Enable Sci-Hub as last-resort source | false |
| SCHOLAR_DOWNLOAD_DIR | No | PDF save directory | ./downloads |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_papersA | Search for academic papers across many sources (OpenAlex, Semantic Scholar, arXiv, PubMed, OpenReview, Crossref and more), merge duplicates across DOI/arXiv/S2/OpenAlex identities, and rerank for relevance. Use this to find papers from a topic, a question, or a half-remembered title. Use paper_info when you already hold an identifier, recommend_papers to expand from one known paper, and search_authors for people. Read-only. Each call fans out to live APIs under a time budget; sources that time out are reported as degraded coverage instead of failing the call. Put years, venues and filters in the parameters, not in the query text. |
| paper_infoA | Get metadata for one known paper, optionally with the papers that cite it and the papers it references. Use this when you already have an identifier; use search_papers to find one first, and recommend_papers for related work that is not a direct citation. Read-only, one upstream lookup per requested section. An unresolvable identifier returns a not-found message rather than an error. Citation and reference lists are ordered by influence and cut at limit. |
| recommend_papersA | Find related papers by a chosen citation-graph relation. Use this when you hold one paper and want its neighbourhood. Use search_papers for a topic and paper_info for a paper's direct citation lists. Read-only; results come from embedding and citation data, so very new or uncited papers return few or no neighbours. "Related" is several different questions, and which one you want depends on what you are doing: |
| search_authorsA | Search for researchers by name and return profiles with affiliations, paper counts, h-index and identifiers. Use this for people, not papers: use search_papers for papers and paper_info for a paper's own author list. Read-only. Name matching is fuzzy, so common names return many candidates; add an affiliation or field word to the query and keep limit small to disambiguate. |
| download_paperA | Resolve one paper to an open-access PDF and save it to disk, optionally indexing it into a library collection. Writes a file under save_dir (default: the configured papers directory); a repeat call for the same paper overwrites the same path. Use read_paper instead when you only need the text once. Resolution tries the canonical archive (arXiv, Europe PMC), repository resolvers, preprint servers and Unpaywall in order; a paywalled paper with no open copy returns a clear failure and writes nothing. |
| read_paperA | Fetch a paper's PDF into a temporary file and return page-aware Markdown text plus selectors for its figures and tables. Use this to read; use download_paper to keep the PDF. Nothing persists after the call. Resolution follows the same open-access chain as download_paper, so paywalled papers without an open copy fail cleanly. Pass a selector from a previous response as visual to get one figure or table with its surrounding text. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| scholar_status | Return server capabilities without occupying the model's tool surface. |
TDQS
Scored across 6 tools
Each tool targets a clearly distinct task: finding papers, looking up a known paper, exploring related work, finding authors, downloading PDFs, and reading PDFs. The descriptions explicitly cross-reference when to use one tool instead of another, eliminating ambiguity.
Most tools follow a clear verb_noun pattern: search_papers, search_authors, download_paper, read_paper, recommend_papers. The outlier is paper_info, which uses noun_info instead of a verb like get_paper_info, creating a minor inconsistency.
Six tools is a well-scoped size for an academic search and reading server. Each tool covers a necessary part of the workflow without redundancy or bloat.
The tool set covers the full scholarly research loop: discovering papers, retrieving metadata, finding related work, identifying authors, and accessing full text by downloading or reading. No obvious dead ends or missing core operations for the stated purpose.