Skip to main content

Academia MCP

PyPI CI License smithery badge Verified on MseeP

MCP server with tools to search, fetch, analyze, and report on scientific papers and datasets.

Features

  • ArXiv search and download
  • ACL Anthology search
  • Hugging Face datasets search
  • Semantic Scholar citations and references
  • Web search via Exa, Brave, or Tavily
  • Web page crawler, LaTeX compilation, PDF reading
  • Optional LLM-powered tools for document QA and research proposal workflows

Requirements

  • Python 3.12+

Install

  • Using pip (end users):
pip3 install academia-mcp
  • For development (uv + Makefile):
uv venv .venv
make install

Quickstart

  • Run over HTTP (default transport):
python -m academia_mcp --transport streamable-http
# OR
uv run -m academia_mcp --transport streamable-http
  • Run over stdio (for local MCP clients like Claude Desktop):
python -m academia_mcp --transport stdio
# OR
uv run -m academia_mcp --transport stdio

Notes:

  • Transports: stdio, sse, streamable-http.
  • host/port are used for HTTP transports; ignored for stdio. Default port is 5056 (or PORT).

Authentication

Academia MCP supports optional token-based authentication for HTTP transports (streamable-http and sse). Authentication is disabled by default to maintain backward compatibility.

Enabling Authentication

Set the ENABLE_AUTH environment variable to true:

export ENABLE_AUTH=true
export TOKENS_FILE=/path/to/tokens.json  # Optional, defaults to ./tokens.json

Managing Tokens

Issue a new token:

academia_mcp auth issue-token --client-id=my-client --description="Production API client"

# Issue token with 30-day expiration
academia_mcp auth issue-token --client-id=test-client --expires-days=30

# Issue token with custom scopes
academia_mcp auth issue-token --client-id=admin --scopes="read,write,admin"

List active tokens:

academia_mcp auth list-tokens

Revoke a token:

academia_mcp auth revoke-token mcp_a1b2c3d4e5f6...

Using Tokens

Include the token in the Authorization header with the Bearer scheme or as a query parameter apiKey.

Security Notes:

  • Tokens are displayed only once during issuance. Store them securely.
  • Use HTTPS in production to protect tokens in transit.
  • The tokens.json file is automatically created with restrictive permissions (mode 600).
  • Tokens are stored in plaintext (standard practice for bearer tokens) - protect the tokens file.

Claude Desktop config

{
  "mcpServers": {
    "academia": {
      "command": "python3",
      "args": [
        "-m",
        "academia_mcp",
        "--transport",
        "stdio"
      ]
    }
  }
}

Available tools (one-liners)

  • arxiv_search: Query arXiv with field-specific queries and filters.
  • arxiv_download: Fetch a paper by ID and convert to structured text (HTML/PDF modes).
  • anthology_search: Search ACL Anthology with fielded queries and optional date filtering.
  • hf_datasets_search: Find Hugging Face datasets with filters and sorting.
  • s2_get_citations: List papers citing a given arXiv paper (Semantic Scholar Graph).
  • s2_get_references: List papers referenced by a given arXiv paper.
  • visit_webpage: Fetch and normalize a web page.
  • web_search: Unified search wrapper; available when at least one of Exa/Brave/Tavily keys is set.
  • exa_web_search, brave_web_search, tavily_web_search: Provider-specific search.
  • get_latex_templates_list, get_latex_template: Enumerate and fetch built-in LaTeX templates.
  • compile_latex: Compile LaTeX to PDF in WORKSPACE_DIR.
  • read_pdf: Extract text per page from a PDF.
  • download_pdf_paper, review_pdf_paper: Download and optionally review PDFs (requires LLM + workspace).
  • document_qa: Answer questions over provided document chunks (requires LLM).
  • extract_bitflip_info, generate_research_proposals, score_research_proposals: Research proposal helpers (requires LLM).

Availability notes:

  • Set WORKSPACE_DIR to enable compile_latex, read_pdf, download_pdf_paper, and review_pdf_paper.
  • Set OPENROUTER_API_KEY to enable LLM tools (document_qa, review_pdf_paper, and bitflip tools).
  • Set one or more of EXA_API_KEY, BRAVE_API_KEY, TAVILY_API_KEY to enable web_search and provider tools.

Environment variables

Set as needed, depending on which tools you use:

  • OPENROUTER_API_KEY: required for LLM-related tools.
  • BASE_URL: override OpenRouter base URL.
  • DOCUMENT_QA_MODEL_NAME: override default model for document_qa.
  • BITFLIP_MODEL_NAME: override default model for bitflip tools.
  • TAVILY_API_KEY: enables Tavily in web_search.
  • EXA_API_KEY: enables Exa in web_search and visit_webpage.
  • BRAVE_API_KEY: enables Brave in web_search.
  • WORKSPACE_DIR: directory for generated files (PDFs, temp artifacts).
  • PORT: HTTP port (default 5056).

You can put these in a .env file in the project root.

Docker

Build the image:

docker build -t academia_mcp .

Run the server (HTTP):

docker run --rm -p 5056:5056 \
  -e PORT=5056 \
  -e OPENROUTER_API_KEY=your_key_here \
  -e WORKSPACE_DIR=/workspace \
  -v "$PWD/workdir:/workspace" \
  academia_mcp

Or use existing image: phoenix120/academia_mcp

Examples

Makefile targets

  • make install: install the package in editable mode with uv
  • make validate: run black, flake8, and mypy (strict)
  • make test: run the test suite with pytest
  • make publish: build and publish using uv

LaTeX/PDF requirements

Only needed for LaTeX/PDF tools. Ensure a LaTeX distribution is installed and pdflatex is on PATH, as well as latexmk. On Debian/Ubuntu:

sudo apt install texlive-latex-base texlive-fonts-recommended texlive-latex-extra texlive-science latexmk

Download files

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

Source Distribution

iflow_mcp_ilyagusev_academia_mcp-1.13.6.tar.gz (64.5 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file iflow_mcp_ilyagusev_academia_mcp-1.13.6.tar.gz.

File metadata

  • Download URL: iflow_mcp_ilyagusev_academia_mcp-1.13.6.tar.gz
  • Upload date:
  • Size: 64.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_ilyagusev_academia_mcp-1.13.6.tar.gz
Algorithm Hash digest
SHA256 282a2b7912f516bb1b25c9d75acbcf81a0795aaa488131bcd2811e889400e09f
MD5 207e6fb57122b23b0dd53b290d023dfd
BLAKE2b-256 3d53520bf81459407be72050568b8abf34ce97ef2085567c425d2e12dc8eeb96

See more details on using hashes here.

File details

Details for the file iflow_mcp_ilyagusev_academia_mcp-1.13.6-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_ilyagusev_academia_mcp-1.13.6-py3-none-any.whl
  • Upload date:
  • Size: 65.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_ilyagusev_academia_mcp-1.13.6-py3-none-any.whl
Algorithm Hash digest
SHA256 7b172eac4e4ddf10cc92d5237be965f289e00276e5ade8335d5acbd44d3e5fc8
MD5 c904bb44d8d3a156b1d097af26e92551
BLAKE2b-256 678cc84bf8b9075f0eed8155d6537f3d4c649970472fe4703363afcb7ee03e68

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.13.6 This release

2 files

1.13.5

2 files

1.13.4

2 files

Supported by

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