arXiv MCP Server

Busca y analiza artículos académicos en arXiv.

Documentación

arxiv-mcp-server

PyPI Downloads License MCP Registry Tests GitHub stars

Install in VS Code Install MCP Server Add to Kiro Claude Code OpenAI Codex Hermes Agent

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

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

Install in VS Code Install MCP Server Add to 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:

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ónManifiestoMarketplace
Claude Code.claude-plugin/plugin.json.claude-plugin/marketplace.json
OpenAI Codex / ChatGPT Work.codex-plugin/plugin.json.agents/plugins/marketplace.json
Kiro PowerPOWER.mdmcp.json
Lanzamiento MCP compartido.mcp.json para Claude y clientes locales del repositorio; .codex-mcp.json para plugins de Codexuvx arxiv-mcp-server
Flujo de trabajo de investigación compartidoskills/arxiv-mcp-server/SKILL.mdInstalado 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.

HerramientaPropósitoNotas
search_papersBuscar en arXiv por consulta, categoría, fecha y orden de clasificaciónPredeterminado ≤5 resultados compactos (abstract_mode=snippet); API remota de arXiv
get_abstractObtener metadatos y un resumen por ID de arXivNo descarga el artículo
download_paperDescargar y convertir un artículo a Markdown localHTML primero; respaldo PDF usa [pdf]; force=true vuelve a obtener; contenido limitado a 12,000 caracteres por defecto
list_papersListar artículos almacenados localmenteDevuelve id, título, autores, publicado; compact solo para IDs
read_paperLeer contenido de artículos almacenados localmenteLimitado a 12,000 caracteres por defecto; admite start/max_chars/return_full_text
get_paper_outlineEsquema de encabezados Markdown paginadoIDs de sección jerárquicos estables
read_paper_sectionLeer una sección Markdown acotadaPor ID de esquema o título único
search_paper_textBúsqueda de pasajes acotada en un artículoDesplazamientos de fuente; no requiere Torch
get_paper_latexRecuperar LaTeX acotado enviado por el autorArchivo fuente remoto de arXiv
list_paper_latex_sectionsDevolver un esquema LaTeX paginadoAdmite start y max_sections
get_paper_latex_sectionLeer una sección LaTeX acotadaSeleccionar por ID de esquema o título exacto
citation_graphObtener referencias y artículos que citanAPI remota de Semantic Scholar (1 llamada por artículo, en caché en disco); clave API gratuita opcional mejora la confiabilidad
export_citationsExportar BibTeX para uno o más IDs de arXivMetadatos autoritativos de arXiv
watch_topicGuardar o actualizar un seguimiento de tema de arXivAlmacenado localmente; omita categories para conservar al actualizar, categories: [] para borrar
list_watchesListar seguimientos de temas guardadosSolo lectura; no avanza last_checked
check_alertsVerificar seguimientos guardados para nuevos artículosDevuelve artículos desde la última verificación
unwatch_topicEliminar un seguimiento de tema guardadoCoincidencia exacta de tema; no encontrado si falta
semantic_searchBuscar artículos descargados por similitud semánticaRequiere [pro]
reindexReconstruir el índice semántico localRequiere [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" con categories: ["cs.LG", "cs.AI"]
  • au:"Hinton" AND "deep learning" con categories: ["cs.LG"]
  • "multi-agent" ANDNOT "survey" con categories: ["cs.MA"]
  • abs:"transformer" AND ti:"attention" con categories: ["cs.CL"]

Fechas y ordenamiento

  • Las fechas usan YYYY-MM-DD (date_from / date_to)
  • El sort_by predeterminado es relevance; use date para 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_results predeterminado 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) o none (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_start y abstract_mode
  • Pase start=next_start con el mismo abstract_mode para 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.

NecesidadLlamada
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.

PromptArgumentos requeridosPropósito
research-discoverytopicMapear terminología, búsquedas, artículos, clústeres de investigación y una ruta de lectura
deep-paper-analysispaper_idAnalizar un artículo en profundidad
summarize_paperpaper_idResumir métodos, resultados y limitaciones
compare_paperspaper_idsComparar múltiples artículos
literature_reviewtopicSintetizar un tema y un conjunto opcional de artículos
literature-synthesispaper_idsSintetizar temas, métodos, cronologías o brechas entre artículos
research-questionpaper_ids, topicFormular 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ónValor predeterminadoPropósito
--storage-path~/.arxiv-mcp-server/papersAlmacenamiento de artículos, caché de fuentes, alertas e índices
MAX_RESULTS50Límite del lado del servidor para conteos de resultados
REQUEST_TIMEOUT60Tiempo de espera de descarga de respaldo de PDF en segundos
TRANSPORTstdiostdio, http o streamable-http
HOST127.0.0.1Host de vinculación HTTP
PORT8000Puerto de vinculación HTTP
ALLOWED_HOSTSvacíoValores adicionales aceptados de Host HTTP
ALLOWED_ORIGINSvacíoValores adicionales aceptados de Origin HTTP
SEMANTIC_SCHOLAR_API_KEYvacíoClave 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.