Skip to main content
Glama
cyanheads

arxiv-mcp-server

by cyanheads

Version License Docker MCP SDK npm TypeScript

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

Servidor público alojado: https://arxiv.caseyjhand.com/mcp


Herramientas

Cuatro herramientas para buscar y leer artículos de arXiv:

Tool Name

Description

arxiv_search

Buscar artículos de arXiv por consulta con filtros de categoría y ordenación.

arxiv_get_metadata

Obtener metadatos completos de uno o más artículos de arXiv por ID.

arxiv_read_paper

Obtener el contenido de texto completo de un artículo de arXiv desde su renderizado HTML, o desde el PDF cuando no existe renderizado.

arxiv_list_categories

Listar la taxonomía de categorías de arXiv, opcionalmente filtrada por grupo.

Busca artículos mediante consultas de texto libre con prefijos de campo y operadores booleanos.

  • Prefijos de campo: ti: (título), au: (autor), abs: (resumen), cat: (categoría), all: (todos los campos)

  • Operadores booleanos: AND, OR, ANDNOT

  • Filtro de categoría opcional, ordenación (relevancia, fecha de envío, fecha de actualización) y paginación

  • La categoría acepta un código hoja (cs.CL) o un archivo completo (astro-ph, cs, math) — un archivo sin subdividir cubre sus clases temáticas más los artículos planos heredados registrados antes de su subdivisión

  • submitted_from / submitted_to acotan la fecha de envío (inclusive, UTC YYYY-MM-DD). Las ventanas consecutivas cubren las coincidencias sin dejar huecos — un artículo enviado exactamente en el límite de medianoche aparece en ambas, así que deduplica por ID — que es como se llega a resultados más allá del límite de paginación de 10 000

  • Devuelve la consulta tal como se buscó realmente, con todos los filtros incorporados — reproducirla genera el mismo conjunto de resultados

  • Devuelve hasta 50 resultados por solicitud con metadatos completos, incluido el resumen


arxiv_get_metadata

Obtén metadatos completos de uno o más artículos por ID de arXiv conocido.

  • Obtención por lotes de hasta 10 artículos en una sola solicitud

  • Acepta IDs versionados (2401.12345v2) y no versionados (2401.12345)

  • Formato de ID heredado compatible (hep-th/9901001)

  • Informa de los IDs no encontrados por separado de los artículos encontrados


arxiv_read_paper

Lee el cuerpo completo de un artículo de arXiv.

  • Prueba primero el HTML nativo de arXiv, luego ar5iv y después el texto extraído del PDF — el campo source indica cuál respondió

  • Elimina la cabecera HTML y el material repetitivo, y convierte MathML a LaTeX delimitado por dólares ($…$ en línea, $$…$$ en bloque) para que el presupuesto de caracteres se destine al contenido del artículo

  • Devuelve HTML sin procesar — sin análisis ni extracción; el LLM interpreta el contenido directamente. Los cuerpos extraídos del PDF son texto plano: la prosa es fiable, pero las matemáticas, las tablas y la estructura de encabezados se aplanan

  • max_characters tiene un valor predeterminado de 100 000; pasa null para obtener el artículo completo en una sola llamada. El HTML sin procesar puede ocupar de 500 KB a más de 3 MB en artículos con muchas matemáticas, más de lo que la mayoría de los clientes aceptan en un solo resultado de herramienta — pagina con start en su lugar


arxiv_list_categories

Lista los códigos y nombres de categorías de arXiv para descubrimiento.

  • ~155 categorías en 8 grupos de nivel superior (cs, math, physics, q-bio, q-fin, stat, eess, econ)

  • Filtro de grupo opcional para acotar los resultados

  • Datos estáticos — siempre tiene éxito

Related MCP server: Research Server

Recursos

URI Pattern

Description

arxiv://paper/{paperId}

Metadatos del artículo por ID de arXiv. Codifica en porcentaje la barra de un ID heredado — arxiv://paper/hep-th%2F9901001.

arxiv://categories

Taxonomía completa de categorías de arXiv.

Características

Construido sobre @cyanheads/mcp-ts-core:

  • Definiciones declarativas de herramientas — un solo archivo por herramienta; el framework gestiona el registro y la validación

  • Manejo unificado de errores en todas las herramientas

  • Autenticación conectable (none, jwt, oauth)

  • Registro estructurado con trazado OpenTelemetry opcional

  • Se ejecuta localmente (stdio/HTTP) desde el mismo código base

Específico de arXiv:

  • Solo lectura, sin autenticación necesaria — la API de arXiv es gratuita y los metadatos son CC0

  • Cola de solicitudes con límite de velocidad que aplica el retardo de rastreo de 3 segundos de arXiv

  • Enfriamiento adaptativo ante límite de velocidad (5s → 10s → 20s → 30s), respeta Retry-After

  • Reintentos con retroceso exponencial para fallos transitorios

  • Cadena de respaldo de contenido: HTML nativo de arXiv → ar5iv → extracción de texto del PDF (ambos renderizados HTML usan LaTeXML, por lo que tienden a fallar juntos; el PDF es el artefacto que todo artículo tiene, y también cubre una caída de ar5iv en lugar de dejar fallar la lectura)

  • Taxonomía completa de categorías de arXiv incluida como datos estáticos

  • Espejo local opcional de metadatos OAI-PMH (SQLite + FTS5) — opcional, elimina la exposición al límite de velocidad para arxiv_search y arxiv_get_metadata. Ver Opcional: Espejo local.

Primeros pasos

Instancia pública alojada

Hay una instancia pública disponible en https://arxiv.caseyjhand.com/mcp — no requiere instalación. Apunta cualquier cliente MCP a ella mediante Streamable HTTP:

{
  "mcpServers": {
    "arxiv-mcp-server": {
      "type": "streamable-http",
      "url": "https://arxiv.caseyjhand.com/mcp"
    }
  }
}

Autohospedado / Local

Añádelo a la configuración de tu cliente MCP (p. ej., claude_desktop_config.json):

{
  "mcpServers": {
    "arxiv-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/arxiv-mcp-server@latest"]
    }
  }
}

Requisitos previos

Instalación

  1. Clona el repositorio:

git clone https://github.com/cyanheads/arxiv-mcp-server.git
  1. Entra en el directorio:

cd arxiv-mcp-server
  1. Instala las dependencias:

bun install

Configuración

Toda la configuración es opcional — el servidor funciona de serie con valores predeterminados sensatos.

Variable

Description

Default

ARXIV_API_BASE_URL

URL base de la API de arXiv.

https://export.arxiv.org/api

ARXIV_REQUEST_DELAY_MS

Retardo mínimo entre solicitudes a la API de arXiv (ms).

3000

ARXIV_CONTENT_TIMEOUT_MS

Tiempo de espera para las descargas del cuerpo del artículo — renderizados HTML y descargas de PDF (ms).

30000

ARXIV_API_TIMEOUT_MS

Tiempo de espera para las solicitudes de búsqueda/metadatos de la API (ms).

15000

ARXIV_MIRROR_ENABLED

Habilita el espejo local de metadatos OAI-PMH para búsqueda y metadatos.

false

ARXIV_MIRROR_PATH

Ruta de SQLite para el espejo.

./data/arxiv-mirror.db

ARXIV_MIRROR_REFRESH_CRON

Expresión cron UTC para la actualización diaria en proceso (solo modo HTTP).

unset

ARXIV_MIRROR_FALLBACK_LIVE

Reintentar con la API en vivo si falla la búsqueda local por ID.

true

ARXIV_MIRROR_RECENT_DAYS_LIVE

Enrutar las consultas descendentes sortBy=submitted dentro de esta ventana a la API en vivo.

2

ARXIV_MIRROR_OAI_BASE_URL

URL base del endpoint OAI-PMH de arXiv.

https://oaipmh.arxiv.org/oai

ARXIV_MIRROR_OAI_REQUEST_DELAY_MS

Retardo mínimo entre solicitudes OAI-PMH (ms).

3000

ARXIV_MIRROR_REFRESH_TIMEOUT_MS

Presupuesto de cancelación para un subproceso de actualización programada (ms).

7200000

MCP_TRANSPORT_TYPE

Transporte: stdio o http.

stdio

MCP_HTTP_PORT

Puerto para el servidor HTTP.

3010

MCP_AUTH_MODE

Modo de autenticación: none, jwt u oauth.

none

MCP_LOG_LEVEL

Nivel de registro (RFC 5424).

info

Ejecutar el servidor

Desarrollo local

  • Compilar y ejecutar:

    bun run build
    bun run start:http   # or start:stdio
  • Ejecutar comprobaciones y pruebas:

    bun run devcheck     # Lint, format, typecheck, audit
    bun run test         # Vitest

Opcional: Espejo local

Para implementaciones autohospedadas detrás de una única IP de salida, el retardo de rastreo de ~3 segundos por IP de arXiv serializa a los usuarios concurrentes. Un espejo local opcional elimina la exposición al límite de velocidad para arxiv_search y arxiv_get_metadata al servir desde un almacén SQLite + FTS5 recopilado mediante OAI-PMH. arxiv_read_paper sigue usando la API en vivo — la recopilación de contenido completo está prohibida por la política de datos de arXiv.

Deshabilitado por defecto. Para habilitarlo:

# 1. Cold-start harvest (~4.4h sequential, resumable from checkpoint). One-time per installation.
bun run mirror:init

# 2. Enable the mirror.
export ARXIV_MIRROR_ENABLED=true

# 3. Start the server — reads switch to the mirror once the harvest completes.
bun run start:http

Actualización incremental diaria (delta pequeña; la duración depende del ritmo de paginación OAI-PMH de arXiv) mediante:

bun run mirror:refresh   # wire to cron / systemd timer / launchd, OR
                         # set ARXIV_MIRROR_REFRESH_CRON to schedule it in HTTP mode (spawned as a child process)
bun run mirror:verify    # schema version + PRAGMA integrity_check / quick_check

Schema upgrades. El espejo registra una versión de esquema y se migra a sí mismo en el sitio la primera vez que un servidor más reciente lo abre: nunca una re-cosecha, y nunca un paso de operador separado. La actualización que añadió comment y journal_ref al índice de texto completo (#37) reconstruye ese índice a partir de las filas ya almacenadas, de modo que las búsquedas co: y jr: se resuelven contra un espejo cosechado antes de esa actualización. La reconstrucción se ejecuta al inicio, antes de que el almacén responda a su primera lectura, y registra líneas de progreso mirror migration v2→v3 (fts rebuild) a lo largo de todo el proceso; en un espejo de corpus completo, espera que el primer arranque después de la actualización tarde notablemente más de lo habitual. Una reconstrucción interrumpida se repite en la siguiente apertura en lugar de dejarse a medio aplicar. bun run mirror:verify imprime la versión de esquema que lleva el archivo y sale con un código distinto de cero si una migración nunca se completó.

Behavior notes. Divergencia de clasificación: FTS5 BM25 difiere de la clasificación interna de arXiv, por lo que sortBy=relevance contra el espejo devuelve un top-K diferente al de la API en vivo. Las consultas ordenadas por submitted de forma descendente dentro de los días ARXIV_MIRROR_RECENT_DAYS_LIVE se enrutan a la API en vivo para cubrir la brecha de la actualización nocturna. Resiliencia de la actualización: después de que se complete la cosecha inicial en frío, una actualización diaria en curso o fallida sigue sirviendo el conjunto de datos existente desde el espejo; arxiv_search y arxiv_get_metadata no recurren a la API en vivo durante la ventana de actualización (#21). La actualización programada en modo HTTP se ejecuta en un proceso hijo, por lo que las escrituras síncronas de SQLite de la cosecha nunca bloquean el bucle de eventos de las solicitudes: la búsqueda y los metadatos siguen respondiendo con fluidez en todo momento (#22). El espejo almacena solo la última versión; las lecturas por versión continúan usando la API en vivo. Consulta #12 para el diseño completo.

Docker

docker build -t arxiv-mcp-server .
docker run -p 3010:3010 arxiv-mcp-server

Estructura del Proyecto

Directorio

Propósito

src/mcp-server/tools/definitions/

Definiciones de herramientas (*.tool.ts).

src/mcp-server/resources/definitions/

Definiciones de recursos (*.resource.ts).

src/services/arxiv/

ArxivService — cliente de la API en vivo de arXiv (búsqueda, metadatos, HTML).

src/services/arxiv/mirror/

Espejo OAI-PMH opcional — cosechador, almacén SQLite + FTS5, traductor de consultas, ejecutor.

src/config/

Análisis y validación de variables de entorno con Zod.

scripts/arxiv-mirror-*.ts

Scripts del ciclo de vida del espejo (init, refresh, verify).

tests/

Pruebas unitarias y de integración.

docs/

Documento de diseño y estructura de directorios.

Guía de Desarrollo

Consulta CLAUDE.md para las pautas de desarrollo y las reglas arquitectónicas. La versión corta:

  • Los manejadores lanzan excepciones, el framework las captura: no hay try/catch en la lógica de las herramientas.

  • Usa ctx.log para el registro específico del dominio.

  • La limitación de tasa la gestiona ArxivService — no añadas retardos por herramienta.

  • La API de arXiv devuelve HTTP 200 para todo: comprueba el content-type y el cuerpo de la respuesta.

Contribuciones

Las issues y las pull requests son bienvenidas. Ejecuta las comprobaciones antes de enviar:

bun run devcheck
bun test

Licencia

Apache-2.0 — consulta LICENSE para más detalles.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    Not graded
    maintenance
    Enables AI assistants to search and retrieve academic papers from arXiv through MCP tools, supporting search by various criteria, detailed paper information, category browsing, and PDF content extraction.
    4
    129
    2
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching arXiv, fetching metadata, reading papers as section-aware Markdown, listing recent papers, and downloading PDFs via five MCP tools.
    23
    2
    MIT

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/cyanheads/arxiv-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server