arXiv MCP Server
A Model Context Protocol (MCP) server that enables LLMs to search, download, and read arXiv papers. Gives AI assistants direct access to scientific literature.
Features
- Search papers - Search by title, keywords, author, or arXiv ID
- Read full text - Download PDFs and extract text automatically
- Section extraction - Get specific sections (abstract, introduction, methods, conclusion)
- Local caching - Downloaded papers are cached locally for fast re-access
- Zero configuration - Works out of the box with sensible defaults
Getting Started
Prerequisites
This MCP server uses uvx to run. First, install uv:
# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or using Homebrew
brew install uv
After installation, restart your terminal.
Installation
Install the arXiv MCP server with your client.
Standard config works in most tools:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Amp
amp mcp add arxiv -- uvx arxiv-paper-mcp-server
Claude Code
claude mcp add arxiv-server -- uvx arxiv-paper-mcp-server
Claude Desktop
Add to your claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Codex
codex mcp add arxiv -- uvx arxiv-paper-mcp-server
Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Factory
Add to Factory MCP settings:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Gemini CLI
gemini mcp add arxiv -- uvx arxiv-paper-mcp-server
Goose
Run goose configure, then add to ~/.config/goose/config.yaml:
extensions:
arxiv:
command: uvx
args:
- arxiv-paper-mcp-server
Kiro
Add to Kiro MCP settings:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
LM Studio
Add to LM Studio MCP settings:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
opencode
opencode mcp add arxiv -- uvx arxiv-paper-mcp-server
Qodo Gen
Add to Qodo Gen MCP configuration:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
VS Code
Add to .vscode/mcp.json in your workspace:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Warp
Add to Warp MCP settings:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Windsurf
Add to ~/.windsurf/mcp.json:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-paper-mcp-server"]
}
}
}
Using pip
pip install arxiv-paper-mcp-server
arxiv-mcp-server
Tools
| Tool | Description |
|---|---|
search | Search arXiv papers by title, keywords, or arXiv ID (e.g., 2401.12345) |
get_paper | Download and read the full text of a paper, with optional section filtering |
list_downloaded_papers | List all locally cached papers |
Tool Details
search(query, max_results=10)
Search for papers on arXiv. Supports:
- Keywords:
"transformer attention mechanism" - Paper ID:
"2401.12345"or"arXiv:2401.12345" - Author:
"Yann LeCun"
Returns paper ID, title, authors, publication date, and abstract preview.
get_paper(paper_id, section="all")
Download and extract text from a paper.
| Section | Description |
|---|---|
all | Full paper text (default) |
abstract | Abstract only |
introduction | Introduction section |
method | Methods/Approach section |
conclusion | Conclusion/Discussion section |
list_downloaded_papers()
List all papers that have been downloaded and cached locally.
Configuration
| Environment Variable | Description | Default |
|---|---|---|
ARXIV_STORAGE_DIR | Directory for downloaded papers | ~/.arxiv-mcp/papers |
Usage Examples
Search for papers:
User: Find recent papers about prompt compression
Claude: [Uses search("prompt compression", max_results=5)]
Found 5 papers:
- 2504.16574: PIS: Linking Importance Sampling...
- ...
Read a specific paper:
User: Read the introduction of paper 2401.12345
Claude: [Uses get_paper("2401.12345", section="introduction")]
[Returns the introduction section]
Review cached papers:
User: What papers have I downloaded?
Claude: [Uses list_downloaded_papers()]
You have 3 papers cached locally:
- 2401.12345: Paper Title...
Development
# Clone the repository
git clone https://github.com/AnnaSuSu/arxiv-mcp.git
cd arxiv-mcp
# Install dependencies
uv sync
# Run server locally
uv run arxiv-mcp-server
Requirements
- Python 3.10+
- Dependencies:
mcp,arxiv,pymupdf
License
MIT License - see LICENSE for details.