ArXiv MCP Server
arXiv Deep Research
arXiv論文の検索、ダウンロード、読み取りを行うためのModel Context Protocol (MCP) サーバーです。Microsoft Magentic-UIやAutoGenのようなマルチエージェントシステムに統合するための専門エージェントとして設計されています。
コンセプト: arXiv検索を単なるルックアップツールとして扱うのではなく、このサーバーはファーストクラスのリサーチエージェントとして構成されています。Magentic-Oneスタイルのチームに
McpAgentとして直接組み込むことができ、オーケストレーターに委任可能なリソースとして科学文献全体へのアクセス権を提供します。
Magentic-UIとの統合
Magentic-UIは、設定ファイルのmcp_agent_configsを通じてカスタムMcpAgentインスタンスをサポートしています。このサーバーは直接プラグイン可能です:
# examples/magentic_ui_config.yaml
client:
mcp_agent_configs:
- agent_name: ArxivResearcher
description: >
Specialist agent for searching and reading arXiv papers.
Use when the task requires finding academic papers, understanding
research literature, or retrieving technical details from published work.
server_params:
type: StdioServerParams
command: python
args: ["-m", "arxiv_mcp_server"]
env:
PYTHONPATH: /path/to/arxiv-deep-research/src登録が完了すると、Magentic-UIオーケストレーターは、標準のタスク台帳/進捗台帳パターンを通じて、このエージェントにリサーチのサブタスクを委任できます。これはWebSurferがWebブラウジングを処理するのと全く同じ方法ですが、学術文献を対象としています。
AutoGen AgentChatとの統合
3つのエージェントで構成されるチームの完全な例については、examples/autogen_research_team.pyを参照してください:
Orchestrator (MagenticOneGroupChat)
├── ArxivSurfer ← this MCP server, wrapped via StdioServerParams + mcp_server_tools
└── Coder ← synthesizes findings into structured markdown reportspip install "autogen-agentchat" "autogen-ext[openai]" "mcp>=1.2.0"
export OPENAI_API_KEY=...
python examples/autogen_research_team.pyツール
ツール | 説明 |
| 日付範囲、カテゴリ、関連度や日付による並べ替えなどの高度なフィルターを使用してarXivをクエリします |
| 論文のPDFを取得し、LLMが読み取れるクリーンなマークダウンに変換します |
| 以前にダウンロードした論文の内容にアクセスします |
| ローカルストレージ内のすべての論文を表示します |
search_papers
引用符で囲まれたフレーズ、論理演算子、フィールド固有の検索(ti:、au:、abs:)、カテゴリフィルタリングなど、豊富なクエリ構文をサポートしています:
{
"query": "\"multi-agent\" AND \"orchestration\" ANDNOT survey",
"max_results": 10,
"date_from": "2024-01-01",
"categories": ["cs.AI", "cs.MA"],
"sort_by": "relevance"
}マルチステージ・リサーチパイプライン
高レベルでは、arxiv-deep-researchはシンプルかつ強力なマルチステージループを実行します:
リサーチタスクの計画
コーディネーターエージェント(例:AutoGenの
MagenticOneGroupChatオーケストレーター)がユーザーの目標を受け取り、サブタスクに分割します。
候補論文の発見
コーディネーターがMCPの
search_papersツールを呼び出し、トピック、カテゴリ、日付に基づいて関連するarXiv論文を見つけます。
コンテンツのダウンロードと正規化
選択されたIDに対して
download_paperを呼び出し、PDFを取得してLLMが読み取れるクリーンなマークダウンに変換します。
論文の詳細分析
コーディネーター(または別のエージェント)が
deep-paper-analysisプロンプトを使用して、特定の論文IDの構造化された分析を要求します。関連する研究を調査する際に、必要に応じて複数回呼び出すことも可能です。
統合とレポート作成
(AutoGenの例における)
Coderのようなダウンストリームエージェントが、これらの分析を最終的なリサーチレポート(要約、比較表、未解決の問題、次のステップの提案など)にまとめます。
このパイプラインは、MCP対応クライアントからツールやプロンプトを呼び出すことで手動で実行することも、サンプルAutoGenチームを使用して自動的に実行することもできます。
評価ベンチマーク
このリポジトリには、以下を測定する検索品質ベンチマーク(eval/benchmark.py)が含まれています:
Precision@K — 上位K件の結果のうち関連するものの割合
Recall@K — 既知の関連論文のうち上位K件で見つかったものの割合
MRR — 最初の関連結果の平均逆順位
正解クエリは、ランドマークとなる論文(AutoGen 2308.08155、Magentic-One 2411.04468、RAG 2005.11401、CoT 2201.11903)からシードされており、以下の合成データパイプラインを使用して自動的に拡張可能です。
python eval/benchmark.py --k 10 --output results.json合成評価データの生成 (AgentInstructスタイル)
scripts/generate_eval_tasks.pyは、arXivの要約から多様なベンチマーククエリを生成する4ステージのパイプラインを実装しており、AgentInstructのアプローチを反映しています:
Stage 1: Seed collection → fetch paper abstracts from arXiv by category
Stage 2: Content transform → extract key concepts and problem statements
Stage 3: Instruction gen → generate realistic research queries via GPT-4o-mini
Stage 4: Instruction refine → create harder variants at subtopic intersectionsexport OPENAI_API_KEY=...
python scripts/generate_eval_tasks.py --seed-category cs.AI --num-seeds 20 --output eval/generated_queries.json出力には、層別評価のための初級/中級/上級の難易度ティアが含まれます。
可観測性: OpenTelemetryトレーシング
すべてのツール呼び出しはOpenTelemetryスパンで計測されています(AutoGen v0.4の組み込みOTelサポートを反映):
# Console output (no infrastructure needed)
export ARXIV_MCP_TRACE_CONSOLE=true
python -m arxiv_mcp_server
# OTLP export to Jaeger / Azure Monitor
docker run -d --name jaeger -p 16686:16686 -p 4317:4317 jaegertracing/all-in-one
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
export OTEL_SERVICE_NAME=arxiv-mcp-server
python -m arxiv_mcp_server
# View traces: http://localhost:16686記録されるスパン:mcp.tool.search_papers、mcp.tool.download_paper、mcp.tool.read_paper。それぞれにクエリ、カテゴリ、結果数、レイテンシ、エラー状態が属性として含まれます。
opentelemetry-sdkがインストールされていない場合、トレーシングはコストゼロのノーオペレーション(何もしない処理)となります。
インストール
Python 3.11以上が必要です
git clone https://github.com/freyzo/arxiv-deep-research
cd arxiv-deep-research
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
# Optional: OTel tracing
pip install -e ".[tracing]"Claude Desktop
{
"mcpServers": {
"arxiv": {
"command": "/path/to/.venv/bin/python",
"args": ["-m", "arxiv_mcp_server", "--storage-path", "/path/to/papers"]
}
}
}Cursor
{
"mcpServers": {
"arxiv": {
"command": "python",
"args": ["-m", "arxiv_mcp_server"],
"env": { "PYTHONPATH": "/path/to/arxiv-deep-research/src" }
}
}
}プロンプト
deep-paper-analysis
エグゼクティブサマリー、手法、結果、影響、今後の方向性を網羅した包括的な分析ワークフロー:
{ "paper_id": "2401.12345" }リサーチセッションの実行と再開
現在、リサーチセッションを実行する主な方法は2つあります。
1. AutoGenマルチエージェントチーム(推奨デモ)
これはOpenAIモデルを使用して、完全なリサーチワークフローを調整します。
cd arxiv-deep-research
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
pip install "autogen-agentchat" "autogen-ext[openai]" "mcp>=1.2.0"
export OPENAI_API_KEY=your_openai_key
python examples/autogen_research_team.pyこれにより、対話型のコンソールUIが起動します:
Orchestratorが作業を計画し、
ArxivSurferがMCP経由で論文を検索・ダウンロードし、
Coderが最終的なマークダウンレポートを作成します。
セッションを再開するには、以下のいずれかを行います:
スクリプトを再度実行し、前回の要約を新しいタスクの一部として貼り付ける、または
同じコンソールセッションを開いたままにして、チームにフォローアップの指示(例:「次は安全性のトレードオフに焦点を当てて」)を出す。
2. Claude DesktopやCursorなどのツールからの直接的なMCP使用
MCPサーバーに直接話しかけて、独自のループを構築することもできます:
cd arxiv-deep-research
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
export ARXIV_MCP_TRACE_CONSOLE=true # optional
python -m arxiv_mcp_serverこのサーバーが実行されている間、MCP対応クライアントは以下のことが可能です:
search_papersとdownload_paperを呼び出す、read_paperを使用してチャットにコンテンツを取り込む、deep-paper-analysisプロンプトを複数回呼び出す。
プロンプトハンドラーはシンプルなグローバルなリサーチコンテキストを保持しているため、同じプロセス内での繰り返しの呼び出しは、以前に分析された論文IDを参照し、モデルがそれらを関連付けることを促します。実際には、「リサーチセッションを再開する」とは以下のことを意味します:
同じMCPサーバープロセスを維持し、
同じクライアントまたはワークスペースから、新しい論文IDに対して新しい
deep-paper-analysis呼び出しを発行する。
リポジトリ構造
arxiv-deep-research/
├── src/arxiv_mcp_server/
│ ├── server.py # MCP server + OTel init
│ ├── tracing.py # @trace_tool decorator, OTLP + console exporters
│ ├── config.py
│ ├── tools/ # search, download, read, list
│ └── prompts/ # deep research analysis prompt
├── examples/
│ ├── autogen_research_team.py # Magentic-One-style 3-agent team
│ └── magentic_ui_config.yaml # McpAgent config for Magentic-UI
├── eval/
│ └── benchmark.py # Precision@K / Recall@K / MRR harness
├── scripts/
│ └── generate_eval_tasks.py # AgentInstruct-style query generator
└── pyproject.toml環境変数
変数 | デフォルト | 説明 |
|
| 論文の保存場所 |
|
| コンソールトレース出力を有効にする |
| — | OTLPエンドポイント (例: |
|
| トレース内のサービス名 |
オプションの評価データジェネレーターを使用する場合は、以下も必要です:
変数 | 説明 |
|
|
既知の問題
モデルサポートは現在OpenAIのみです。
AutoGenリサーチチームと合成評価ジェネレーターはどちらも、OpenAI Python SDKを介してOpenAIモデル(
gpt-4o/gpt-4o-mini)を呼び出します。設計上はサポート可能ですが、
google-genai/ GeminiやGemmaのファーストクラスの統合はまだありません。
MCPリソースはまだありません。
論文はMCPリソースとしてではなく、ツール(
read_paper)を介してのみ公開されています。リソースを優先するMCPクライアントは、まだ論文を一覧表示できません。
テストが限定的です。
コアとなる検索および評価ロジックの自動テストは非常に軽量です。メトリック関数やツールハンドラーには、今後ユニットテストを追加する必要があります。
ロードマップ
計画されている改善点(変更される可能性があります):
google-genaiによるGemini / Gemmaサポートオプションの
google-genai依存関係と、GEMINI_API_KEYを使用してGemini/Gemmaモデルを呼び出せる小さなランナーを追加します。これをリサーチチームデモと評価ジェネレーターの代替バックエンドとして公開します。
ダウンロード済み論文のためのMCPリソース
list_resources/read_resourceを実装し、ダウンロードしたPDFがMCPクライアント内でarxiv://paper_idリソースとして表示されるようにします。
テストと評価の強化
メトリック、検索ヘルパー、プロンプトハンドラーのユニットテストを追加します。
eval/benchmark.pyの実行を自動化し、経時的な回帰を追跡します。
よりリッチなリサーチセッション
シンプルなグローバルリサーチコンテキストを、明示的なセッションIDと永続化された状態に置き換え、「セッションXを再開」が再起動をまたいでファーストクラスの機能となるようにします。
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/freyzo/mcp-arxiv'
If you have feedback or need assistance with the MCP directory API, please join our Discord server