Skip to main content
Glama
Ray0907

arXiv MCP Server

by Ray0907

arXiv MCP Server

A Model Context Protocol (MCP) server that provides arXiv paper search and retrieval capabilities. This server enables LLMs to search for academic papers on arXiv and get cleaned titles, abstracts, authors, and content without dealing with complex HTML parsing.

Features

  • Search papers by query, author, category, and date

  • Advanced search with specific field filters

  • Get detailed paper metadata (title, abstract, authors, categories)

  • Retrieve full paper content via Jina Reader

  • Browse recent papers by category

  • List all arXiv categories

  • Pagination support for search results

Related MCP server: arXiv MCP Server

Available Tools

Search arXiv for papers matching a query.

Argument

Type

Required

Description

query

string

Yes

Search query (e.g., 'LLM', 'transformer')

category

string

No

Filter by category (e.g., 'cs.AI', 'cs.LG')

author

string

No

Filter by author name

sort_by

string

No

Sort order: 'relevance', 'date_desc', 'date_asc'

page

int

No

Page number (default: 1)

page_size

int

No

Results per page, max 50 (default: 25)

search_advanced

Advanced search with specific field filters.

Argument

Type

Required

Description

title

string

No

Search in paper titles

abstract

string

No

Search in abstracts

author

string

No

Search by author name

category

string

No

Filter by category

id_arxiv

string

No

Search by arXiv ID pattern

date_from

string

No

Start date (YYYY-MM-DD)

date_to

string

No

End date (YYYY-MM-DD)

sort_by

string

No

Sort order

page

int

No

Page number

page_size

int

No

Results per page

get_paper

Get detailed information about a specific arXiv paper.

Argument

Type

Required

Description

id_or_url

string

Yes

arXiv ID (e.g., '2301.00001') or full URL

get_content

Get the full text content of an arXiv paper using Jina Reader.

Argument

Type

Required

Description

id_or_url

string

Yes

arXiv ID or full URL

get_recent

Get recent papers from a specific arXiv category.

Argument

Type

Required

Description

category

string

No

Category code (default: 'cs.AI')

count

int

No

Number of papers, max 50 (default: 10)

list_categories

List all common arXiv categories with their codes and names.

Installation

# Clone the repository
git clone https://github.com/Ray0907/arXiv-mcp.git
cd arXiv-mcp

# Install with uv
uv sync

Using pip

# Clone the repository
git clone https://github.com/Ray0907/arXiv-mcp.git
cd arXiv-mcp

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install
pip install -e .

Configuration

Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "arxiv": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/arXiv-mcp",
        "run",
        "arxiv-mcp"
      ]
    }
  }
}

Claude Code

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "arxiv": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/arXiv-mcp",
        "run",
        "arxiv-mcp"
      ]
    }
  }
}

Usage Examples

Search for papers about LLMs

Search for recent papers about "large language models"

Find papers by a specific author

Search for papers by "Yann LeCun" in the machine learning category

Get paper details

Get the details of arXiv paper 2301.00001

Browse recent papers

Show me the 10 most recent papers in cs.AI

Development

Run tests

uv run pytest

Run the server locally

uv run arxiv-mcp

Common arXiv Categories

Code

Name

cs.AI

Artificial Intelligence

cs.CL

Computation and Language

cs.CV

Computer Vision and Pattern Recognition

cs.LG

Machine Learning

cs.NE

Neural and Evolutionary Computing

stat.ML

Machine Learning (Statistics)

Use list_categories tool to get the full list.

Changelog

v0.4.0

Breaking Changes:

  • Upgraded to MCP Python SDK v2 (mcp>=2.0.0); server now uses MCPServer (formerly FastMCP)

  • Structured output: all tools declare an outputSchema and return typed structured content (search/search_advanced return SearchResult, get_paper returns Paper, get_recent returns RecentPapers)

  • list_categories structured content is wrapped as {"result": [...]} because the MCP spec requires structuredContent to be a JSON object

  • Errors no longer return {"error": "..."} dicts or error strings; all failures (HTTP errors, invalid arXiv ID, missing search fields) now raise and surface as standard MCP tool errors

Improvements:

  • New RecentPapers model for get_recent responses

v0.3.0

Breaking Changes:

  • Renamed all tools to snake_case: search_advanced, get_paper, get_content, get_recent, list_categories (existing client configurations referencing camelCase names must be updated)

Security:

  • Fixed SSRF bypass in get_content: non-arxiv.org URLs containing a valid arXiv ID in the path (e.g. https://evil.com/abs/2301.00001) are now correctly rejected

Improvements:

  • All tools are now async def using httpx.AsyncClient

  • HTTP errors return {"error": "..."} dicts instead of raising exceptions, so the LLM can read and retry

  • All tools annotated with readOnlyHint: true and openWorldHint: true

  • SearchResult now includes has_more: bool and next_page: int | null for easier pagination

  • list_categories pre-computes the category list at import time instead of on every call

v0.2.0

Breaking Changes:

  • Renamed entry point from arxiv-server.py to arxiv-mcp command

  • Renamed get tool to getContent for clarity

New Features:

  • searchAdvanced - Advanced search with title, abstract, date range filters

  • getPaper - Get detailed paper metadata (authors, categories, dates, PDF URL)

  • getRecent - Browse recent papers by category

  • listCategories - List 33 common arXiv categories

  • Pagination support (page, page_size parameters)

  • Sort options (relevance, date_desc, date_asc)

  • Filter by author and category in basic search

Improvements:

  • Migrated to pyproject.toml with uv for dependency management

  • Replaced requests with httpx (async-ready)

  • Added Pydantic models for type-safe data structures

  • Reduced dependencies from 33 to 4 core packages

  • Added proper timeout handling (30s)

  • Modular project structure (src/arxiv_mcp/)

v0.1.0

  • Initial release

  • Basic search and get tools

License

MIT License - see LICENSE for details.

Available Tools

6 tools
getContentA
Get the full text content of an arXiv paper using Jina Reader.

Args:
	id_or_url: arXiv paper ID (e.g., '2301.00001') or full arXiv URL

Returns:
	Full text content of the paper in markdown format
ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the tool fetches content via Jina Reader and returns markdown, but doesn't mention rate limits, authentication needs, error conditions, or whether it caches results. It adds some behavioral context but lacks details on operational constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement, followed by Args and Returns sections. Every sentence adds value: the first states what it does, the second explains the parameter, and the third specifies the output format. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (fetching content from arXiv), no annotations, and an output schema that likely defines the return structure, the description is mostly complete. It covers purpose, parameter semantics, and output format, but could improve by adding usage guidelines relative to siblings and more behavioral details like error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It clearly explains the single parameter 'id_or_url' as an arXiv paper ID or full URL, with an example ('2301.00001'), adding crucial meaning beyond the schema's generic string type. This fully addresses the parameter's purpose and format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get the full text content') and resource ('an arXiv paper'), using the Jina Reader service. It distinguishes from siblings like getPaper (likely metadata), getRecent (recent papers), listCategories (categories), and search/searchAdvanced (searching rather than retrieving full content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when full text content in markdown format is needed, but doesn't explicitly state when to use this tool versus alternatives like getPaper (which might return metadata only). It provides context about using Jina Reader but lacks explicit exclusions or comparisons with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getPaperA
Get detailed information about a specific arXiv paper.

Args:
	id_or_url: arXiv paper ID (e.g., '2301.00001') or full arXiv URL

Returns:
	Paper details including title, abstract, authors, categories, and URLs
ParametersJSON Schema
NameRequiredDescriptionDefault
id_or_urlYes

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, error conditions, or what happens with invalid IDs/URLs. The description only states what it returns, not how it behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. Every sentence adds value: the first states the tool's function, the second explains the parameter, and the third outlines the return data. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (single parameter, no output schema, no annotations), the description is partially complete. It covers the parameter semantics well and lists return fields, but lacks behavioral context like error handling or operational constraints, which is important for a tool interacting with an external API.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant semantic value beyond the input schema, which has 0% description coverage. It explains that 'id_or_url' accepts either an arXiv paper ID (with an example '2301.00001') or a full arXiv URL, clarifying the parameter's purpose and format that the schema alone doesn't provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get detailed information') and resource ('about a specific arXiv paper'), distinguishing it from sibling tools like getRecent (recent papers), listCategories (categories), and search/searchAdvanced (searching). The verb+resource combination is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'a specific arXiv paper,' suggesting this tool is for known papers rather than discovery. However, it doesn't explicitly state when NOT to use it or name alternatives like getContent (which might fetch full text) or search (for unknown papers), leaving some guidance gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getRecentB
Get recent papers from a specific arXiv category.

Args:
	category: arXiv category code (default: 'cs.AI')
	count: Number of papers to retrieve (max 50, default: 10)

Returns:
	Recent papers from the specified category
ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNocs.AI
countNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions default values and a maximum count ('max 50'), which adds some context, but it doesn't cover critical aspects like rate limits, authentication needs, error handling, or what 'recent' means (e.g., time frame). For a tool with no annotations, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured 'Args' and 'Returns' sections. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, no output schema), the description is minimally adequate. It covers purpose and parameters but lacks usage guidelines, detailed behavioral traits, and output specifics. With no output schema, it should ideally explain return values more thoroughly, but the basic structure keeps it from being incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'category' is an 'arXiv category code' with a default, and 'count' is the 'Number of papers to retrieve' with a max and default. This compensates well for the schema's lack of descriptions, though it doesn't detail category code formats or retrieval logic fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get recent papers from a specific arXiv category.' It specifies the verb ('Get'), resource ('recent papers'), and scope ('from a specific arXiv category'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'search' or 'searchAdvanced', which might also retrieve papers, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'search', 'searchAdvanced', 'getPaper', and 'getContent', there's no indication of scenarios where 'getRecent' is preferred (e.g., for time-based retrieval vs. keyword-based searches) or any prerequisites. This lack of context leaves the agent to guess based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

listCategoriesA
List all common arXiv categories.

Returns:
	List of arXiv categories with code, name, and group
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the return format ('List of arXiv categories with code, name, and group'), which is valuable behavioral information. However, it lacks details on rate limits, authentication needs, error conditions, or whether the list is static/dynamic. The description adds some context but leaves gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured: one sentence states the purpose, followed by a clear 'Returns:' section detailing the output format. Every sentence earns its place with zero redundant information. It's front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, output schema exists), the description is reasonably complete. The output schema will document return values, so the description needn't explain them in detail. However, for a tool with no annotations, it could benefit from more behavioral context (e.g., caching, freshness). The description covers the essentials but has minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description appropriately doesn't waste space on parameters, maintaining focus on the tool's purpose and output. Baseline for 0 parameters is 4, as no parameter explanation is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List all common arXiv categories' specifies the verb (list) and resource (arXiv categories). It distinguishes from siblings like getPaper or search by focusing on category metadata rather than paper content or search operations. However, it doesn't explicitly differentiate from all siblings (e.g., getContent could potentially overlap).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, appropriate contexts, or contrast with sibling tools like getRecent or searchAdvanced. The agent must infer usage from the purpose alone without explicit when/when-not instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

searchAdvancedB
Advanced search with specific field filters.

Args:
	title: Search in paper titles
	abstract: Search in abstracts
	author: Search by author name
	category: Filter by arXiv category (e.g., 'cs.AI', 'cs.LG')
	id_arxiv: Search by arXiv ID pattern
	date_from: Start date filter (YYYY-MM-DD format)
	date_to: End date filter (YYYY-MM-DD format)
	sort_by: Sort order - 'relevance', 'date_desc', 'date_asc'
	page: Page number (default: 1)
	page_size: Results per page, max 50 (default: 25)

Returns:
	Search results with papers containing title, abstract, authors, and URLs
ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
abstractNo
authorNo
categoryNo
id_arxivNo
date_fromNo
date_toNo
sort_byNorelevance
pageNo
page_sizeNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions pagination behavior (page, page_size with max 50) and sort options, which is helpful. However, it doesn't cover important aspects like rate limits, authentication requirements, error conditions, or whether this is a read-only operation (though 'search' implies read-only).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections for Args and Returns. Each parameter explanation is concise yet informative. The opening sentence efficiently states the purpose. Minor improvement could be made by front-loading more context about when to use this versus other search tools.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter search tool with no annotations and no output schema, the description does a good job with parameters but has gaps. It explains what the tool returns at a high level but doesn't detail the response structure or error handling. The lack of usage guidelines relative to siblings is a significant completeness gap given the tool ecosystem.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description provides comprehensive parameter documentation that fully compensates. It explains each of the 10 parameters with clear semantics, including format requirements (YYYY-MM-DD), default values, constraints (max 50 for page_size), and enum values for sort_by. This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'Advanced search with specific field filters' which is a specific verb+resource combination. It distinguishes itself from the simpler 'search' sibling tool by emphasizing 'advanced' capabilities. However, it doesn't explicitly contrast with other siblings like 'getRecent' or 'getPaper'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the simpler 'search' sibling or other alternatives like 'getRecent' or 'getPaper'. It mentions 'advanced search' but doesn't explain what makes it advanced compared to basic search or when field filtering is preferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation3/5

Most tools have distinct purposes (getContent vs getPaper, search vs searchAdvanced), but there's significant overlap between 'search' and 'searchAdvanced' where both return search results with similar parameters. The descriptions help differentiate them, but an agent might struggle to choose between them for basic searches.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern throughout (getContent, getPaper, getRecent, listCategories, search, searchAdvanced). All tools use camelCase consistently, with 'searchAdvanced' being the only deviation from pure verb_noun structure, but it's still readable and follows the same casing convention.

Tool Count5/5

With 6 tools, this is well-scoped for an arXiv server. Each tool serves a clear purpose in the paper discovery and retrieval workflow, from browsing categories to getting full content. The count is neither too sparse nor overwhelming for the domain.

Completeness4/5

The toolset covers core arXiv operations well: discovery (search, getRecent, listCategories), metadata retrieval (getPaper), and content access (getContent). Minor gaps include no paper submission/update tools (though arXiv is primarily read-only) and no citation or related paper features, but these aren't critical for typical agent workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables searching, retrieving, and parsing academic papers from arXiv, including keyword search, PDF downloads, content extraction from HTML/PDF formats, and accessing the latest AI research papers.
    4
    14
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables searching and retrieving academic papers from arXiv by various criteria including title, author, and category, with support for extracting full text content from PDFs.
    4
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables searching academic papers on arXiv and retrieving detailed information such as title, authors, summary, and PDF link.
    1
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to search, analyze, and explore arXiv academic papers with advanced multi-field search, author lookup, category browsing, citation extraction, and bibliography export.
    62
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Ray0907/arXiv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server