Skip to main content
Glama
Liyux3

scholar-mcp

Scholar MCP turns a research question into a connected body of evidence. It recovers papers from vague descriptions, reaches the work one hop beyond search, opens the primary text, maps the lineage, and carries the selected field into a library that grows with every session.

Natural-language discovery · Related-work discovery · Primary evidence · Field maps · Zotero · Obsidian · Notion connectors

Quick demo

Scholar MCP quick demo

One continuous agent flow: search_papersbuild_paper_graphpaper_info + read_paperpaper_library → library connectors.

Related MCP server: Crossref Academic MCP Server

How it works

Agents call typed MCP tools over stdio or Streamable HTTP. Scholar returns concise text and structured data, while a persistent SQLite library drives FTS5 search, PDF attachments, JSONL snapshots, and Obsidian, Zotero, and Notion connectors.

Quick start

Claude Code:

claude mcp add scholar -- uvx scholar-mcp

Claude Desktop or any stdio MCP client:

{
  "mcpServers": {
    "scholar": {
      "command": "uvx",
      "args": ["scholar-mcp"]
    }
  }
}

The direct server exposes the compact core profile. Python 3.10+ and uv are required. Optional source keys unlock deeper coverage and higher throughput.

The repository also ships a research plugin with citation graphs, a local paper library, and the Deep Research skill:

# Codex
codex plugin marketplace add Liyux3/scholar-mcp
codex plugin add scholar-mcp@scholar-mcp

# Claude Code
claude plugin marketplace add Liyux3/scholar-mcp
claude plugin install scholar-mcp@scholar-mcp

The same plugin directory follows the Agent Plugins standard for Cursor, Pi, and compatible harnesses. OpenCode can launch uvx scholar-mcp as a local MCP; Pi can use pi-mcp-adapter.

Release artifacts also include the PyPI package, multi-architecture GHCR image, and macOS MCPB bundles. See the complete distribution matrix.

Tools

Profile

Tool

Responsibility

Core

search_papers

Multi-source retrieval, filters, reranking, and citation discovery

Core

paper_info

Paper detail, citations, and references through one selective call

Core

recommend_papers

Related work through semantic and citation connections

Core

search_authors

Author profiles, affiliations, paper counts, and h-index

Core

read_paper

Temporarily fetch and read a complete paper in one call

Core

download_paper

Persist a PDF and index it in a collection

Research

build_paper_graph

Bounded citation graph with PageRank, bridges, nodes, edges, and Mermaid

Research

paper_library

Collections, FTS search, notes, tags, PDFs, and Markdown vault export

scholar://status reports source availability and the actual reranker used without occupying the tool surface. Tool responses retain concise YAML text and also expose structured MCP data.

The bundled Deep Research skill turns search, paper inspection, graph traversal, and selected library writes into a living field map.

Retrieval

Channel

Sources

Query form and role

Semantic

OpenAlex semantic, arxiv.gg, optional Exa

Full natural-language question

Full text

Semantic Scholar snippet search

Matching passages from open-access papers

Broad metadata

OpenAlex, Semantic Scholar, Crossref, optional Scopus

Identity, coverage, citations, and filters

Preprints and conferences

arXiv, OpenReview

Recent work and conference records

Biomedical

PubMed, Europe PMC

Medicine, biology, and full-text repositories

Domain and repository

DBLP, INSPIRE-HEP, DOAJ, CORE, OpenAIRE, HAL

CS, physics, open journals, and repositories

Web fallback

Google Scholar

Best effort; blocking is reported as degradation

Keyword APIs receive measured source-specific query budgets. Semantic endpoints keep the original question. Every source contributes independently to one canonical evidence pool.

Results are canonicalized across DOI, arXiv, Semantic Scholar, OpenAlex, PubMed, and OpenReview identities. Duplicate records contribute complementary metadata and independent source evidence instead of appearing several times.

DashScope qwen3-rerank is the primary reranker when configured; FlashRank is the local fallback. The normal response shows only source coverage, the actual reranker, and actionable degradation. debug=true adds per-source yield, latency, provenance, and internal ranking diagnostics.

Measured retrieval quality

LitSearch quality comparison

Scholar leads the Exa research-paper baseline by 10 points at R@5 and 6 points at R@20 on matched LitSearch.

System

R@5

R@10

R@20

MRR

Scholar

0.62

0.68

0.70

0.442

Exa research paper

0.52

0.58

0.64

0.435

BM25 title + abstract

0.46

0.46

0.56

0.335

Scholar recovered nine R@5 hits that Exa missed; Exa recovered four that Scholar missed.

The comparison uses the same first 50 LitSearch inline-ACL queries, ground-truth titles, title matcher, and top-20 cutoff. Exa ran with category research paper. Scholar used its standard retrieval pipeline with Qwen reranking. BM25 follows the official LitSearch title+abstract implementation: lowercase tokenization, English stopword removal, Porter stemming, and BM25Okapi over the 64K-paper corpus. The Scholar/Exa run was collected on 12 May 2026; BM25 was reproduced on 25 August 2026. The frozen summary is in docs/benchmarks/litsearch-inline-acl-50.json, with raw BM25 results and their hash manifest.

Citation graph and paper library

Real paper-library graph

Rendered from a live local collection, the graph reveals foundations, bridges, and the papers that move a field forward. Stable identities and parallel citation traversal keep the map connected as it grows.

The paper library uses one persistent SQLite authority with WAL transactions and FTS5 search. Existing JSONL collections migrate automatically and remain available as compatibility snapshots. Stable identifiers, notes, tags, PDF paths, connector IDs, and sync revisions stay attached to the same canonical record.

Default data layout:

~/.scholar-mcp/
├── papers/    persistent PDFs
├── kb/
│   ├── library.sqlite3    authority + FTS5 + sync state
│   └── *.jsonl            compatibility snapshots
└── vault/                 Markdown projections and wikilinks

Library connectors

# No login: write directly into an Obsidian vault
scholar-mcp library export obsidian --collection rag --path /path/to/vault

# Dry-run by default; add --apply for external writes
scholar-mcp library sync zotero --collection rag
scholar-mcp library publish notion --collection rag

Obsidian is a live Markdown projection. Zotero manages bibliographic items, collections, tags, and notes. Notion receives a one-way reading-list view. External connectors keep their IDs, versions, and content hashes in SQLite, so unchanged papers do not publish twice.

Paper access

read_paper uses a temporary PDF and reads pages 1-10 by default, which usually reaches the conclusion of an AI conference paper. It returns page-aware Markdown, structured tables when their geometry is reliable, and caption selectors for figures and visual table fallbacks. Pass visual="Figure 3" or another returned selector to receive one focused page crop alongside its text. Pass pages="11-20" to continue into references or appendices. The PDF is removed after extraction. download_paper streams into a staging file, atomically publishes a validated PDF, reuses a valid local copy, and indexes its metadata in the selected collection.

The shared resolution chain covers:

  1. Native open-access records and canonical archives such as arXiv and Europe PMC

  2. Registered repository resolvers: CORE, OpenAIRE, HAL, Zenodo, and DOAJ

  3. bioRxiv, medRxiv, SSRN, ChemRxiv, and other preprint servers

  4. Unpaywall and an optional institutional proxy

  5. an explicit local fallback when enabled

scholar-mcp sources prints the live registry-derived capability matrix. Zenodo participates in PDF resolution but stays out of default discovery because its broad publication records add more candidate noise than retrieval value.

Configuration

All credentials are optional and remain in the MCP process environment.

Variable

Purpose

SCHOLAR_DATA_DIR

Shared data root; default ~/.scholar-mcp

SCHOLAR_KB_DIR

SQLite library and JSONL snapshot directory

SCHOLAR_OBSIDIAN_VAULT

Obsidian projection root; no authentication required

S2_API_KEY / S2_API_KEYS

Semantic Scholar search, snippets, graph, and rate limits

OPENALEX_API_KEY / OPENALEX_API_KEYS

OpenAlex search, semantic search, and graph calls

OPENALEX_EMAIL

OpenAlex polite pool and Unpaywall

DASHSCOPE_API_KEY

Qwen reranker

SCOPUS_API_KEY

Optional Scopus metadata source

CORE_API_KEY

Optional CORE repository source

EXA_API_KEY

Optional Exa research-paper source

OPENREVIEW_USERNAME, OPENREVIEW_PASSWORD

OpenReview API

SCHOLAR_SOURCE_BUDGET_S

Initial source fan-out budget; default 8 seconds

SCHOLAR_DOWNLOAD_DIR

Persistent PDF directory; default <data>/papers

SCHOLAR_MCP_EXTENSIONS

Use research for graph and paper-library tools

ZOTERO_API_KEY, ZOTERO_LIBRARY_ID

Zotero Web API or authorized local API connector

ZOTERO_LIBRARY_TYPE, ZOTERO_API_BASE

Optional Zotero library type and endpoint override

NOTION_API_KEY, NOTION_DATA_SOURCE_ID

Notion one-way publisher

Errors returned to the model redact request URLs and credentials.

Development

git clone https://github.com/Liyux3/scholar-mcp.git
cd scholar-mcp
uv sync --extra dev
uv run pytest

Unit tests are the default. Live API tests are marked integration and run separately with uv run pytest -m integration; pytest reports them as deselected during the deterministic unit run because the marker filter intentionally leaves network-dependent cases out of that invocation.

Connector and feature contributions follow CONTRIBUTING.md. Report security issues through the private process in SECURITY.md; citation metadata is available in CITATION.cff.

Local and Docker clients use stdio by default. Set SCHOLAR_MCP_TRANSPORT=http for Streamable HTTP; the default endpoint is /mcp.

License

Apache License 2.0

Available Tools

6 tools
download_paperDownload a paper PDFA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYesPaper identifier (S2 ID, DOI, ArXiv:ID, etc.)
save_dirNoDirectory to save PDF (default: configured download directory)
collectionNoKnowledge-base collection to index the PDF in. Empty disables indexing.downloads

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate idempotent, non-destructive write behavior, and the description adds valuable details beyond them: repeat calls overwrite the same path, resolution tries specific sources in order, and a failed resolution writes nothing. There is no contradiction with the annotations.

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 compact and front-loads the primary purpose, then adds necessary behavioral and alternative-tool context. Every sentence contributes useful information without filler or redundancy.

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?

The description covers the key operational details: resolution order, file persistence and overwrite semantics, indexing option, failure behavior, and the alternative read_paper. With the output schema and annotations also present, an agent has enough context to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description mostly restates defaults and indexing behavior rather than adding new parameter-level meaning, so the baseline score of 3 is appropriate.

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 uses a specific verb and resource: resolving one paper to an open-access PDF and saving it to disk. It also distinguishes itself from read_paper by noting the alternative is for text-only needs, making the tool's purpose and scope clear.

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 names read_paper as the alternative and states the condition for choosing it: when only the text is needed once. It also clarifies that paywalled papers with no open copy fail cleanly, helping an agent decide when this tool is appropriate.

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

paper_infoInspect a paper and its citation neighborhoodA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax citations/references to return (default 20)
includeNoComma-separated: "detail", "citations", "references" (default: "detail")detail
paper_idYesPaper identifier (S2 ID, DOI, ArXiv:ID, OpenAlex W-ID, etc.)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark the tool as read-only and idempotent, and the description adds valuable behavior: "one upstream lookup per requested section," "unresolvable identifier returns a not-found message rather than an error," and lists "ordered by influence and cut at limit." This gives the agent concrete expectations beyond safety hints.

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 compact and front-loaded: the core purpose appears in the first sentence, usage routing in the second, and behavioral notes in short, scannable sentences. Every sentence adds information; there is no filler or redundancy.

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 output schema, full parameter schema descriptions, and strong annotations, the description covers all necessary selection and invocation context: when to use it, alternatives, error behavior, list ordering, and truncation. No critical operational detail is missing.

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%, so the baseline is 3. The description adds useful semantic context by explaining that citation and reference lists are "ordered by influence and cut at limit," clarifying how the limit parameter behaves and how include sections are returned. It does not need to restate schema details.

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 begins with a specific verb and resource: "Get metadata for one known paper, optionally with the papers that cite it and the papers it references." This clearly distinguishes it from search-oriented tools by emphasizing a known identifier, and the title reinforces the citation-neighborhood scope.

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 states when to use the tool: "Use this when you already have an identifier," and names alternatives: "use search_papers to find one first, and recommend_papers for related work that is not a direct citation." This provides clear routing among siblings.

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

read_paperRead a paper's main text or a page rangeA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pagesNoOne-indexed page range. The default usually reaches the conclusion of an AI conference paper. Use ranges such as "11-20" for appendices. At most 20 pages can be read per call.1-10
visualNoOptional selector returned by this tool, such as "Figure 3", "Table 2", or "page 5". Returns one focused visual with its text.
paper_idYesPaper identifier (S2 ID, DOI, ArXiv:ID, etc.)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and idempotentHint annotations, the description discloses temporary file behavior, non-persistence of data, the open-access resolution chain, clean failure for paywalled papers, and the focused visual return behavior. This is substantial behavioral context that annotations alone do not provide.

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 tight sentences with no filler. The core purpose is front-loaded, usage guidance follows, and the visual workflow is placed at the end. Every sentence earns its place.

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 output schema is present and annotations cover safety traits, the description covers what remains important: temporary persistence, failure behavior, sibling differentiation, and how to chain selectors into a visual call. Nothing essential for correct invocation is missing.

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 schema already documents all parameters well. The description adds workflow-level meaning for pages (default reaches conclusion, max 20 pages) and visual (pass a selector from a previous response), which goes beyond the schema's per-parameter text.

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 states a specific verb and resource: fetch a paper's PDF into a temporary file and return page-aware Markdown text with figure and table selectors. It clearly differentiates itself from download_paper by noting that download_paper is the alternative for keeping the PDF.

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 gives explicit usage guidance: 'Use this to read; use download_paper to keep the PDF.' It also explains when the tool fails cleanly for paywalled papers and how to use a previous response selector as the visual parameter.

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

recommend_papersRecommend related papersA
Read-onlyIdempotent

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:

similar     embedding neighbours (SPECTER2). Same topic, possibly
            different vocabulary. Good default.
peers       what is cited alongside this paper. Its intellectual
            cohort, which is usually what "related work" means.
kin         what cites the same works this paper does. Shared method
            rather than shared topic, so this is the relation that
            crosses field boundaries: two papers can be coupled
            without sharing any vocabulary.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (default 10)
paper_idYesPaper identifier (S2 ID, DOI, ArXiv:ID, OpenAlex ID, etc.)
relationNosimilar | peers | kinsimilar

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Annotations already mark the tool read-only, idempotent, and non-destructive. The description adds genuine behavioral context beyond those flags: results come from embedding and citation data, so 'very new or uncited papers return few or no neighbours.' It also explains the meaningful behavioral differences among the three relation types, which is not visible from annotations alone.

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 moderately long but every section earns its place: a one-sentence purpose, explicit routing to alternatives, a data-source caveat, and a structured explanation of the three relation types. It is front-loaded with the core purpose and usage guidance before diving into parameter semantics, with no filler.

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 tool with three relation modes and an output schema, the description is complete. It covers when to use the tool, how to choose between relations, data limitations, and the meaning of each parameter. Because an output schema is present, the absence of return-format details does not hurt completeness.

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?

The schema description coverage is 100%, so the baseline is 3. However, the description goes well beyond the schema by explaining what each relation value means semantically: similar, peers, and kin each get a clear definition with practical implications. This is especially valuable because the schema merely lists 'similar | peers | kin' with no per-enum descriptions.

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 opens with a specific verb and resource: 'Find related papers by a chosen citation-graph relation.' It clearly distinguishes this tool from siblings by explicitly naming search_papers and paper_info as the alternatives for different needs, so an agent can immediately tell what recommend_papers is and is not for.

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?

It gives explicit when-to-use guidance: 'Use this when you hold one paper and want its neighbourhood.' It also names alternatives and their conditions: 'Use search_papers for a topic and paper_info for a paper's direct citation lists.' This leaves no ambiguity about tool selection.

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

search_authorsSearch academic authorsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results (1-1000, default 5)
queryYesAuthor name to search for

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds useful behavioral context beyond annotations: fuzzy name matching, common names returning many candidates, and the resulting need for disambiguation. This is meaningful behavioral disclosure that helps the agent set expectations.

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 tightly written sentences each earn their place: purpose, routing guidance, and behavioral/usage tip. There is no filler or redundancy, and key information is front-loaded.

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 strong annotations, complete parameter schema, output schema presence, and explicit sibling comparisons, the description covers purpose, usage, behavior, and parameter semantics thoroughly. Nothing material is missing for an agent to select and invoke this tool 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 both query and limit are already documented. The description goes further by explaining that the query supports affiliation or field words and that matching is fuzzy, which adds semantic value beyond the bare schema. The guidance to keep limit small also clarifies how the limit parameter relates to the fuzzy matching behavior.

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 starts with a specific verb and resource: 'Search for researchers by name' and enumerates the returned fields (affiliations, paper counts, h-index, identifiers). It also differentiates itself from the sibling tools search_papers and paper_info, making its purpose clear.

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 states when to use this tool: 'Use this for people, not papers,' and names the alternatives for each different case: search_papers for papers and paper_info for a paper's own author list. It also gives concrete disambiguation advice: add an affiliation or field word and keep limit small.

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

search_papersSearch academic papersA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoHard final order. Use relevance normally; citations and date replace the reranker's ordering.relevance
yearNoFilter by year or range (e.g., "2023", "2020-2024")
debugNoInclude per-source latency, provenance, and internal ranking diagnostics.
limitNoMaximum results to return (1-100, default 10)
queryYesSearch query (e.g., "attention is all you need", "CRISPR gene editing")
venueNoFilter by venue (e.g., "NeurIPS", "Nature")
intentNoSoft relevance focus used by reranking and expansion. Use balanced normally; alternatives are foundational, recent, survey, method, and dataset.balanced
paper_typesNoComma-separated types (e.g., "JournalArticle,Conference,Review,Book,Dataset"). Default: all types.
min_citationsNoMinimum citation count filter (default 0)
fields_of_studyNoComma-separated fields (e.g., "Computer Science,Mathematics")
open_access_onlyNoOnly return papers with free PDF access

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds meaningful behavioral detail: fan-out to live APIs under a time budget, degraded coverage reporting for timed-out sources, and duplicate merging across identities. No contradiction exists.

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 multi-sentence but every sentence earns its place: core function, usage routing, behavioral caveats, and a parameter-usage hint. It is organized and front-loaded without repetition or filler.

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?

The description covers purpose, sibling alternatives, failure-mode behavior, and parameter usage in a compact form. With an output schema present, return-value details are not needed. No critical information for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented. The description adds general guidance about where filters belong and the reranking behavior, which is helpful but does not need to re-explain individual 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 names a specific verb and resource ('Search for academic papers across many sources') and lists concrete sources, duplicate merging, and reranking. It also distinguishes itself from siblings by routing paper_info to identifier lookups, recommend_papers to expansion, and search_authors to people.

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 states when to use this tool ('find papers from a topic, a question, or a half-remembered title') and gives alternatives for other cases. It adds practical advice to put years, venues, and filters in parameters rather than the query text.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv0.8.3
    • Removedbuild_paper_graph
    • Removeddiscover_field
    • Addeddownload_paper
    • Removedknowledge_base
    • Changedpaper_info4 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedread_paper9 fields changed
      • removedInput schema / properties / extract_text
        Removed value: -{
        -  "default": true,
        -  "description": "If True, extract and return text. If False, just download PDF.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / max_pages
        Removed value: -{
        -  "default": 0,
        -  "description": "Maximum pages to extract (0 = all pages)",
        -  "type": "integer"
        -}
      • addedInput schema / properties / pages
        Added value: +{
        +  "default": "1-10",
        +  "description": "One-indexed page range. The default usually reaches the conclusion\nof an AI conference paper. Use ranges such as \"11-20\" for appendices.\nAt most 20 pages can be read per call.",
        +  "type": "string"
        +}
      • removedInput schema / properties / save_dir
        Removed value: -{
        -  "default": "",
        -  "description": "Directory to save PDF (default: configured download directory)",
        -  "type": "string"
        -}
      • addedInput schema / properties / visual
        Added value: +{
        +  "default": "",
        +  "description": "Optional selector returned by this tool, such as \"Figure 3\",\n\"Table 2\", or \"page 5\". Returns one focused visual with its text.",
        +  "type": "string"
        +}
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedrecommend_papers6 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum recommendations (1-500, default 10)"New value: +"Maximum results (default 10)"
      • addedInput schema / properties / relation
        Added value: +{
        +  "default": "similar",
        +  "description": "similar | peers | kin",
        +  "type": "string"
        +}
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Removedscholar_status
    • Changedsearch_authors4 fields changed
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Removedsearch_openreview
    • Changedsearch_papers11 fields changed
      • addedInput schema / properties / debug
        Added value: +{
        +  "default": false,
        +  "description": "Include per-source latency, provenance, and internal ranking diagnostics.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / intent / default
        Previous value: -""New value: +"balanced"
      • changedInput schema / properties / intent / description
        Previous value: -"Ranking preference. \"foundational\" for seminal papers, \"recent\" for latest work, \"survey\" for reviews, \"method\" for specific techniques. Default: balanced relevance."New value: +"Soft relevance focus used by reranking and expansion. Use\nbalanced normally; alternatives are foundational, recent, survey,\nmethod, and dataset."
      • addedInput schema / properties / intent / enum
        Added value: +[
        +  "balanced",
        +  "foundational",
        +  "recent",
        +  "survey",
        +  "method",
        +  "dataset"
        +]
      • changedInput schema / properties / sort / default
        Previous value: -""New value: +"relevance"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort results by \"citations\" (most cited first) or \"date\" (newest first). Default: relevance."New value: +"Hard final order. Use relevance normally; citations and date\nreplace the reranker's ordering."
      • addedInput schema / properties / sort / enum
        Added value: +[
        +  "relevance",
        +  "citations",
        +  "date"
        +]
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
  2. 10 tool updatesv0.6.0
    • First observedbuild_paper_graph
    • First observeddiscover_field
    • First observedknowledge_base
    • First observedpaper_info
    • First observedread_paper
    • First observedrecommend_papers
    • First observedscholar_status
    • First observedsearch_authors
    • First observedsearch_openreview
    • First observedsearch_papers

TDQS

A4.8/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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.

Maintenance

ActivityNo data
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Unified academic search MCP server that searches open literature (arXiv, bioRxiv, medRxiv, PMC), CNKI, and Web of Science, with browser-backed authentication, local paper library, and export to multiple formats.
    21
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that enables coding agents to search academic papers, ingest full-text PDFs, extract structured details, and manage citations in literature research workflows.
    27
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Academic paper search and retrieval MCP server integrating multiple scholarly platforms into a unified interface. Supports search, fetch, trend analysis, and literature review workflows.
    8
    42
    3
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Liyux3/scholar-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server