Skip to main content

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

Project description

๐Ÿ“„ paper-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-mcp

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

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

Install permanently

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

Local development

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

๐Ÿ–ฅ Claude Desktop Config

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "papers": {
      "command": "uvx",
      "args": ["paper-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-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-mcp.


โš™๏ธ CLI Options

usage: paper-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-mcp/
โ”œโ”€โ”€ pyproject.toml                  โ† packaging, entry point, deps
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ src/
    โ””โ”€โ”€ paper_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.6.0.tar.gz (97.3 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.6.0-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: paper_mcp-0.6.0.tar.gz
  • Upload date:
  • Size: 97.3 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.6.0.tar.gz
Algorithm Hash digest
SHA256 bd482fce8befa2ec1aa8e1b76678536ab1b1cc6295b4a494a0762cc4d8fc45db
MD5 466ab89998d1ec758abaeae1dca7c8c2
BLAKE2b-256 1db1699662fdd84b5d55a0c475f684f3a78d3ecf8dbac9ea6eadcac6913b6fef

See more details on using hashes here.

File details

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

File metadata

  • Download URL: paper_mcp-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 14.0 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.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a150dfabf9da5f408393e4961d92f26e6adcc1656536755f28f380fb88cbbea5
MD5 6425f704d564880905f30932fb8b7a12
BLAKE2b-256 9332625178fb4d0891d620130cb6f4388bdac4fdf403f1a29431be955ba809ef

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