ArXiv MCP Server
arXiv Deep Research
Ein Model Context Protocol (MCP) Server zum Suchen, Herunterladen und Lesen von arXiv-Papern – konzipiert als spezialisierter Agent für die Integration in Multi-Agenten-Systeme wie Microsoft Magentic-UI und AutoGen.
Die Idee: Anstatt die arXiv-Suche als einfaches Nachschlagewerk zu behandeln, ist dieser Server als erstklassiger Forschungsagent strukturiert – einer, den Sie direkt als
McpAgentin ein Team im Magentic-One-Stil einbinden können, wodurch ein Orchestrator Zugriff auf die gesamte wissenschaftliche Literatur als delegierbare Ressource erhält.
Integration mit Magentic-UI
Magentic-UI unterstützt benutzerdefinierte McpAgent-Instanzen über mcp_agent_configs in seiner Konfigurationsdatei. Dieser Server lässt sich direkt einbinden:
# 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/srcSobald der Magentic-UI-Orchestrator registriert ist, kann er Forschungs-Teilaufgaben an diesen Agenten über das Standard-Muster „Task Ledger / Progress Ledger“ delegieren – genau wie WebSurfer das Webbrowsing handhabt, nur eben für wissenschaftliche Literatur.
Integration mit AutoGen AgentChat
Siehe examples/autogen_research_team.py für ein vollständiges 3-Agenten-Team:
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.pyTools
Tool | Beschreibung |
| arXiv mit erweiterten Filtern abfragen: Datumsbereich, Kategorie, Sortierung nach Relevanz oder Datum |
| Ein Paper als PDF abrufen und für die LLM-Verarbeitung in sauberes Markdown konvertieren |
| Zugriff auf bereits heruntergeladene Paper-Inhalte |
| Alle Paper im lokalen Speicher anzeigen |
search_papers
Unterstützt eine reichhaltige Abfragesyntax – Anführungszeichen für Phrasen, boolesche Operatoren, feldspezifische Suche (ti:, au:, abs:) und Kategoriefilterung:
{
"query": "\"multi-agent\" AND \"orchestration\" ANDNOT survey",
"max_results": 10,
"date_from": "2024-01-01",
"categories": ["cs.AI", "cs.MA"],
"sort_by": "relevance"
}Mehrstufige Forschungspipeline
Auf einer hohen Ebene führt arxiv-deep-research eine einfache, aber leistungsstarke mehrstufige Schleife aus:
Planung der Forschungsaufgabe
Ein Koordinationsagent (zum Beispiel der AutoGen
MagenticOneGroupChat-Orchestrator) nimmt das Benutzerziel entgegen und unterteilt es in Teilaufgaben.
Entdeckung von Kandidaten-Papern
Der Koordinator ruft das MCP-Tool
search_papersauf, um relevante arXiv-Paper nach Thema, Kategorie und Datum zu finden.
Herunterladen und Normalisieren von Inhalten
Für ausgewählte IDs ruft er
download_paperauf, das das PDF abruft und für das Lesen durch LLMs in sauberes Markdown konvertiert.
Tiefe Paper-Analyse
Der Koordinator (oder ein anderer Agent) verwendet den Prompt
deep-paper-analysis, um eine strukturierte Analyse einer bestimmten Paper-ID anzufordern, optional über mehrere Aufrufe hinweg, während Sie verwandte Arbeiten erkunden.
Synthese und Berichterstattung
Ein nachgelagerter Agent wie
Coder(im AutoGen-Beispiel) verwandelt diese Analysen in einen abschließenden Forschungsbericht: Zusammenfassungen, Vergleichstabellen, offene Probleme und Vorschläge für nächste Schritte.
Sie können diese Pipeline manuell ausführen, indem Sie die Tools und Prompts von jedem MCP-fähigen Client aufrufen, oder automatisch unter Verwendung des Beispiel-AutoGen-Teams.
Evaluierungs-Benchmark
Das Repository enthält einen Benchmark für die Abrufqualität (eval/benchmark.py), der Folgendes misst:
Precision@K — Anteil der relevanten Ergebnisse unter den Top-K
Recall@K — Anteil der bekannten relevanten Paper, die in den Top-K gefunden wurden
MRR — Mean Reciprocal Rank des ersten relevanten Ergebnisses
Ground-Truth-Abfragen basieren auf wegweisenden Papern (AutoGen 2308.08155, Magentic-One 2411.04468, RAG 2005.11401, CoT 2201.11903) und können automatisch mithilfe der unten beschriebenen Pipeline für synthetische Daten erweitert werden.
python eval/benchmark.py --k 10 --output results.jsonGenerierung synthetischer Evaluierungsdaten (AgentInstruct-Stil)
scripts/generate_eval_tasks.py implementiert eine 4-stufige Pipeline, die diverse Benchmark-Abfragen aus arXiv-Abstracts generiert – nach dem Vorbild des AgentInstruct-Ansatzes:
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.jsonDie Ausgabe enthält Schwierigkeitsgrade (einfach/mittel/schwer) für eine stratifizierte Evaluierung.
Beobachtbarkeit: OpenTelemetry Tracing
Jeder Tool-Aufruf ist mit OpenTelemetry-Spans instrumentiert (spiegelt die eingebaute OTel-Unterstützung von AutoGen v0.4 wider):
# 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:16686Aufgezeichnete Spans: mcp.tool.search_papers, mcp.tool.download_paper, mcp.tool.read_paper – jeweils mit Abfrage, Kategorien, Ergebnisanzahl, Latenz und Fehlerstatus als Attribute.
Tracing ist ein Zero-Cost-No-Op, wenn opentelemetry-sdk nicht installiert ist.
Installation
Erfordert 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" }
}
}
}Prompts
deep-paper-analysis
Umfassender Analyse-Workflow, der eine Zusammenfassung für Führungskräfte, Methodik, Ergebnisse, Implikationen und zukünftige Richtungen abdeckt:
{ "paper_id": "2401.12345" }Ausführen und Fortsetzen von Forschungssitzungen
Es gibt heute zwei Hauptwege, Forschungssitzungen durchzuführen.
1. AutoGen Multi-Agenten-Team (empfohlene Demo)
Dies verwendet OpenAI-Modelle, um einen vollständigen Forschungsworkflow zu koordinieren.
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.pyDies startet eine interaktive Konsolen-UI, in der:
der Orchestrator die Arbeit plant,
ArxivSurfer Paper über MCP sucht und herunterlädt, und
Coder den abschließenden Markdown-Bericht schreibt.
Um eine Sitzung fortzusetzen, können Sie:
das Skript erneut ausführen und die vorherige Zusammenfassung als Teil einer neuen Aufgabe einfügen, oder
dieselbe Konsolensitzung offen lassen und dem Team eine Folgeanweisung geben (zum Beispiel: „Konzentriere dich jetzt auf Sicherheits-Trade-offs“).
2. Direkte MCP-Nutzung von Tools wie Claude Desktop oder Cursor
Sie können auch direkt mit dem MCP-Server sprechen und Ihre eigene Schleife aufbauen:
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_serverWährend dieser Server läuft, kann jeder MCP-fähige Client:
search_papersunddownload_paperaufrufen,read_paperverwenden, um Inhalte in den Chat zu ziehen, undden
deep-paper-analysis-Prompt mehrfach aufrufen.
Der Prompt-Handler behält einen einfachen globalen Forschungskontext bei, sodass wiederholte Aufrufe im selben Prozess zuvor analysierte Paper-IDs erwähnen und das Modell dazu ermutigen, diese miteinander zu verknüpfen. In der Praxis bedeutet das „Fortsetzen“ einer Forschungssitzung:
den MCP-Serverprozess am Laufen zu halten, und
neue
deep-paper-analysis-Aufrufe für neue Paper-IDs vom selben Client oder Arbeitsbereich aus zu tätigen.
Repository-Struktur
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.tomlUmgebungsvariablen
Variable | Standardwert | Beschreibung |
|
| Speicherort für Paper |
|
| Konsolen-Trace-Ausgabe aktivieren |
| — | OTLP-Endpunkt (z. B. |
|
| Dienstname in Traces |
Wenn Sie den optionalen Evaluierungsdatengenerator verwenden, benötigen Sie zusätzlich:
Variable | Beschreibung |
| Wird von |
Bekannte Probleme
Modellunterstützung ist derzeit nur auf OpenAI beschränkt.
Das AutoGen-Forschungsteam und der synthetische Evaluierungsgenerator rufen beide OpenAI-Modelle (
gpt-4o/gpt-4o-mini) über das OpenAI Python SDK auf.Es gibt noch keine erstklassige
google-genai/ Gemini- oder Gemma-Integration, obwohl das Design dies unterstützen würde.
Noch keine MCP-Ressourcen.
Paper werden nur über Tools (
read_paper) bereitgestellt, nicht als MCP-Ressourcen mit stabilenarxiv://-URIs. MCP-Clients, die Ressourcen bevorzugen, können Paper noch nicht auflisten.
Begrenzte Tests.
Die Kernlogik für Abruf und Evaluierung verfügt nur über sehr wenige automatisierte Tests; Metrikfunktionen und Tool-Handler sollten im Laufe der Zeit Unit-Tests erhalten.
Roadmap
Geplante Verbesserungen (Änderungen vorbehalten):
Gemini / Gemma-Unterstützung via
google-genaiHinzufügen einer optionalen
google-genai-Abhängigkeit und eines kleinen Runners, der Gemini/Gemma-Modelle mitGEMINI_API_KEYaufrufen kann.Bereitstellung als alternatives Backend für die Forschungsteam-Demo und den Evaluierungsgenerator.
MCP-Ressourcen für heruntergeladene Paper
Implementierung von
list_resources/read_resource, damit heruntergeladene PDFs alsarxiv://paper_id-Ressourcen in MCP-Clients erscheinen.
Stärkere Tests und Evaluierungen
Hinzufügen von Unit-Tests für Metriken, Suchhilfen und Prompt-Handler.
Automatisierung der Ausführung von
eval/benchmark.pyund Verfolgung von Regressionen im Zeitverlauf.
Reichhaltigere Forschungssitzungen
Ersetzen des einfachen globalen Forschungskontexts durch explizite Sitzungs-IDs und persistierten Status, sodass „Sitzung X fortsetzen“ zu einem erstklassigen Feature über Neustarts hinweg wird.
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