ð arXiv MCP Server
ããŒã«ã«ð arXiv MCP Server ã«ã€ããŠ
ð arXiv MCP Serverã¯ãåŠè¡ç ç©¶ã調ã¹ã人åãã«ãarXivã®è«ææ€çŽ¢ãAIã¢ã·ã¹ã¿ã³ãã®ã¯ãŒã¯ãããŒã«çµã¿èŸŒã¿ãŸããé«åºŠãªæ€çŽ¢åŒã®äœæãšã¡ã¿ããŒã¿ååŸã«å¯Ÿå¿ããŸãããPDFããŠã³ããŒãã«ã¯ãªãã€ã¬ã¯ãäžã®åé¡ããããŸãã
äž»ãªæ©èœ
- 01ããŒã¯ãŒããé ç®ã«ããè«ææ€çŽ¢
- 02è«æã¡ã¿ããŒã¿ã®ååŸ
- 03è€æ°é ç®ã䜿ã£ãæ€çŽ¢åŒã®äœæ
- 04arXivåéã«ããŽãªã®äžèŠ§è¡šç€º
掻çšã·ãŒã³
- 01ããŒããèè ããè«æãæ€çŽ¢
- 02ã«ããŽãªã§ç ç©¶è«æãçµã蟌ã¿
- 03èè ãèŠæšãåºçæ å ±ã®ç¢ºèª
MCP 察å¿
ãã®MCPãµãŒããŒã¯ãè«ææ€çŽ¢ã詳现ååŸãé«åºŠãªæ€çŽ¢åŒã®äœæãã«ããŽãªäžèŠ§è¡šç€ºã®ããŒã«ãã¯ã©ã€ã¢ã³ãã«æäŸããŸããæ€çŽ¢çµæã«ã¯èŠæšãšãªã³ã¯ãå«ãŸããŸãã
èšå®
ããŒã«ã«ãµãŒããŒã®èšå®ã¯ã©ã®ã¯ã©ã€ã¢ã³ãã§ãå ±éã§ããã³ããŒããŠã¯ã©ã€ã¢ã³ãã® MCP èšå®ãã¡ã€ã«ã«è²Œãä»ããŠãã ããã
ãã®ãµãŒããŒã®ããã±ãŒãžããªã¢ãŒããšã³ããã€ã³ãã¯ãŸã ååŸã§ããŠããŸããããããžã§ã¯ãã® README ã®æé ã«åŸã£ãŠãã ããã
ããŒã«
ããŒã«ã«ãµãŒããŒã®ããŒã«ã¯ãã·ã³äžã§èµ·åããŠåããŠååŸã§ããŸããã¡ã³ãããŒã¯ãŸã ããŒã«äžèЧãæäŸããŠããŸããã
詳现
Model Context Protocol ãéããŠãäžçæå€§ã®åŠè¡è«æãªããžããªã«ã¢ã¯ã»ã¹ã§ããŸã
AI ã¢ã·ã¹ã¿ã³ãã arXiv ã®èšå€§ãªåŠè¡è«æã³ã¬ã¯ã·ã§ã³ã«æ¥ç¶ãããã·ã³ãã«ãªModel Context ProtocolãµãŒããŒã§ããAI ã¯ãŒã¯ãããŒããçŽæ¥ãç ç©¶è«æã®æ€çŽ¢ãåæãããŠã³ããŒããã§ããŸãã
ð ã¯ã€ãã¯ã¹ã¿ãŒã
åææ¡ä»¶
- Python 3.12+
- uv ããã±ãŒãžãããŒãžã£ãŒ
ã€ã³ã¹ããŒã«
ãªãã·ã§ã³ 1ïŒDockerïŒæšå¥šïŒ
# Pull and run the Docker image
docker run --rm -it ghcr.io/tejas242/arxiv-mcp:latest
# Or using docker-compose
git clone https://github.com/tejas242/arxiv-mcp.git
cd arxiv-mcp
docker compose up
ãªãã·ã§ã³ 2ïŒããŒã«ã«éçº
# Clone and setup
git clone https://github.com/tejas242/arxiv-mcp.git
cd arxiv-mcp
uv sync
# Test the server
uv run main.py
ð ïž å©çšå¯èœãªé¢æ°
| 颿° | ç¶æ | 説æ | ãã©ã¡ãŒã¿ãŒ |
|---|---|---|---|
search_papers | â åäœäž | æè»ãªã¯ãšãªæ§æã§ arXiv ã®è«æãæ€çŽ¢ããŸã | queryãmax_resultsãsort_byãsort_order |
get_paper_details | â åäœäž | arXiv è«æã®å®å šãªã¡ã¿ããŒã¿ãååŸããŸã | arxiv_id |
build_advanced_query | â åäœäž | è€æ°ã®ãã£ãŒã«ãã䜿ã£ãè€éãªæ€çŽ¢ã¯ãšãªãæ§ç¯ããŸã | title_keywordsãauthor_nameãcategoryãabstract_keywords |
get_arxiv_categories | â åäœäž | å©çšå¯èœãª arXiv ã®åéã«ããŽãªããã¹ãŠäžèŠ§è¡šç€ºããŸã | ãªã |
search_by_author | â ïž å¶éãã | ç¹å®ã®èè ã®è«æãæ€çŽ¢ããŸãïŒä»£ããã« search_papers ã䜿çšããŠãã ããïŒ | author_nameãmax_results |
search_by_category | â ïž å¶éãã | ã«ããŽãªå¥ã«è«æãé²èЧããŸãïŒä»£ããã« search_papers ã䜿çšããŠãã ããïŒ | categoryãmax_results |
download_paper_pdf | ð§ ä¿®æ£ãå¿ èŠ | è«æã® PDF ãããŠã³ããŒãããŸãïŒãªãã€ã¬ã¯ãåŠçã«åé¡ããããŸãïŒ | arxiv_idãsave_path |
颿°ã®è©³çް
â å®å šã«åäœãã颿°
search_papers - äž»ãªæ€çޢ颿°
- arXiv ã®å®å šãªã¯ãšãªæ§æã«å¯Ÿå¿
- ããŒã¯ãŒããèè ãã«ããŽãªãã¿ã€ãã«ãåŠç
- äžŠã¹æ¿ããšããŒãžããŒã·ã§ã³ãèšå®å¯èœ
- èŠçŽãšãªã³ã¯ãå«ã圢åŒã§çµæãè¿ããŸã
get_paper_details - è«æã®è©³çްæ
å ±
- ã¡ã¿ããŒã¿ãå®å šã«æœåº
- æå±æ©é¢ãå«ãèè æ å ±
- ã«ããŽãªåé¡ãšãªã³ã¯
- å ¬éæ¥ãšæŽæ°æ¥
build_advanced_query - ã¯ãšãªæ§ç¯ãã«ããŒ
- è€æ°ã®æ€çŽ¢æ¡ä»¶ãçµã¿åãããŸã
- ã¿ã€ãã«ãèè ãã«ããŽãªãèŠçŽã§ã®æ€çŽ¢ã«å¯Ÿå¿
- é©åãªåœ¢åŒã®ã¯ãšãªæååãè¿ããŸã
get_arxiv_categories - ã«ããŽãªã®åç
§
- arXiv ã®åéã«ããŽãªããã¹ãŠäžèŠ§è¡šç€º
- åã«ããŽãªã®èª¬æ
- 察象ãçµã£ãæ€çŽ¢ã¯ãšãªã®äœæã«åœ¹ç«ã¡ãŸã
â ïž æ©èœã«å¶éããããŸãïŒåé¿çããïŒ
search_by_author - 代ããã« search_papers('au:"Author Name"') ã䜿çšããŠãã ãã
search_by_category - 代ããã« search_papers('cat:category_code') ã䜿çšããŠãã ãã
ð§ ä¿®æ£ãå¿ èŠãªæ©èœ
download_paper_pdf - HTTP ãªãã€ã¬ã¯ãåŠçã®æ¹åãå¿
èŠã§ã
- çŸåšãHTTPS/HTTP ãªãã€ã¬ã¯ãã®åé¡ã«ãã倱æããŸã
- PDF ã¯ãæ€çŽ¢çµæã«è¡šç€ºããããªã³ã¯ããçŽæ¥ã¢ã¯ã»ã¹ã§ããŸã
âïž èšå®
Claude Desktop ã®ã»ããã¢ãã
èšå®æé
ããŒã«ã«ã€ã³ã¹ããŒã«ã®å ŽåïŒ
Claude Desktop ã®èšå®ãã¡ã€ã«ã«è¿œå ããŠãã ããïŒ
macOSïŒ~/Library/Application Support/Claude/claude_desktop_config.json
WindowsïŒ%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"arxiv-mcp": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/arxiv-mcp",
"run",
"main.py"
]
}
}
}
Docker ã€ã³ã¹ããŒã«ã®å ŽåïŒ
{
"mcpServers": {
"arxiv-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"ghcr.io/tejas242/arxiv-mcp:latest"
]
}
}
}
VS Code MCP æ¡åŒµæ©èœ
VS Code ã®èšå®
{
"mcp": {
"servers": {
"arxiv-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/arxiv-mcp", "run", "main.py"]
}
}
}
}
ð¡ 䜿çšäŸ
åºæ¬çãªæ€çŽ¢æäœ
# Search for papers about transformers
search_papers("transformer architecture")
# Advanced query with specific fields
search_papers('ti:"attention mechanism" AND cat:cs.LG')
# Author-specific search (recommended approach)
search_papers('au:"Geoffrey Hinton"')
# Category browsing (recommended approach)
search_papers('cat:cs.AI')
ç ç©¶ã¯ãŒã¯ãããŒ
# 1. Find the famous "Attention" paper
search_papers('ti:"Attention Is All You Need"')
get_paper_details("1706.03762")
# 2. Explore related work
search_papers("transformer neural networks")
# 3. Build complex queries
query = build_advanced_query(
title_keywords="few-shot learning",
author_name="Tom Brown",
category="cs.LG"
)
search_papers(query)
ð arXiv ã«ããŽãªãŒãªãã¡ã¬ã³ã¹
人æ°ã®ã«ããŽãªãŒ
| ã³ãŒã | 説æ | ãããã¯ã®äŸ |
|---|---|---|
cs.AI | 人工ç¥èœ | æ©æ¢°åŠç¿ããã¥ãŒã©ã«ãããã¯ãŒã¯ãAI çè« |
cs.LG | æ©æ¢°åŠç¿ | 深局åŠç¿ã匷ååŠç¿ãçµ±èšçåŠç¿ |
cs.CV | ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ | ç»ååŠçãç©äœæ€åºãèŠèŠèªè |
cs.CL | èšç®ãšèšèª | NLPãèšèªã¢ãã«ãããã¹ãåŠç |
cs.CR | æå·ãšã»ãã¥ãªã㣠| ã»ãã¥ãªãã£ãããã³ã«ãæå·åããã©ã€ãã·ãŒ |
stat.ML | æ©æ¢°åŠç¿ïŒçµ±èšåŠïŒ | çµ±èšçåŠç¿çè«ããã€ãºæ³ |
physics.gen-ph | äžè¬ç©çåŠ | çè«ç©çåŠãéåååŠ |
math.NA | æ°å€è§£æ | èšç®æ°åŠãã¢ã«ãŽãªãºã |
q-bio.NC | å®éçç©åŠ | ç¥çµç§åŠãèšç®çç©åŠ |
å©çšå¯èœãªã«ããŽãªãŒã®å
šäžèЧã確èªããã«ã¯ãget_arxiv_categories() ã䜿çšããŠãã ããã
𧪠ãã¹ãçµæ
ãã¹ãŠã®æ©èœãå æ¬çã«ãã¹ãããçµæïŒ
â ä¿¡é Œæ§ã®é«ãæ©èœ
- ããŒã¯ãŒããèè ãã«ããŽãªãŒã«ããè«ææ€çŽ¢ïŒæåç 100%
- è«æã®è©³çްååŸïŒå®å šãªã¡ã¿ããŒã¿ã®æœåºãåäœããŸã
- ã¯ãšãªã®æ§ç¯ïŒãã¹ãŠã®æ§æã®çµã¿åããã«å¯Ÿå¿ããŠããŸã
- ã«ããŽãªãŒäžèЧïŒãã¹ãŠã® arXiv ã«ããŽãªãŒã«ã¢ã¯ã»ã¹ã§ããŸã
â ïž ä»£æ¿æ¹æ³ã®æšå¥š
- èè
æ€çŽ¢ïŒ
search_by_author()ã®ä»£ããã«search_papers('au:"Author Name"')ã䜿çšããŠãã ãã - ã«ããŽãªãŒã®åç
§ïŒ
search_by_category()ã®ä»£ããã«search_papers('cat:category')ã䜿çšããŠãã ãã
ð§ æ¢ç¥ã®åé¡
- PDF ã®ããŠã³ããŒãïŒãªãã€ã¬ã¯ãåŠçã®æ¹åãå¿ èŠã§ãïŒPDF ã¯çŽæ¥ãªã³ã¯ããã¢ã¯ã»ã¹ã§ããŸãïŒ
ð§ éçº
ãããžã§ã¯ãæ§æ
arxiv-mcp/
âââ src/arxiv_mcp/ # Main package
â âââ server.py # MCP server implementation
â âââ arxiv_client.py # arXiv API wrapper
â âââ models.py # Pydantic data models
â âââ utils.py # Helper functions
âââ tests/ # Test suite
âââ main.py # Entry point
âââ pyproject.toml # Project config
ãã¹ãã®å®è¡
uv run pytest tests/ -v
ãããã°ã¢ãŒã
# Enable detailed logging
PYTHONPATH=src uv run python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from arxiv_mcp.server import main
main()
"
â ïž ãã©ãã«ã·ã¥ãŒãã£ã³ã°
ããããåé¡ãšè§£æ±ºç
ãµãŒããŒãæ€åºãããªã
- â MCP èšå®å ã®çµ¶å¯Ÿãã¹ã確èªããŠãã ãã
- â
ãµãŒããŒãèµ·åããããšããã¹ãããŠãã ããïŒ
uv run main.py - â èšå®å€æŽåŸã« Claude Desktop ãåèµ·åããŠãã ãã
æ€çŽ¢ã«é¢ããåé¡
- â arXiv ã®ã¯ãšãªæ§æã䜿çšããŠãã ããïŒäžèšã®äŸãåç §ïŒ
- â
ã«ããŽãªãŒåã確èªããŠãã ããïŒ
get_arxiv_categories() - â ããåºç¯ãªæ€çŽ¢èªã詊ããŠãã ãã
- â
åå¥ã®æ€çޢ颿°ã§ã¯ãªã
search_papers()ã䜿çšããŠãã ãã
PDF ã®ããŠã³ããŒãã«å€±æãã
- â æ€çŽ¢çµæã®ãªã³ã¯ãã PDF ã«ã¢ã¯ã»ã¹ããŠãã ãã
- â ã€ã³ã¿ãŒãããæ¥ç¶ã確èªããŠãã ãã
- â arXiv ID ã®åœ¢åŒã確èªããŠãã ããïŒäŸïŒã1706.03762ãïŒ
ã³ã¡ã³ã
MCP ã¯åããŠã§ããïŒ
ãããã³ã«ã®æŠèŠããæåã®ãµãŒããŒã®å°å ¥ãŸã§ãããããçåã«ãŸãšããŠçããŸãã
AI ã¢ããªã±ãŒã·ã§ã³ãå€éšã®ããŒã«ãããŒã¿ãœãŒã¹ã«çµ±äžçãªæ¹æ³ã§æ¥ç¶ããããã®ãªãŒãã³ãªãããã³ã«ã§ããã¯ã©ã€ã¢ã³ãã¯ã¢ãã«ãšã®å¯Ÿè©±ãæ ããMCP ãµãŒããŒã¯ããŒã«ã»ãªãœãŒã¹ã»ããã³ãããã³ãã¬ãŒããæäŸããŸããæšæºã¡ãã»ãŒãžã§ããåãããããã1 ã€ã®ãµãŒããŒãè€æ°ã®ã¯ã©ã€ã¢ã³ãã§åå©çšã§ããŸãã