arXiv Research Assistant MCP Server
The arXiv Research Assistant MCP Server allows users to interact with the arXiv.org database efficiently, enabling:
Search papers by keywords: Find relevant arXiv papers with options to limit results and sort by relevance
Fetch recent papers by category: Retrieve the latest submissions from specific arXiv categories (e.g., cs.AI)
Get detailed paper info: Access comprehensive metadata for papers using their arXiv ID
Analyze trends: Examine recent trends in specified categories over a customizable time period
Generate summarization prompts: Create prompts to help LLMs summarize selected papers
Generate comparison prompts: Build structured prompts for comparing two papers
Search papers by author: Find publications by specific researchers
Provides tools for searching arXiv papers by keywords, retrieving latest papers by category, fetching detailed paper metadata, searching papers by author, and analyzing trending topics within the arXiv database.
Retrieves DOI information as part of the paper details lookup functionality.
Parses XML responses from the arXiv API to extract paper metadata and other information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arXiv Research Assistant MCP Serversearch for papers about large language models in the last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π§ arXiv Research Assistant MCP Server
This project is an MCP (Model Context Protocol) server built to interact with the vast arXiv.org paper database.
It allows clients like Claude AI to search, explore, and compare arXiv papers efficiently β all through a custom-built, local server. Itβs built with Python and the FastMCP framework, and uses uv for lightweight package management.
β¨ Features
π Keyword-based Paper Search
Search arXiv papers by keywords, with options to sort by relevance or most recent.π Latest Papers by Category
Specify an arXiv category code (e.g.,cs.AI,math.AP) to fetch the most recent papers in that field.π Paper Details Lookup
Fetch detailed metadata using a paper's arXiv ID: title, authors, abstract, categories, DOI, PDF link, and more.π§βπ¬ Author-based Paper Search
Retrieve a list of papers published by a specific author.π Trend Analysis (Experimental)
Get an overview of trending keywords or topics based on recent papers in a category (currently uses mock data).π Summarization Prompt Generator
Dynamically generate prompts that help LLMs summarize a selected paper more effectively.π Comparison Prompt Generator
Provide two paper IDs to generate a structured prompt for comparing their content.
Related MCP server: scholar-search-mcp
π οΈ Tech Stack
Python 3.11+
uv (for dependency & environment management)
requests (for API communication)
xml.etree.ElementTree (for parsing XML responses)
π Getting Started
Installing via Smithery
To install arXiv Research Assistant MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install arxiv-paper-mcp --client claudeInstallation from PyPI
uv pip install arxiv-paper-mcpπ§ Clone the repository (for development)
git clone https://github.com/daheepk/arxiv-mcp-server.git
cd arxiv-mcp-serverπ§ Install Dependencies (for development)
Use uv to install all dependencies in editable mode:
uv pip install -e .βοΈ How to Run
βΆοΈ Run the server (locally)
arxiv-paper-mcpπ Use with Claude
To use this MCP server with Claude, add the following JSON configuration to Claude's MCP settings:
{
"mcpServers": {
"arXivPaper": {
"command": "uv",
"args": [
"tool",
"run",
"arxiv-paper-mcp"
]
}
}
}Project Structure
arxiv-mcp-server/
βββ arxiv_mcp/ # Main package
β βββ __init__.py
β βββ app.py # FastMCP app setup
β βββ server.py # Server entry point
β βββ utils.py # arXiv API communication logic
β βββ resources/ # MCP resources (categories, authors, etc.)
β βββ tools/ # MCP tools (search, detail lookup, trends)
β βββ prompts/ # Prompt templates (summarize, compare)
βββ pyproject.toml # Project config & dependencies
βββ README.md # This fileAvailable Tools
4 toolsanalyze_trendsC
νΉμ μΉ΄ν κ³ λ¦¬μ μ΅μ νΈλ λλ₯Ό λΆμν©λλ€.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | cs.AI | |
| days | No |
TDQS
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. The description only mentions analyzing trends without detailing how it works, what data it accesses, potential limitations, or output format. It lacks critical behavioral traits like data sources, processing methods, or any constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that efficiently states the tool's function. It's front-loaded with the core purpose, though it could be more structured if it included additional details. There's no wasted text, making it appropriately sized for its limited content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a trend analysis tool with 2 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'analyze' involves, what the output looks like, or how parameters affect the analysis. This leaves significant gaps for an AI agent to understand and use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 for undocumented parameters. It mentions 'specific category' which relates to the 'category' parameter, but doesn't explain the 'days' parameter or provide any additional meaning beyond the schema's basic titles. This leaves half the parameters inadequately described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the purpose ('analyze trends') and specifies a resource ('specific category'), but it's vague about what 'analyze' entails and doesn't distinguish from siblings like 'search_papers' or 'scrape_recent_category_papers'. It provides a basic function but lacks specificity about the analysis scope or output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_papers' or 'scrape_recent_category_papers'. The description implies usage for trend analysis in a category, but it doesn't specify prerequisites, exclusions, or comparative contexts with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paper_infoC
λ Όλ¬Έ IDλ‘ μμΈ μ 보λ₯Ό κ°μ Έμ΅λλ€.
| Name | Required | Description | Default |
|---|---|---|---|
| paper_id | Yes |
TDQS
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 states it 'gets detailed information' but doesn't describe what that includes (e.g., title, authors, abstract), whether it's a read-only operation, potential errors (e.g., invalid ID), or performance aspects. This leaves significant 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It's appropriately sized for a simple tool and front-loaded with the core purpose. Every part of the sentence contributes directly to explaining the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a read operation with one parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't specify what 'detailed information' includes, error handling, or return format, making it inadequate for an agent to use the tool effectively without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mentions 'λ Όλ¬Έ ID' (paper ID) as the parameter, which adds some meaning beyond the schema's generic 'paper_id' property. However, it doesn't explain the format, constraints, or examples (e.g., numeric, alphanumeric, DOI), leaving the parameter poorly documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the purpose: 'λ Όλ¬Έ IDλ‘ μμΈ μ 보λ₯Ό κ°μ Έμ΅λλ€' (Get detailed information by paper ID). It specifies a verb ('κ°μ Έμ΅λλ€' - get/fetch) and resource ('μμΈ μ 보' - detailed information), but is vague about what 'detailed information' entails. It doesn't differentiate from sibling tools like 'search_papers' or 'scrape_recent_category_papers'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (e.g., needing a paper ID), exclusions, or comparisons to sibling tools like 'search_papers' (which might retrieve multiple papers) or 'scrape_recent_category_papers' (which might fetch recent papers by category).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_recent_category_papersC
[ν¬λ‘€λ§] νΉμ μΉ΄ν κ³ λ¦¬μ 'recent' νμ΄μ§λ₯Ό μ€ν¬λ©νμ¬ μ΅μ λ Όλ¬Έ λͺ©λ‘μ κ°μ Έμ΅λλ€.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | ||
| max_results | No |
TDQS
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 scraping, implying network operations and potential rate limits or permissions, but doesn't detail these aspects, response format, or error handling. The description adds minimal context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key action ('scrape') and purpose. It avoids unnecessary details, though it could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a scraping tool with no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on behavior, output format, error cases, and integration with siblings, making it inadequate for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It implies 'category' is used to specify the target and 'max_results' limits output, but doesn't explain valid categories, format, or constraints. This adds some meaning but doesn't fully bridge the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it scrapes a 'recent' page for a specific category to fetch the latest paper list. It uses specific verbs ('scrape', 'fetch') and identifies the resource ('recent page', 'paper list'), but it doesn't explicitly differentiate from sibling tools like 'search_papers' or 'get_paper_info', which might handle similar data differently.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 mentions scraping a 'recent' page, but doesn't specify contexts, exclusions, or compare to siblings like 'search_papers' or 'analyze_trends'. This leaves the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_papersC
ν€μλλ‘ arXiv λ Όλ¬Έμ κ²μν©λλ€.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions searching arXiv papers by keyword but lacks behavioral details such as rate limits, authentication needs, result format, pagination, or error handling. This is inadequate for a search tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Korean that directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (search operation with 2 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects, parameter details, or return values, leaving significant gaps for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mentions 'ν€μλ' (keyword) implicitly, without explaining the 'max_results' parameter or providing any additional context like format constraints or usage examples. This fails to address the undocumented parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('κ²μν©λλ€' - searches) and resource ('arXiv λ Όλ¬Έ' - arXiv papers) with a specific method ('ν€μλλ‘' - by keyword). It doesn't distinguish from sibling tools like 'scrape_recent_category_papers' or 'get_paper_info', but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'scrape_recent_category_papers' or 'get_paper_info'. The description implies usage for keyword-based searches but doesn't specify contexts, exclusions, or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
analyze_trends - First observed
get_paper_info - First observed
scrape_recent_category_papers - First observed
search_papers
TDQS
Each tool has a clearly distinct purpose: analyze_trends focuses on trends analysis, get_paper_info retrieves detailed paper information, scrape_recent_category_papers scrapes recent papers from a category, and search_papers searches by keywords. There is no overlap or ambiguity in their functions.
The tool names follow a consistent snake_case pattern and use descriptive verbs (analyze, get, scrape, search). However, scrape_recent_category_papers includes a Korean annotation '[ν¬λ‘€λ§]' in its description, which slightly deviates from the pure English naming convention, though this does not affect the tool name itself.
With 4 tools, the server is well-scoped for an arXiv research assistant, covering key operations like searching, scraping, analyzing trends, and fetching details. It is slightly lean but reasonable, as it handles core research workflows without unnecessary bloat.
The toolset covers essential functions for arXiv research, including search, scrape, analysis, and info retrieval. However, there are minor gaps such as no tools for filtering or sorting results, managing user preferences, or accessing advanced arXiv features like citation tracking, which could limit agent capabilities in complex scenarios.
Maintenance
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Academic research MCP server for paper search, citation checks, graphs, and deep research.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server for searching and downloading academic papers from multiple sources including arXiv, PubMed, bioRxiv, and Sci-Hub, designed for seamless integration with large language models like Claude Desktop.795572,564MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for academic paper search that integrates with AI assistants (e.g., Claude Code, Cursor), enabling them to search and retrieve academic paper metadata.248MIT
- FlicenseAqualityDmaintenanceA streamlined MCP server that connects AI assistants to arXiv's vast collection of academic papers, enabling search, retrieval, and analysis of research papers.71-
- FlicenseAqualityCmaintenanceA local MCP server for searching and reading arXiv papers, enabling paper search, retrieval, and summarization through Claude.6-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/daheepk/arxiv-paper-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server