Skip to main content

MCP server that retrieves academic papers by title โ€” metadata, PDF, full text, citations, references.

Project description

๐Ÿ“„ paper-search-mcp

An MCP server built with FastMCP that lets Claude (or any LLM) retrieve academic papers by title.
Run it in one command with uvx โ€” no manual install needed.


โœจ Features

5 tools, all taking paper_title as the only argument:

Tool Returns
paper_get_metadata Title, authors, abstract, DOI, arXiv ID, citation count, TL;DR, OA status, fields of study
paper_get_pdf Best open-access PDF URL
paper_get_fulltext Full plain text (up to 50,000 chars)
paper_get_citations Up to 100 papers that cite this one
paper_get_references Up to 100 papers this one cites

Data sources (priority order): Semantic Scholar โ†’ arXiv โ†’ Unpaywall โ†’ Lightpanda browser via gomcp


๐Ÿš€ Quick Start

Run without installing (uvx)

# stdio mode โ€” for Claude Desktop / most MCP clients
uvx paper-search-mcp

# SSE mode โ€” for remote or multi-client setups
uvx paper-search-mcp --transport sse --port 8000

uvx downloads, installs (in an isolated env), and runs the package โ€” zero setup.

Install permanently

uv tool install paper-search-mcp
paper-search-mcp                        # now available globally
paper-search-mcp --transport sse

Local development

git clone https://github.com/yourname/paper-search-mcp
cd paper-search-mcp
uv sync                                 # install all deps from pyproject.toml
uv run paper-search-mcp                 # run directly
uv run paper-search-mcp --transport sse

๐Ÿ–ฅ Claude Desktop Config

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "papers": {
      "command": "uvx",
      "args": ["paper-search-mcp"]
    }
  }
}

No Python paths, no venv activation โ€” uvx handles everything.


๐ŸŒ Browser Fallback (gomcp / Lightpanda)

For JS-rendered publisher pages, the server automatically starts a Lightpanda headless browser via gomcp.

One-time setup:

# Download gomcp binary from GitHub releases:
# https://github.com/lightpanda-io/gomcp/releases

# Then download the Lightpanda browser binary:
gomcp download

If gomcp is not installed, the server still works โ€” browser-dependent paths fall back to abstract/metadata gracefully.


๐Ÿ— Architecture

Claude (LLM)
    โ”‚  MCP (stdio or SSE)
    โ–ผ
paper-search-mcp  [FastMCP, Python]
    โ”‚
    โ”œโ”€โ”€ Semantic Scholar API  โ”€โ”€  metadata, citations, references
    โ”œโ”€โ”€ arXiv API + HTML      โ”€โ”€  preprint info + full text
    โ”œโ”€โ”€ Unpaywall API         โ”€โ”€  open-access PDF by DOI
    โ””โ”€โ”€ gomcp SSE  โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Lightpanda browser (JS fallback)
             โ”‚  CDP
             โ””โ”€โ”€ Lightpanda Browser (headless)

๐Ÿ“ฆ Publishing to PyPI

# Build
uv build

# Publish (needs PyPI token)
uv publish --token $PYPI_TOKEN

Once on PyPI, anyone can run it with uvx paper-search-mcp.


โš™๏ธ CLI Options

usage: paper-search-mcp [-h] [--transport {stdio,sse}] [--port PORT] [--host HOST]

options:
  --transport  stdio (default) or sse
  --port       SSE port (default: 8000)
  --host       SSE host (default: 127.0.0.1)

๐Ÿ”‘ Notes

  • Semantic Scholar free tier: ~100 req/5 min. For higher throughput, set S2_API_KEY in the environment and add it to the httpx client headers in server.py.
  • Unpaywall requires a valid contact email โ€” update UNPAYWALL_EMAIL in server.py.
  • Full text is only available for arXiv papers (HTML renderer) and JS-rendered pages reachable via gomcp. Paywalled PDFs require institutional access.

๐Ÿ“ Project Structure

paper-search-mcp/
โ”œโ”€โ”€ pyproject.toml                  โ† packaging, entry point, deps
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ src/
    โ””โ”€โ”€ paper_search_mcp/
        โ”œโ”€โ”€ __init__.py
        โ””โ”€โ”€ server.py               โ† all 5 FastMCP tools + main()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

paper_mcp-0.2.0.tar.gz (95.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

paper_mcp-0.2.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file paper_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: paper_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 95.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for paper_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 c3fd320e013b21f9c43ddd9dd4884e827015f1efa95bfc4e61da552200927908
MD5 c881dede5ef24092a7fa73f9adbd0911
BLAKE2b-256 685040c9c3efe831ff6706f35c2ac20164c8d2edc4b83ac5ba3df3d5293029af

See more details on using hashes here.

File details

Details for the file paper_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: paper_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.24 {"installer":{"name":"uv","version":"0.9.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for paper_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 443fa393c8beabcce609dbfab6acf616dbed1069b59da859895178f9e601de65
MD5 2ec3b0e43bcb7af66cc7a14fd4723827
BLAKE2b-256 eb94b9ef3fff6f26121456f5e94552f225913552f84d5a4d7570fdad25f0e492

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page