ArxivSearcher MCP Server
The ArxivSearcher MCP Server provides advanced tools for searching, analyzing, and managing Software Engineering papers on arXiv. You can:
Search papers: Find papers using natural language queries with filters for keywords, dates, relevance, and categories
Retrieve details: Get comprehensive information about specific papers using arXiv IDs
Find by author: Search papers by specific authors with additional filtering options
Analyze trends: Examine patterns in papers by authors, keywords, timeline, or categories
Discover related papers: Identify similar papers based on title and keyword similarity
Download PDFs: Access PDF versions of arXiv papers
Export results: Convert search results to various formats (BibTeX, CSV, JSON, Markdown)
Browse categories: View all available arXiv categories and their descriptions
Enables intelligent searching of Software Engineering papers on arXiv with advanced filtering, sorting, and analysis. Provides tools for searching papers by query or author, retrieving paper details, analyzing trends, finding related papers, downloading PDFs, and exporting results in various formats.
Supports retrieving DOI information for academic papers as part of the paper details functionality.
Allows exporting search results to Markdown format alongside other formats like BibTeX, CSV, and JSON.
Click on "Deploy 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., "@ArxivSearcher MCP Serversearch for recent papers about large language models in software engineering"
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.
🚀 ArxivSearcher MCP Server
An MCP server for intelligent searching of Software Engineering papers on arXiv, with advanced filtering and sorting.
Updated to v2.0! — This repository has been updated to v2.0: new remote entrypoint, prompt templates, remote-accessible PDF resources, and an upgrade to
fastmcp==2.9.2.
📝 Getting Started
Clone the repository
git clone https://github.com/emi-dm/Arxiv-MCP.git cd Arxiv-MCPChoose your setup method:
Related MCP server: arxiv-reader-mcp
🖱️ Using with Cursor
If you use Cursor, you can integrate this MCP server as follows:
Open Settings in Cursor.
Go to Tools & Integrations.
In the MCP section, add a new server configuration.
Use the same configuration as described for VS Code:
For Docker, use the Docker configuration block from the VS Code section.
For local development, use the uv configuration block from the VS Code section.
The process is analogous to the VS Code setup—just copy the relevant configuration and paste it into Cursor's MCP server settings.
📋 Prerequisites
Before you begin, make sure you have installed:
Python (3.11 or higher)
uv (a fast Python package installer and resolver)
Node.js and npm (for debugging with MCP Inspector)
Or alternatively:
Docker (for containerized deployment)
⚡️ Quickstart in VS Code
You can run the server in VS Code using Docker (recommended, you don't need the code locally), locally with uv, or consume it directly from the cloud.
Option 3: Consume the MCP server in the cloud (Recommended for quick testing!)
You don't need to install anything or clone the repository. You can consume the MCP server directly using the following configuration in .vscode/mcp.json or in your compatible MCP client:
{
"servers": {
"arxiv-mcp": {
"url": "https://arxiv-mcp-sq0a.onrender.com/mcp/"
}
}
}This works in both VS Code and Cursor and other compatible MCP clients.
Option 1: Using Docker (Recommended)
Note: If you use Docker, you do not need to have the code in your local directory. The container will run everything needed.
Build the Docker image (only needed once or when you update the code):
docker build -t arxiv-searcher-mcp .Create
.vscode/mcp.json: In your project root, create the.vscodefolder if it doesn't exist. Inside, create a file namedmcp.json.Add the Docker server configuration: Copy and paste the following configuration into
.vscode/mcp.json:{ "mcpServers": { "arxiv-search": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "arxiv-searcher-mcp" ] } } }Start the server from VS Code
Option 2: Local configuration with uv (requires code locally)
Create
.vscode/mcp.json: In your project root, create the.vscodefolder if it doesn't exist. Inside, create un archivo llamadomcp.json.Agrega la configuración local del servidor: Copia y pega la siguiente configuración en
.vscode/mcp.json:{ "servers": { "arxiv-search": { "command": "uv", "args": [ "run", "${workspaceFolder}/arxiv_searcher/arxiv_mcp.py" ] } } }Inicia el servidor desde VS Code
✨ Features
🛠️ Available Tools
This MCP server exposes several useful tools for searching, analyzing, and exporting arXiv papers in the field of software engineering:
search_papers: Searches arXiv papers filtered by the Software Engineering category (
cs.SE).Parameters:
query,max_results,start_date,end_date,sort_by_relevance,categoryReturns: Dictionary with the query used and the results.
get_paper_details: Gets detailed information about a paper by its arXiv ID.
Parameters:
arxiv_idReturns: Title, authors, abstract, dates, categories, DOI, etc.
search_by_author: Searches for papers by author, with optional category and date filters.
Parameters:
author_name,max_results,category,start_date,end_dateReturns: List of found papers.
analyze_paper_trends: Analyzes trends in a collection of papers (authors, keywords, timeline, categories).
Parameters:
papers,analysis_typeReturns: Statistics and analysis according to the requested type.
find_related_papers: Finds related papers based on the title of a reference paper, using keyword similarity.
Parameters:
paper_title,max_results,similarity_threshold,categoryReturns: List of similar papers.
download_paper_pdf: Downloads the PDF of an arXiv paper.
Parameters:
pdf_url,save_path,filenameReturns: Path and status of the download.
export_search_results: Exports search results to various formats (
bibtex,csv,json,markdown).Parameters:
results,format,filename,save_pathReturns: Path to the exported file and a preview of the content.
get_arxiv_categories: Returns the list of arXiv categories and their descriptions.
Parameters: None
Returns: Dictionary of categories and usage notes.
🧑💻 Example Usage
Here's how you can call the tool from a compatible MCP client:
@arxiv-search.search_papers(query="secure software development lifecycle from 2022", max_results=5)This will search for the 5 most relevant papers since 2022 in the software engineering category.
🛠️ Development
📦 Install dependencies
Set up your virtual environment and install the required packages:
uv syncOr using Docker:
docker build -t arxiv-searcher-mcp .▶️ Run for development
Start the server directly from your terminal:
uv run --directory arxiv_searcher/ arxiv_mcp.py🐞 Debugging
For an interactive debugging experience, use MCP Inspector:
# Option 1: Using MCP Inspector
npx @modelcontextprotocol/inspector uv run --directory arxiv_searcher/arxiv_mcp.py
# Option 2: Using fastmcp CLI
fastmcp dev arxiv_searcher/arxiv_mcp.pyWhen launched, the Inspector will provide a URL to view and debug server communications in your browser. Don't forget to copy the session token!
👤 Author
Developed by emi-dm.
💡 Contributions and improvements are welcome! Feel free to open a Pull Request (PR) if you have suggestions or enhancements.
Version 2.0
Remote-accessible resources: Added MCP
resources that allow the server to expose downloaded PDF files and their extracted text (accessible via thedata://downloaded_papersresource). This enables remote agents/clients to query the MCP about articles that have been downloaded to the server.Prompt templates: Included a set of
@mcp.prompttemplates in the codebase to improve prompt quality and make it easier to craft searches (e.g.,search_by_author,search_by_recent_topic,get_paper_by_id, etc.). These templates are available to clients and the Inspector to generate clearer and more consistent requests.fastmcp update: The project has been updated to use
fastmcp==2.9.2(seerequirements.txt/uv.lock). If you manage environments manually, please sync your environment to pick up the new fastmcp release.
Upgrade notes
To query downloaded papers remotely, call the
data://downloaded_papersresource from your MCP client or use the provided read helpers in the MCP tools.Use the prompt templates via the MCP client to get consistent, high-quality queries (the template function names are exported as prompts in the server code).
Run
uv sync(or your preferred environment sync command) to install the pinned dependency versions after pulling this release.
📚 License
This project is licensed under the MIT License.
Available Tools
7 toolsanalyze_paper_trendsC
Analyze trends in a collection of papers.
:param papers: List of papers from search_papers results :param analysis_type: Type of analysis ('authors', 'keywords', 'timeline', 'categories')
| Name | Required | Description | Default |
|---|---|---|---|
| papers | Yes | ||
| analysis_type | No | authors |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool analyzes trends but doesn't describe what the analysis entails, how results are returned, or any constraints like processing limits. This is inadequate for a tool with an output schema, as it leaves key behaviors unspecified.
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 appropriately sized and front-loaded, with the main purpose stated first followed by parameter details. Each sentence adds value, such as specifying the source for 'papers' and the analysis options. It avoids redundancy and is efficiently structured, though it could be slightly more polished in formatting.
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 has an output schema, the description doesn't need to explain return values, but it lacks details on behavioral aspects like analysis depth or limitations. With no annotations and low schema coverage, it partially compensates with parameter semantics but falls short in providing a complete operational context, making it minimally adequate.
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 description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'papers' should be a 'List of papers from search_papers results' and lists the possible values for 'analysis_type' ('authors', 'keywords', 'timeline', 'categories'), clarifying their semantics. This compensates well for the schema's lack of documentation.
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 tool 'Analyze trends in a collection of papers,' which provides a clear verb ('analyze') and resource ('collection of papers'), but it's vague about what 'trends' specifically means. It doesn't differentiate from siblings like 'search_papers' or 'find_related_papers,' which also involve paper analysis, leaving the purpose somewhat ambiguous.
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 offers no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing papers from 'search_papers' results, or compare to siblings like 'export_search_results' or 'search_by_author' for different analysis needs. This lack of context makes it hard for an agent to choose appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_paperA
Downloads the PDF of a paper to a local directory on the server. NOTE: In a stateless/free hosting environment, this file is temporary and will be deleted when the server restarts or sleeps.
:param arxiv_id: The ArXiv ID of the paper to download (e.g., '2301.12345'). :param directory: The local directory where the paper will be saved.
| Name | Required | Description | Default |
|---|---|---|---|
| arxiv_id | Yes | ||
| directory | No | downloaded_papers |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains key behaviors: the file is saved locally, and in stateless environments, it's temporary and will be deleted on server restart/sleep. This covers important operational constraints, though it doesn't mention error handling, rate limits, or authentication needs.
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 front-loaded with the core purpose in the first sentence, followed by a critical behavioral note, then parameter details. Every sentence adds value: the purpose, the temporary file warning, and parameter explanations. No wasted words, and the structure logically progresses from what to why to how.
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 2 parameters with 0% schema coverage and no annotations, the description does an excellent job explaining parameters and key behavioral traits (temporary files). The presence of an output schema means return values don't need description. It could slightly improve by mentioning error cases (e.g., invalid IDs) or success confirmation, but it's largely complete for this tool's complexity.
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 fully compensate. It adds crucial semantic context for both parameters: 'arxiv_id' is explained with an example format ('e.g., '2301.12345''), and 'directory' specifies the save location and includes a default value mention. This goes well beyond the bare schema, making parameter usage clear.
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 specific action ('Downloads the PDF of a paper') and resource ('paper'), distinguishing it from sibling tools like 'get_paper_details' (which likely retrieves metadata) or 'search_papers' (which searches). It explicitly mentions the output format (PDF) and destination (local directory), making the purpose 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?
The description implies usage when a PDF download is needed, but provides no explicit guidance on when to use this tool versus alternatives like 'get_paper_details' (which might return metadata without download) or 'export_search_results' (which could export search data). The note about temporary files in stateless environments offers some context but doesn't address tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_search_resultsB
Export search results to various formats.
:param results: Results from search_papers or other search functions :param format: Export format ('bibtex', 'csv', 'json', 'markdown') :param filename: Output filename (without extension) :param save_path: Directory to save the file (default: current directory)
| Name | Required | Description | Default |
|---|---|---|---|
| results | Yes | ||
| format | No | bibtex | |
| filename | No | ||
| save_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 describes the tool as an exporter with format options and save locations, but lacks details on permissions, rate limits, error handling, or what happens during export (e.g., file creation, overwriting). For a tool with no annotations and potential side effects (file system writes), this is inadequate.
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 appropriately sized and front-loaded with the main purpose. The parameter explanations are concise and directly relevant. However, the colon-prefixed format for parameters is slightly unconventional and could be more integrated, but it doesn't waste space. Every sentence earns its place.
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 (4 parameters, nested objects, no annotations, but has an output schema), the description is moderately complete. It covers input semantics well but lacks behavioral context and usage guidelines. The output schema exists, so return values needn't be explained, but overall completeness is adequate with clear gaps.
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 adds significant meaning beyond the schema by explaining each parameter's purpose: 'results' as search results, 'format' with specific options, 'filename' as output name, and 'save_path' as directory. This clarifies semantics well, though it doesn't cover all nuances like default behaviors or constraints.
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: 'Export search results to various formats.' It specifies the verb ('export') and resource ('search results'), but doesn't explicitly differentiate from sibling tools like 'download_paper' or 'analyze_paper_trends', which might have overlapping functionality. The purpose is clear but lacks sibling differentiation.
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 minimal usage guidance. It mentions that 'results' should come from 'search_papers or other search functions,' which gives some context, but doesn't specify when to use this tool versus alternatives like 'download_paper' or how it relates to other export or analysis tools. No explicit when/when-not scenarios or alternatives are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_paper_detailsB
Get detailed information about a specific paper by ArXiv ID.
:param arxiv_id: The ArXiv ID (e.g., '2301.12345')
| Name | Required | Description | Default |
|---|---|---|---|
| arxiv_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 what the tool does but doesn't describe any behavioral traits such as whether it's read-only, potential rate limits, authentication needs, error handling, or what 'detailed information' entails beyond the basic operation. This leaves significant gaps in understanding how the tool behaves.
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 extremely concise and well-structured: the first sentence clearly states the purpose, and the second sentence provides essential parameter details with an example. Every sentence earns its place with no wasted words, making it easy to parse quickly.
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 that there's an output schema (which handles return values), a single parameter with good semantic coverage in the description, and no annotations, the description is minimally adequate. However, it lacks context on behavioral aspects and usage guidelines relative to siblings, leaving room for improvement in completeness for effective tool selection.
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 description adds meaningful context for the single parameter 'arxiv_id' by explaining it's an ArXiv ID and providing an example format ('e.g., '2301.12345''). Since schema description coverage is 0% and there's only one parameter, this effectively compensates by clarifying the parameter's purpose and format, though it doesn't cover edge cases or validation rules.
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 verb ('Get detailed information') and resource ('about a specific paper by ArXiv ID'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'search_papers' or 'find_related_papers' that might also retrieve paper information but with different scopes or methods.
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. With siblings like 'search_papers' and 'find_related_papers' available, there's no indication that this tool is specifically for retrieving details when you already have an ArXiv ID, versus searching or finding related papers through other means.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_authorB
Search papers by a specific author.
:param author_name: Name of the author to search for :param max_results: Maximum number of results :param category: Optional category filter (e.g., 'cs.SE', 'cs.AI') :param start_date: Optional start date filter (YYYY-MM-DD or YYYY) :param end_date: Optional end date filter (YYYY-MM-DD or YYYY)
| Name | Required | Description | Default |
|---|---|---|---|
| author_name | Yes | ||
| max_results | No | ||
| category | No | ||
| start_date | No | ||
| end_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'search' implies a read-only operation, the description doesn't address important behavioral aspects: whether authentication is required, rate limits, pagination behavior, what happens when no results are found, or the format/structure of returned results. The description only states what the tool does, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise. The purpose is stated clearly in the first sentence, followed by a well-organized parameter documentation section. Every sentence earns its place - no redundant information, no unnecessary elaboration. The parameter documentation uses a consistent format that's easy to parse.
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 that there's an output schema (which handles return values), no annotations, and the description provides excellent parameter documentation, the main gap is behavioral context. The description adequately covers what the tool does and how to use its parameters, but doesn't address operational aspects like authentication, error conditions, or performance characteristics that would help an agent use it 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?
With 0% schema description coverage, the description provides excellent parameter semantics that fully compensate. Each parameter is clearly documented with its purpose and format examples (e.g., 'YYYY-MM-DD or YYYY' for dates, 'cs.SE', 'cs.AI' for categories). The description adds substantial value beyond what the bare schema provides, explaining what each parameter means and how to format values.
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: 'Search papers by a specific author.' This is a specific verb ('search') with a clear resource ('papers') and target ('by a specific author'). However, it doesn't explicitly differentiate from sibling tools like 'search_papers' - the agent must infer that this tool is author-specific while 'search_papers' might be more general.
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. With sibling tools like 'search_papers' and 'find_related_papers' available, the agent receives no explicit direction about when author-based searching is preferred over other search methods or when this tool should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_papersA
Search for papers on arXiv. It can parse natural language queries, extracting keywords and years for filtering.
:param query: The base search query. Can be natural language. :param max_results: The maximum number of results to return. :param start_date: The start date for the search period (YYYY-MM-DD or YYYY). Overrides years in query. :param end_date: The end date for the search period (YYYY-MM-DD or YYYY). Overrides years in query. :param sort_by_relevance: If True, sorts by relevance. If False, sorts by submission date. :param category: The arXiv category to search in (e.g., 'cs.AI', 'cs.CL', 'cs.SE').
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No | ||
| start_date | No | ||
| end_date | No | ||
| sort_by_relevance | No | ||
| category | No | cs.SE |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context: it mentions natural language query parsing and date/year overriding behavior, which are useful beyond basic search functionality. However, it doesn't cover important aspects like rate limits, authentication needs, error handling, or pagination behavior, leaving gaps for a tool with 6 parameters.
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 appropriately sized and front-loaded with the core purpose. The parameter explanations are organized clearly with :param notation, though this format is more technical than natural language. Every sentence adds value, with no wasted words.
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 (6 parameters, no annotations, but with output schema), the description is reasonably complete. It explains all parameters thoroughly and mentions natural language processing capabilities. The output schema existence means return values don't need explanation, but behavioral aspects like rate limits or errors could be more detailed.
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 fully compensate. It provides detailed semantic explanations for all 6 parameters, including query parsing behavior, date format options, sorting logic, and category examples. This adds significant value beyond the bare schema, making parameter purposes clear.
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: 'Search for papers on arXiv.' It specifies the resource (papers) and the platform (arXiv), but doesn't explicitly differentiate it from sibling tools like 'search_by_author' or 'find_related_papers' in terms of search scope or methodology.
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 like 'search_by_author' or 'find_related_papers.' It mentions natural language query parsing, which hints at usage context, but lacks explicit when/when-not instructions or comparisons to sibling tools.
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.
9 tool updates
v1.0.0- Changed
analyze_paper_trends2 fields changed- removed
Input schema / properties / analysis_type / titleRemoved value: -"Analysis Type" - removed
Input schema / properties / papers / titleRemoved value: -"Papers"
- Added
download_paper - Removed
download_paper_pdf - Changed
export_search_results4 fields changed- removed
Input schema / properties / filename / titleRemoved value: -"Filename" - removed
Input schema / properties / format / titleRemoved value: -"Format" - removed
Input schema / properties / results / titleRemoved value: -"Results" - removed
Input schema / properties / save_path / titleRemoved value: -"Save Path"
- Changed
find_related_papers4 fields changed- removed
Input schema / properties / category / titleRemoved value: -"Category" - removed
Input schema / properties / max_results / titleRemoved value: -"Max Results" - removed
Input schema / properties / paper_title / titleRemoved value: -"Paper Title" - removed
Input schema / properties / similarity_threshold / titleRemoved value: -"Similarity Threshold"
- Removed
get_arxiv_categories - Changed
get_paper_details1 field changed- removed
Input schema / properties / arxiv_id / titleRemoved value: -"Arxiv Id"
- Changed
search_by_author5 fields changed- removed
Input schema / properties / author_name / titleRemoved value: -"Author Name" - removed
Input schema / properties / category / titleRemoved value: -"Category" - removed
Input schema / properties / end_date / titleRemoved value: -"End Date" - removed
Input schema / properties / max_results / titleRemoved value: -"Max Results" - removed
Input schema / properties / start_date / titleRemoved value: -"Start Date"
- Changed
search_papers6 fields changed- removed
Input schema / properties / category / titleRemoved value: -"Category" - removed
Input schema / properties / end_date / titleRemoved value: -"End Date" - removed
Input schema / properties / max_results / titleRemoved value: -"Max Results" - removed
Input schema / properties / query / titleRemoved value: -"Query" - removed
Input schema / properties / sort_by_relevance / titleRemoved value: -"Sort By Relevance" - removed
Input schema / properties / start_date / titleRemoved value: -"Start Date"
8 tool updates
- First observed
analyze_paper_trends - First observed
download_paper_pdf - First observed
export_search_results - First observed
find_related_papers - First observed
get_arxiv_categories - First observed
get_paper_details - First observed
search_by_author - First observed
search_papers
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose with no ambiguity: search_papers and search_by_author handle different search methods, get_paper_details retrieves metadata, download_paper fetches PDFs, find_related_papers finds similar papers, analyze_paper_trends performs analysis on results, and export_search_results handles export. The boundaries are well-defined and non-overlapping.
All tool names follow a consistent verb_noun pattern with snake_case throughout: search_papers, search_by_author, get_paper_details, download_paper, find_related_papers, analyze_paper_trends, export_search_results. This uniformity makes the toolset predictable and easy to navigate.
With 7 tools, this server is well-scoped for arXiv paper searching and management. Each tool serves a specific function in the workflow (search, retrieve, analyze, export), and none feel redundant or missing, fitting within the typical 3-15 tool range for a focused domain.
The toolset covers core arXiv operations comprehensively: searching (by query and author), retrieving details and PDFs, finding related papers, analyzing trends, and exporting results. A minor gap is the lack of tools for user account management (e.g., saving favorites) or paper submission, but these are outside the primary search-focused scope, so agents can work effectively with the provided tools.
Maintenance
Related MCP Connectors
Academic research MCP server for paper search, citation checks, graphs, and deep research.
arXiv MCP — preprint server search (free, no auth)
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for searching, retrieving, and subscribing to academic papers across security, ML, NLP, CV, and systems venues via 12 tools.16115 npm4MIT
- AlicenseAqualityCmaintenanceMCP server for searching and retrieving arXiv papers with full-text PDF extraction.52MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for discovering, triaging, and monitoring arXiv papers with transparent interest modeling and inspectable ranking.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for searching, downloading, and reading academic papers from multiple sources such as arXiv, Google Scholar, and Elsevier.6MIT