arXiv MCP Server
Busca y analiza artículos académicos en arXiv.
Documentación
arxiv-mcp-server
Un servidor MCP local para trabajo de literatura con agentes. El diferenciador es la lectura de secciones en LaTeX original, BibTeX a partir de metadatos de arXiv y seguimiento de temas. Los artículos permanecen en disco. El ciclo de trabajo es ID de artículo → esquema → una sección → citas. La búsqueda es opcional.
Instalación
La instalación predeterminada es uvx arxiv-mcp-server. Las integraciones basadas en comandos necesitan uv, que proporciona uvx. No se requiere clonar el repositorio ni configurar un entorno de Python.
uvx arxiv-mcp-server
Agregue esta configuración stdio a los clientes que acepten la forma JSON de mcpServers, como Claude Desktop y Kiro. Otros clientes pueden usar un objeto servers de nivel superior, TOML o su propia interfaz de configuración; consulte la documentación de MCP del cliente.
{
"mcpServers": {
"arxiv": {
"type": "stdio",
"command": "uvx",
"args": ["arxiv-mcp-server"]
}
}
}
El directorio de artículos predeterminado es ~/.arxiv-mcp-server/papers. Para elegir otro directorio, agregue "--storage-path", "/absolute/path/to/papers" a args.
El paquete compatible se publica en PyPI como arxiv-mcp-server==0.7.2. Un paquete npm no relacionado usa el mismo nombre, por lo que no debe instalar este servidor con npm, pnpm o npx arxiv-mcp-server.
Listado en el registro oficial de MCP, última versión 0.7.2.
Por qué esto no es un envoltorio de búsqueda
La búsqueda, la obtención de fuentes, los grafos de citas y las descargas llaman a sus respectivos servicios externos. Lo que permanece local es el ciclo de literatura: leer LaTeX enviado por el autor una sección a la vez, exportar BibTeX desde metadatos autoritativos de arXiv y mantener los seguimientos de temas en disco. El servidor se ejecuta localmente sobre stdio de forma predeterminada.
Recetas por cliente (Claude Code, Codex, Hermes, VS Code / Kiro, Claude Desktop, plugins)
Use el JSON predeterminado anterior a menos que su cliente tenga un asistente de una línea.
Claude Code
Agregue el servidor MCP para todos los proyectos:
claude mcp add --transport stdio --scope user arxiv -- uvx arxiv-mcp-server
Para la integración de plugin más completa—que instala la conexión MCP junto con la habilidad de investigación de arXiv incluida—registre este repositorio como marketplace e instale el plugin:
claude plugin marketplace add blazickjp/arxiv-mcp-server
claude plugin install arxiv-mcp-server@arxiv-mcp
Verifique la instalación directa de MCP con claude mcp get arxiv. Reinicie Claude Code o ejecute /reload-plugins después de instalar el plugin.
OpenAI Codex
Agregue el servidor MCP:
codex mcp add arxiv -- uvx arxiv-mcp-server
O instale la conexión MCP y la habilidad de investigación incluida como plugin de Codex:
codex plugin marketplace add blazickjp/arxiv-mcp-server
codex plugin add arxiv-mcp-server@arxiv-mcp
Verifique la instalación directa de MCP con codex mcp get arxiv. Codex CLI, la extensión de IDE de Codex y Codex en la aplicación de escritorio de ChatGPT comparten esta configuración de MCP.
Hermes Agent
Agregue el servidor, apruebe las herramientas descubiertas y pruebe la conexión guardada:
hermes mcp add arxiv --command uvx --args arxiv-mcp-server
hermes mcp test arxiv
VS Code y Kiro
Para la integración más completa de Kiro Power, abra el panel Powers, elija Add Custom Power → Import power from GitHub e ingrese:
https://github.com/blazickjp/arxiv-mcp-server
El Power instala la conexión MCP desde mcp.json y agrega guía enfocada de investigación en arXiv. Los usuarios de Kiro que prefieran configuración manual pueden colocar la configuración genérica anterior en .kiro/settings/mcp.json para un espacio de trabajo o ~/.kiro/settings/mcp.json para todos los espacios de trabajo.
Paquete de Claude Desktop
Los usuarios de macOS pueden instalar una extensión .mcpb empaquetada desde el lanzamiento v0.7.2 o el último lanzamiento de GitHub:
- Apple Silicon:
arxiv-mcp-server-darwin-arm64-0.7.2.mcpb - Intel:
arxiv-mcp-server-darwin-x86_64-0.7.2.mcpb
Haga doble clic en el paquete, arrástrelo a Claude Desktop o abra Settings → Extensions → Advanced settings → Install Extension…. El paquete incluye las dependencias del servidor y requiere CPython 3.11.x.
Otros clientes MCP
Otros clientes pueden usar un objeto servers de nivel superior, TOML o su propia interfaz de configuración; consulte la documentación de MCP del cliente. La instalación directa de MCP es el camino más corto. Instale un plugin cuando también desee el flujo de trabajo de investigación que guía al cliente hacia búsquedas enfocadas, lecturas acotadas, recorrido de citas y recuperación de LaTeX a nivel de sección.
Manifiestos de plugins
El mismo servidor MCP y la habilidad de investigación están empaquetados para ambos sistemas principales de plugins:
| Integración | Manifiesto | Marketplace |
|---|---|---|
| Claude Code | .claude-plugin/plugin.json | .claude-plugin/marketplace.json |
| OpenAI Codex / ChatGPT Work | .codex-plugin/plugin.json | .agents/plugins/marketplace.json |
| Kiro Power | POWER.md | mcp.json |
| Lanzamiento MCP compartido | .mcp.json para Claude y clientes locales del repositorio; .codex-mcp.json para plugins de Codex | uvx arxiv-mcp-server |
| Flujo de trabajo de investigación compartido | skills/arxiv-mcp-server/SKILL.md | Instalado con cualquiera de los plugins |
Si un cliente de escritorio no puede encontrar uvx
Las aplicaciones de escritorio no siempre heredan el mismo PATH que su terminal. Si uvx arxiv-mcp-server funciona en una terminal pero el cliente informa que el servidor no pudo conectarse, busque la ruta absoluta del ejecutable:
# macOS and Linux
command -v uvx
# Windows PowerShell
(Get-Command uvx).Source
Reemplace "command": "uvx" con la ruta absoluta devuelta y luego reinicie el cliente. Mantenga el valor de args sin cambios.
Si una instalación existente no tiene las herramientas más nuevas
uvx reutiliza entornos de herramientas en caché. Fuerce la resolución del lanzamiento actual de PyPI con un intérprete compatible y luego reinicie su cliente MCP:
uvx --python 3.11 --refresh-package arxiv-mcp-server arxiv-mcp-server
Si su cliente aún inicia un entorno más antiguo, agregue "--python", "3.11" antes de "arxiv-mcp-server" en su arreglo args.
Instalación de comando persistente
Para colocar arxiv-mcp-server en su PATH en lugar de lanzarlo a través de uvx:
uv tool install arxiv-mcp-server
Si el comando no está disponible de inmediato, ejecute uv tool update-shell y reinicie la terminal. Después, use "command": "arxiv-mcp-server" y omita el nombre del paquete de args.
Herramientas
El servidor expone actualmente 19 herramientas.
| Herramienta | Propósito | Notas |
|---|---|---|
search_papers | Buscar en arXiv por consulta, categoría, fecha y orden de clasificación | Predeterminado ≤5 resultados compactos (abstract_mode=snippet); API remota de arXiv |
get_abstract | Obtener metadatos y un resumen por ID de arXiv | No descarga el artículo |
download_paper | Descargar y convertir un artículo a Markdown local | HTML primero; respaldo PDF usa [pdf]; force=true vuelve a obtener; contenido limitado a 12,000 caracteres por defecto |
list_papers | Listar artículos almacenados localmente | Devuelve id, título, autores, publicado; compact solo para IDs |
read_paper | Leer contenido de artículos almacenados localmente | Limitado a 12,000 caracteres por defecto; admite start/max_chars/return_full_text |
get_paper_outline | Esquema de encabezados Markdown paginado | IDs de sección jerárquicos estables |
read_paper_section | Leer una sección Markdown acotada | Por ID de esquema o título único |
search_paper_text | Búsqueda de pasajes acotada en un artículo | Desplazamientos de fuente; no requiere Torch |
get_paper_latex | Recuperar LaTeX acotado enviado por el autor | Archivo fuente remoto de arXiv |
list_paper_latex_sections | Devolver un esquema LaTeX paginado | Admite start y max_sections |
get_paper_latex_section | Leer una sección LaTeX acotada | Seleccionar por ID de esquema o título exacto |
citation_graph | Obtener referencias y artículos que citan | API remota de Semantic Scholar (1 llamada por artículo, en caché en disco); clave API gratuita opcional mejora la confiabilidad |
export_citations | Exportar BibTeX para uno o más IDs de arXiv | Metadatos autoritativos de arXiv |
watch_topic | Guardar o actualizar un seguimiento de tema de arXiv | Almacenado localmente; omita categories para conservar al actualizar, categories: [] para borrar |
list_watches | Listar seguimientos de temas guardados | Solo lectura; no avanza last_checked |
check_alerts | Verificar seguimientos guardados para nuevos artículos | Devuelve artículos desde la última verificación |
unwatch_topic | Eliminar un seguimiento de tema guardado | Coincidencia exacta de tema; no encontrado si falta |
semantic_search | Buscar artículos descargados por similitud semántica | Requiere [pro] |
reindex | Reconstruir el índice semántico local | Requiere [pro] |
Alertas de investigación (watch_topic)
Guarde seguimientos de temas permanentes con watch_topic, inspecciónelos con list_watches, consulte con check_alerts y elimine con unwatch_topic.
Al actualizar un seguimiento existente (misma cadena topic):
- Omita
categories→ conserve los filtros de categoría almacenados (y otros campos que deje sin cambios). - Pase
categories: []→ borre los filtros de categoría. - Pase una lista no vacía → reemplace los filtros almacenados.
Ruta de creación: omitir categories almacena una lista vacía (sin filtro de categoría).
Guía de consultas de search_papers
Los esquemas de herramientas se mantienen cortos a propósito. Use esta sección (no la descripción de MCP siempre cargada) para tutoriales de consultas, catálogos de categorías y ejemplos de flujos de trabajo.
Construcción de consultas
- Use frases entre comillas para coincidencias exactas:
"multi-agent systems","neural networks" - Combine conceptos relacionados con OR:
"AI agents" OR "software agents" - Búsquedas específicas de campo:
ti:"exact title phrase",au:"author name",abs:"keyword",cat:cs.LG - Excluya con ANDNOT:
"machine learning" ANDNOT "survey" - Prefiera 2–4 conceptos centrales sobre listas largas de palabras clave
Patrones avanzados
- Campo + frase:
ti:"transformer architecture" - Múltiples campos:
au:"Smith" AND ti:"quantum" - Exclusiones:
"deep learning" ANDNOT ("survey" OR "review") - Amplio + específico:
"artificial intelligence" AND (robotics OR "computer vision")
Filtrado por categoría (recomendado para relevancia)
Ciencias de la Computación: cs.AI (IA), cs.LG (ML), cs.CL (NLP), cs.CV (visión), cs.MA (multiagente), cs.RO (robótica), cs.NE (neural/evolutivo), cs.IR (IR), cs.HC (HCI), cs.CR (seguridad), cs.DB (bases de datos)
Estadística y Matemáticas: stat.ML, stat.AP, math.OC, math.ST
Física y otros: quant-ph, eess.SP, eess.AS, physics.data-an
Ejemplos efectivos
ti:"reinforcement learning"concategories: ["cs.LG", "cs.AI"]au:"Hinton" AND "deep learning"concategories: ["cs.LG"]"multi-agent" ANDNOT "survey"concategories: ["cs.MA"]abs:"transformer" AND ti:"attention"concategories: ["cs.CL"]
Fechas y ordenamiento
- Las fechas usan
YYYY-MM-DD(date_from/date_to) - El
sort_bypredeterminado esrelevance; usedatepara monitoreo de más reciente primero - Trabajo fundamental:
date_to: "2010-12-31"con búsquedas de campo de título/resumen
Tamaño de resultados, resúmenes y paginación
- El
max_resultspredeterminado es 5 (máximo 50). Pase un valor explícito para páginas más grandes. abstract_mode:snippet(predeterminado, ~280 caracteres, marcado… [truncated]cuando se corta),full(resumen completo) onone(omitir resúmenes). Otros metadatos (título, autores, categorías, fechas, URL) siempre se devuelven.- Las respuestas informan
total_results(coincidencias del corpus),returned,has_more,start,next_startyabstract_mode - Pase
start=next_startcon el mismoabstract_modepara la siguiente página - arXiv impone ~3 segundos entre solicitudes (manejado en el servidor); en errores de límite de velocidad espere ~60s
Buscar e inspeccionar un artículo
Pida a su cliente MCP que llame a search_papers con:
{
"query": "\"Kolmogorov-Arnold Networks\"",
"categories": ["cs.LG", "cs.AI"],
"sort_by": "date"
}
Los valores predeterminados devuelven hasta cinco resultados compactos con fragmentos de resumen. Use "abstract_mode": "full" cuando necesite resúmenes completos en la respuesta de búsqueda, o llame a get_abstract para un solo artículo después de una búsqueda compacta:
{
"paper_id": "2404.19756"
}
No llame a get_abstract nuevamente para artículos ya devueltos con abstract_mode=full.
Descargar y leer texto completo
Llame a download_paper con:
{
"paper_id": "2404.19756"
}
Omitir max_chars devuelve un primer fragmento acotado (por defecto 12,000 caracteres del artículo). Los artículos en caché se devuelven de inmediato. Pasa "force": true para volver a descargar y sobrescribir el markdown local y el archivo secundario (también ocurre automáticamente cuando cambia la versión del extractor HTML).
Luego, navega por el contenido en caché con read_paper:
{
"paper_id": "2404.19756",
"start": 0
}
O continúa desde un fragmento anterior:
{
"paper_id": "2404.19756",
"start": 12000
}
Las respuestas de contenido extenso incluyen content_length, returned_chars, next_start, is_truncated y (cuando se truncan) next_retrieval con la instrucción para la siguiente llamada. Pasa next_start al start de la siguiente llamada para continuar leyendo. Pasa un max_chars explícito para anular el tamaño de fragmento predeterminado, o "return_full_text": true para optar por la respuesta completa del artículo sin límite anterior.
Notas de migración (contenido acotado por defecto)
Anteriormente, omitir max_chars en download_paper / read_paper devolvía el artículo completo. Ese valor predeterminado ahora es un fragmento de 12,000 caracteres para que una sola llamada a la herramienta MCP no pueda saturar la ventana de contexto del cliente.
| Necesidad | Llamada |
|---|---|
| Primer fragmento acotado (nuevo valor predeterminado) | { "paper_id": "…" } |
| Continuar leyendo | { "paper_id": "…", "start": <next_start> } |
| Tamaño de fragmento personalizado | { "paper_id": "…", "max_chars": 5000 } |
| Comportamiento antiguo sin límite | { "paper_id": "…", "return_full_text": true } |
Los clientes que ya pasaban max_chars no cambian. Solo los llamadores que dependían del comportamiento de omitir max_chars = texto completo necesitan agregar return_full_text: true o paginar mediante next_start.
Leer LaTeX original por sección
Llama a get_paper_latex con:
{
"paper_id": "1706.03762"
}
Obtén la primera página de su esquema de secciones con list_paper_latex_sections:
{
"paper_id": "1706.03762",
"start": 0,
"max_sections": 100
}
Luego llama a get_paper_latex_section usando un ID de ese esquema:
{
"paper_id": "1706.03762",
"section_id": "3.2",
"max_chars": 12000
}
Los archivos LaTeX se validan, se limitan en tamaño y se almacenan en caché localmente antes de devolver el contenido.
Dependencias opcionales
Elige la variante de instalación que coincida con las funciones que necesitas:
# Base server
uv tool install arxiv-mcp-server
# Base server plus PDF conversion
uv tool install "arxiv-mcp-server[pdf]"
# Base server plus local semantic search
uv tool install "arxiv-mcp-server[pro]"
Si la herramienta base ya está instalada, reinstala la variante seleccionada:
uv tool install --force "arxiv-mcp-server[pdf]"
El extra pdf instala pymupdf4llm y pymupdf-layout para artículos sin HTML de arXiv utilizable. El extra pro agrega dependencias de incrustación local para semantic_search y reindex; la búsqueda semántica solo opera sobre artículos ya descargados en el directorio de almacenamiento configurado.
Para artículos antiguos que requieren conversión de PDF, ejecuta el paquete con su extra de PDF:
{
"mcpServers": {
"arxiv": {
"type": "stdio",
"command": "uvx",
"args": [
"--from",
"arxiv-mcp-server[pdf]",
"arxiv-mcp-server"
]
}
}
}
Prompts integrados
El servidor proporciona siete flujos de trabajo de prompts MCP. La disponibilidad de prompts depende del cliente; el servidor proporciona instrucciones de flujo de trabajo pero no ejecuta un modelo separado.
| Prompt | Argumentos requeridos | Propósito |
|---|---|---|
research-discovery | topic | Mapear terminología, búsquedas, artículos, clústeres de investigación y una ruta de lectura |
deep-paper-analysis | paper_id | Analizar un artículo en profundidad |
summarize_paper | paper_id | Resumir métodos, resultados y limitaciones |
compare_papers | paper_ids | Comparar múltiples artículos |
literature_review | topic | Sintetizar un tema y un conjunto opcional de artículos |
literature-synthesis | paper_ids | Sintetizar temas, métodos, cronologías o brechas entre artículos |
research-question | paper_ids, topic | Formular preguntas de investigación fundamentadas y falsables |
HTTP transmisible
Para implementaciones donde stdio no es práctico:
TRANSPORT=http HOST=127.0.0.1 PORT=8080 \
uvx arxiv-mcp-server --storage-path /absolute/path/to/papers
PowerShell:
$env:TRANSPORT = "http"
$env:HOST = "127.0.0.1"
$env:PORT = "8080"
uvx arxiv-mcp-server --storage-path C:\absolute\path\to\papers
Conecta clientes a:
{
"mcpServers": {
"arxiv": {
"type": "http",
"url": "http://127.0.0.1:8080/mcp"
}
}
}
Las sondas de nube y balanceadores de carga deben hacer GET a http://<host>:<port>/healthz. Devuelve 200 con el cuerpo ok una vez que el servidor HTTP está escuchando. No hay una verificación separada de /ready: si el proceso está activo, está listo. El transporte stdio no tiene endpoints HTTP.
El servidor se vincula a 127.0.0.1 por defecto y habilita la protección contra reenlace de DNS de MCP. Si un proxy inverso expone el servidor, mantén el proceso en una interfaz privada y proporciona autenticación y controles de red en el upstream. Usa ALLOWED_HOSTS y ALLOWED_ORIGINS para el host y el origen reenviados por el proxy.
Configuración
| Configuración | Valor predeterminado | Propósito |
|---|---|---|
--storage-path | ~/.arxiv-mcp-server/papers | Almacenamiento de artículos, caché de fuentes, alertas e índices |
MAX_RESULTS | 50 | Límite del lado del servidor para conteos de resultados |
REQUEST_TIMEOUT | 60 | Tiempo de espera de descarga de respaldo de PDF en segundos |
TRANSPORT | stdio | stdio, http o streamable-http |
HOST | 127.0.0.1 | Host de vinculación HTTP |
PORT | 8000 | Puerto de vinculación HTTP |
ALLOWED_HOSTS | vacío | Valores adicionales aceptados de Host HTTP |
ALLOWED_ORIGINS | vacío | Valores adicionales aceptados de Origin HTTP |
SEMANTIC_SCHOLAR_API_KEY | vacío | Clave API gratuita de Semantic Scholar para citation_graph. Obtén una en https://www.semanticscholar.org/product/api#api-key para evitar límites de tasa. Las solicitudes no autenticadas funcionan hasta que se agota la cuota. |
Los nombres de variables de entorno no distinguen entre mayúsculas y minúsculas a través de la configuración de Pydantic. --storage-path es una opción de línea de comandos en lugar de una configuración de entorno.
Seguridad
El texto de los artículos y el LaTeX son contenido externo no confiable. Un artículo puede contener texto diseñado para manipular a un cliente de IA para que ignore sus instrucciones o llame a herramientas no relacionadas.
- No trates las instrucciones encontradas dentro de un artículo como comandos confiables.
- Usa controles de aprobación del cliente para herramientas de shell, navegador, sistema de archivos y mensajería.
- Revisa los resúmenes generados antes de tomar acciones externas.
- Mantén HTTP transmisible privado a menos que se proporcione autenticación en el upstream.
Consulta SECURITY.md para la política de informes y los detalles de amenazas.
Desarrollo
git clone https://github.com/blazickjp/arxiv-mcp-server.git
cd arxiv-mcp-server
uv sync --extra test --extra dev
uv run pytest
uv run black --check .
Ejecuta el checkout de desarrollo desde un cliente MCP con:
{
"mcpServers": {
"arxiv-dev": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/arxiv-mcp-server",
"run",
"arxiv-mcp-server"
]
}
}
}
Las contribuciones son bienvenidas. Lee CONTRIBUTING.md antes de abrir una solicitud de extracción y usa GitHub Issues para errores reproducibles o propuestas de funciones acotadas.
Licencia
Licencia Apache 2.0. Consulta LICENSE.