An MCP-based arXiv paper search and analysis server providing 11 standardized tool interfaces for literature retrieval, trend analysis, paper comparison, and multi-format export, with transport layer currently as a placeholder implementation.
arxiv-mcp-server is an arXiv academic paper search and analysis server built on Anthropic's Model Context Protocol (MCP). It provides 11 MCP Tool interfaces covering a complete literature workflow: keyword search, author/category-based retrieval, recent paper fetching, formatted summary generation, multi-dimensional paper comparison, related paper discovery, publication trend analysis (publication count, top authors, keyword frequency), citation metric estimation (marked as simulated), and multi-format export (BibTeX/JSON/CSV/Markdown).
Core Tools#
| Tool | Function |
|---|---|
search_arxiv | Search arXiv papers by keyword with relevance / lastUpdatedDate / submittedDate sorting |
get_paper | Fetch full metadata by arXiv ID |
summarize_paper | Generate formatted paper summary |
search_by_author | Search papers by author name |
search_by_category | Browse by arXiv category (e.g. cs.AI, cs.LG) |
get_recent_papers | Get recent papers within specified days, optional category filter |
compare_papers | Side-by-side comparison of 2–5 papers across authors, categories, abstract, published, citations |
find_related_papers | Recommend related papers based on category and keywords |
get_paper_citations | Get citation info and metrics (marked as simulated/estimated, not real citation data) |
analyze_trends | Analyze publication_count / top_authors / keyword_frequency by category |
export_papers | Export in BibTeX, JSON, CSV, Markdown formats |
Architecture#
Fully async design (asyncio + httpx) with clear layering:
- Protocol layer:
mcp ^1.12.3SDK for Tool schema definitions (mcp.types.Tool) - Business layer:
ArxivMCPServer(server.py) orchestrating 11 tool implementations - API layer:
ArxivAPI(api.py) accessing arXiv search/detail endpoints via httpx - Analysis layer:
TrendAnalyzer,CitationAnalyzer,RelatedPaperFinder(analyzers.py) - Utility layer:
SearchQueryBuilder,PaperComparator,PaperFormatter(utils.py) - Data layer:
Paper,SearchResult,CitationInfo,TrendAnalysis,ExportConfigdataclasses (models.py) - Export layer:
PaperExporter(exporters.py) for format conversion
Project Structure#
arxiv_mcp/
├── __init__.py # Exports ArxivMCPClient, ArxivMCPServer
├── analyzers.py # TrendAnalyzer, CitationAnalyzer, RelatedPaperFinder
├── api.py # ArxivAPI (arXiv data fetching)
├── client.py # MCP client
├── exporters.py # PaperExporter (multi-format export)
├── models.py # Data models
├── server.py # MCP server core (11 Tool definitions)
└── utils.py # SearchQueryBuilder, PaperComparator, PaperFormatter
Installation & Usage#
Prerequisites: Python ≥ 3.13, Poetry
git clone https://github.com/1Dark134/arxiv-mcp-server.git
cd arxiv-mcp-server
poetry install
python main.py test # Run tests
python main.py demo # Run demo
python main.py server # Start server (currently placeholder)
Current Limitations & Risks#
- Transport layer missing:
run_server()is an empty placeholder (while True: await asyncio.sleep(1)), with no stdio/SSE MCP transport wired — cannot be discovered or invoked by MCP clients like Claude Desktop - README-code mismatch: Features described in README (semantic search, Docker, Web UI, REST API, Kubernetes, OAuth, SDK, etc.) are absent from source code; README appears to be aspirational roadmap or template filler
- CLI entry point broken:
pyproject.tomldefinesarxiv-mcp = "arxiv_mcp_client:main"but the module doesn't exist in the repo - Repo ownership unclear:
pyproject.tomlauthor (anuj0456), homepage, and repository all point toanuj0456/arxiv-mcp-client, inconsistent with current repo1Dark134/arxiv-mcp-server— likely a fork or rename leftover - Unverified file:
arxiv-server-mcp-v2.2.zipexists inarxiv_mcp/directory, purpose unconfirmed - Citation data is estimated:
CitationAnalyzeroutput is marked as simulated, not real citation data