Skip to main content
Glama
Academic Search MCP

Academic Search MCP

by ociupitu

Academic Search MCP Server

A Model Context Protocol (MCP) server that lets Claude Code (or any MCP client) search academic literature through the Semantic Scholar API. It is built for research workflows: relevance search with filters, batch metadata retrieval, and citation-graph recommendations.

This is a modified fork of afrise/academic-search-mcp-server. The server was rewritten on top of the official semanticscholar Python library and extended with batch and recommendation tools, bounded retry on rate limits, and clearer error handling. See Changes from upstream below.

Tools

Tool

What it does

search_papers

Relevance search with optional filters: year, fields_of_study, min_citation_count, venue, open_access_pdf.

search_by_topic

Same as search_papers, with a year_start/year_end range (kept for backward compatibility).

fetch_paper_details

Full metadata for a single paper by Semantic Scholar ID, DOI, or arXiv ID.

get_papers_batch

Details for up to 500 papers in one request — far cheaper than looping fetch_paper_details under the 1 req/sec limit.

recommend_papers

Citation-graph recommendations from seed paper IDs (positive_paper_ids, optional negative_paper_ids). Surfaces structurally similar work that keyword search misses.

Each tool returns a formatted text block per paper: ID, title, authors, year, DOI, venue, citation count, fields of study, open-access status, PDF URL, abstract, and TL;DR when available.

Related MCP server: Semantic Scholar MCP Server

Requirements

  • Python 3.10+

  • uv (recommended) — or plain pip

  • A Semantic Scholar API key is optional (see below)

Install

git clone https://github.com/ociupitu/academic-search-mcp.git
cd academic-search-mcp
uv sync          # creates .venv and installs dependencies from uv.lock

Prefer pip? pip install -e . inside a virtual environment works too.

API key (optional)

The server reads SEMANTIC_SCHOLAR_API_KEY from the environment, but it is optional:

  • Without a key — requests go through Semantic Scholar's shared anonymous pool. It works, but you are more likely to hit HTTP 429 rate limiting during busy periods.

  • With a free key — you get your own quota. Register at https://www.semanticscholar.org/product/api and set the variable (the .mcp.json example below wires it in).

Either way the server keeps requests sequential and does a short bounded retry on a 429, then returns a readable Error: string rather than hanging or silently returning "no results".

Use with Claude Code

Add the server to your client's MCP config (for Claude Code, a .mcp.json in your project root). Point --directory at wherever you cloned this repo, and use an absolute path:

{
  "mcpServers": {
    "academic-search": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/academic-search-mcp", "server.py"],
      "env": {
        "SEMANTIC_SCHOLAR_API_KEY": "YOUR_API_KEY_HERE"
      }
    }
  }
}

Leave the env block out entirely to run keyless. Restart your MCP client after editing the config.

Changes from upstream

  • Rewritten on the official semanticscholar library instead of hand-rolled httpx calls.

  • Added get_papers_batch (batch details) and recommend_papers (citation-graph recommendations).

  • Added search filters: fields_of_study, min_citation_count, venue, open_access_pdf, and a flexible year range.

  • Fail-fast client (retry=False) plus a bounded in-server retry on 429, so a throttle recovers in seconds or returns a clean error instead of blocking for minutes.

  • Dropped the Crossref path; Semantic Scholar is the single source.

License

AGPL-3.0, inherited from the upstream project. See LICENSE. If you redistribute or run a modified version as a network service, the AGPL's source-availability terms apply.

Available Tools

5 tools
fetch_paper_detailsA

Get detailed information about a single paper.

Args:
    paper_id: a Semantic Scholar paper ID, or a DOI, arXiv ID, etc.

Inputs: paper_id (required).

get_papers_batchA

Fetch details for many papers in ONE request (up to 500).

Far more efficient than calling fetch_paper_details in a loop: a single
request returns all of them, which matters under the 1 request/second limit.

Args:
    paper_ids: Semantic Scholar paper IDs (or DOIs, arXiv IDs, etc.).

Inputs: paper_ids (required).

recommend_papersA

Recommend papers similar to seed papers, via the citation graph.

Use this as a second discovery channel: keyword search finds papers that
share vocabulary, while recommendations surface structurally similar papers
in OTHER empirical domains that keyword search misses. Seed it with the
paper IDs of the best on-target hits from a search.

Args:
    positive_paper_ids: IDs the results should resemble (at least one required).
    negative_paper_ids: IDs to steer recommendations away from (optional).
    limit: maximum number of recommendations (default 10, capped at 100).

Inputs: positive_paper_ids (required), limit, negative_paper_ids.

search_by_topicA

Search papers by topic with an optional year range and filters.

Thin wrapper over search_papers that maps a year_start/year_end pair to the
API's year-range string. See search_papers for the filter semantics.

Args:
    topic: the search query string.
    year_start: start year (inclusive).
    year_end: end year (inclusive).
    limit: maximum number of results (default 10, capped at 100).
    fields_of_study: restrict to fields, e.g. ["Economics", "Business"].
    min_citation_count: drop papers with fewer citations than this.

Inputs: topic (required), limit, year_end, year_start, +2 more.

search_papersB

Relevance search for papers on Semantic Scholar.

Args:
    query: the search query string.
    limit: maximum number of results (default 10, capped at 100).
    year: a single year or range, e.g. "2018", "2015-2022", "2016-", "-2015".
    fields_of_study: restrict to fields, e.g. ["Economics", "Business"].
    min_citation_count: drop papers with fewer citations than this.
    venue: restrict to venues, e.g. ["Marketing Science"].
    open_access_pdf: if True, only return papers that have an open-access PDF.

Inputs: query (required), year, limit, venue, +3 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 5 tools

    Disambiguation4/5

    Tools have distinct purposes: single/batch fetch, search, and recommendation. The two search tools (search_by_topic, search_papers) have overlapping functionality, but the descriptions clarify that search_by_topic is a convenience wrapper with year range parameters, reducing ambiguity.

    Naming Consistency5/5

    All tools follow a verb_noun pattern in snake_case (e.g., fetch_paper_details, get_papers_batch, recommend_papers, search_papers). The slight deviation of search_by_topic (verb_preposition_noun) is minor and still predictable.

    Tool Count5/5

    Five tools cover the core operations of an academic search server: single/batch retrieval, two search variants, and recommendation. The scope is well-defined, and no tool feels redundant or missing for the stated purpose.

    Completeness4/5

    The tool set covers essential tasks: search, retrieve, and recommend. However, it lacks tools for fetching citations, references, or author details, which are common in academic search. This is a minor gap for a complete workflow.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables searching and retrieving academic paper data, author profiles, and citation networks through the Semantic Scholar API, including paper and author search, batch lookups, citation and reference tracking, snippet search, and paper recommendations.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables searching for academic papers, authors, and citation networks through the Semantic Scholar API. Supports full-text and title search, batch lookups, citation and reference tracking, author profiles, and paper recommendations.
      -
    • F
      license
      Not graded
      quality
      A
      maintenance
      Enables querying academic papers, author profiles, and citation networks through the Semantic Scholar API. Supports full-text and title search, batch paper and author lookups, citation and reference tracking, and single- or multi-paper recommendations via natural language.
      -