Skip to main content

Academic Search MCP Server

An MCP (Model Context Protocol) server for searching, filtering, and exploring academic papers across multiple databases, with citation graph walking.

Providers: Semantic Scholar, Crossref, OpenAlex, PubMed

Features

  • Multi-provider search — unified interface across 4 academic databases
  • Universal regex filtering — regex post-filtering on all providers (not just Semantic Scholar)
  • Rich post-hoc filters — year range, citation count, journal, publication type, open access, author
  • Citation graph walk — random walk on the Semantic Scholar citation graph with backtracking, cross-edge detection, and topic-aware pruning
  • Text similarity — pure-Python TF cosine similarity for topic drift detection and most-similar candidate selection (no heavy dependencies)
  • Stats — per-query metadata on authors, years, and field coverage
  • Normalised output — all providers return data in the same schema

Tools

search_papers

Search papers by keyword with optional regex post-filtering on title and abstract.

Parameters: query, search_type, limit, regex_filter, regex_search_fields, match_mode, year_min, year_max, min_citation_count, max_citation_count, open_access_only, has_pdf, journal, exclude_journals, publication_types, exclude_publication_types, author, has_abstract, provider

search_by_author

Find papers by author name with the same post-hoc filters.

explore_citations

Walk the Semantic Scholar citation graph step by step, starting from a seed paper.

Parameter Default Description
seed_paper_id (required) S2 paper ID
num_steps 30 Max walk length
max_depth None Max hops from seed before forced backtrack
direction_choice "random" "forward", "backward", "alternating", or "random"
bias "random" "top_cited", "bottom_cited", "most_similar", or "random"
candidates_per_step 100 Candidates per API call
stop_similarity None 0.0–1.0 topic drift threshold

Includes the same post-hoc filters as search_papers.

get_paper_stats

Fetch papers and compute statistics: field availability, author counts, publication year distributions.

build_extended_query

Preview how a regex pattern gets transformed for a given provider's API.

Usage

Via uvx (recommended)

uvx academic-search

Via uv run

uv run --with academic-search academic-search

From source

git clone ...
cd academic-search
uv run academic-search

With Claude Desktop

{
  "mcpServers": {
    "academic-search": {
      "command": "uvx",
      "args": ["academic-search"]
    }
  }
}

Development

uv sync
uv run academic-search

Providers

Provider Citation graph Notes
Semantic Scholar Yes Full citation/reference graph endpoints, citation counts
Crossref No Good DOI coverage, no OA metadata
OpenAlex No Best OA metadata, abstracts from inverted index
PubMed No NIH literature

Design Notes

  • query and regex_filter are separate — the API query is plain text; regex filtering is a post-hoc step on all providers
  • Citation walk is a true graph walk — one step at a time, not bucket collection. Uses backtracking, cross-edge recording, and per-step filtering
  • Caching — API responses for (paper_id, direction) are cached per walk to avoid redundant fetches during backtracking
  • Text similarity — pure-Python TF cosine similarity (no sentence-transformers); used for most_similar bias and stop_similarity pruning
  • No API key required — all providers have free tiers, but Semantic Scholar rate limits are ~1 req/5s without a key. Set S2_API_KEY for up to 100 req/s

Metadata

Release files for academic-search 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for academic-search 0.8.0
File Size Uploaded
academic_search-0.8.0.tar.gz 23.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for academic-search 0.8.0
File Interpreter ABI Platform
academic_search-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 56.0 kB

Release files / academic_search-0.8.0.tar.gz

Download URL academic_search-0.8.0.tar.gz
Size 23.2 kB
Tags Source
SHA-256 checksum
How to use checksums
d6125a186e4a72528e4355ca6576c96dddcbb6e1aa2ef98ea3a9495bd1a1b607
BLAKE2b-256 checksum
How to use checksums
1fccdf3ee756f93ae4597511d32fbb8c25293e82b53518c1db558de9911bd489
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / academic_search-0.8.0-py3-none-any.whl

Download URL academic_search-0.8.0-py3-none-any.whl
Size 32.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c63ddb12c9f04e873f2f870d47e0671d3155888b551bdbfc0f9688e2036270fd
BLAKE2b-256 checksum
How to use checksums
d9f9114f685d11d8104ef7cbc16b944828d2cd3f85929bd08c5ff0b06514c5e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Fedora Linux","version":"44","id":"","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page