Scientific Paper Harvester

Recolecta artículos científicos de arXiv y OpenAlex, proporcionando acceso en tiempo real a metadatos y texto completo.

Documentación

Servidor MCP de Scientific Paper Harvester

Un servidor integral del Model Context Protocol (MCP) que proporciona a los LLM acceso en tiempo real a artículos científicos de 6 fuentes académicas principales: arXiv, OpenAlex, PMC (PubMed Central), Europe PMC, bioRxiv/medRxiv y CORE.

🚀 Características

Cobertura Integral de Fuentes

  • arXiv: Preprints y artículos de informática, física y matemáticas
  • OpenAlex: Catálogo abierto de artículos académicos con datos de citas
  • PMC: Literatura biomédica y de ciencias de la vida de PubMed Central
  • Europe PMC: Base de datos europea de literatura de ciencias de la vida
  • bioRxiv/medRxiv: Servidores de preprints de biología y medicina
  • CORE: La mayor colección mundial de artículos de investigación de acceso abierto

Capacidades Avanzadas

  • Obtención de Artículos: Obtén los artículos más recientes de cualquier fuente por categoría/concepto
  • Búsqueda de Artículos: Busca artículos por título, resumen, autor o texto completo en 4 fuentes principales
  • Extracción de Texto Completo: Extrae el contenido textual completo con estrategias inteligentes de respaldo
  • Análisis de Citas: Encuentra los artículos más citados de OpenAlex desde una fecha específica
  • Consulta de Artículos: Recupera metadatos completos de artículos específicos por ID
  • Descubrimiento de Categorías: Explora las categorías disponibles de todas las fuentes
  • Limitación de Velocidad Inteligente: Uso respetuoso de la API con limitación por fuente
  • Resolución de DOI: Resolvedor avanzado de DOI con respaldo Unpaywall → Crossref → Semantic Scholar
  • Interfaz Dual: Acceso tanto por protocolo MCP como por CLI
  • TypeScript: Seguridad total de tipos con módulos ESM

📊 Estadísticas de Cobertura

  • Total de Fuentes: 6 bases de datos académicas
  • Cobertura de Categorías: Más de 100 categorías en todas las disciplinas
  • Acceso a Artículos: Más de 200 millones de artículos con extracción inteligente de texto
  • Éxito de Extracción de Texto: >90 % para los tipos de artículo compatibles
  • Tiempo de Respuesta: Promedio inferior a 15 segundos para la obtención de artículos

🛠 Instalación

npm install
npm run build

📋 Configuración del Cliente MCP

Para usar este servidor con un cliente MCP (como Claude Desktop), añade lo siguiente a la configuración de tu cliente MCP:

Para el paquete publicado (disponible en npm):

Opción 1: Usando npx (recomendado para herramientas de IA como Claude)

{
  "mcpServers": {
    "scientific-papers": {
      "command": "npx",
      "args": [
        "-y",
        "@futurelab-studio/latest-science-mcp@latest"
      ]
    }
  }
}

Opción 2: Instalación global

npm install -g @futurelab-studio/latest-science-mcp

Luego configura:

{
  "mcpServers": {
    "scientific-papers": {
      "command": "latest-science-mcp"
    }
  }
}

📖 Uso

Interfaz CLI

Listar Categorías

# List arXiv categories
node dist/cli.js list-categories --source=arxiv

# List OpenAlex concepts
node dist/cli.js list-categories --source=openalex

# List PMC biomedical categories
node dist/cli.js list-categories --source=pmc

# List Europe PMC life science categories
node dist/cli.js list-categories --source=europepmc

# List bioRxiv/medRxiv categories (includes both servers)
node dist/cli.js list-categories --source=biorxiv

# List CORE academic categories
node dist/cli.js list-categories --source=core

Obtener Artículos Recientes

# Get latest AI papers from arXiv
node dist/cli.js fetch-latest --source=arxiv --category=cs.AI --count=10

# Get latest biology papers from bioRxiv
node dist/cli.js fetch-latest --source=biorxiv --category="biorxiv:biology" --count=5

# Get latest immunology papers from PMC
node dist/cli.js fetch-latest --source=pmc --category=immunology --count=3

# Get latest papers from CORE by subject
node dist/cli.js fetch-latest --source=core --category=computer_science --count=5

# Search by concept name (OpenAlex)
node dist/cli.js fetch-latest --source=openalex --category="machine learning" --count=3

Obtener los Artículos Más Citados

# Get top 20 cited papers in machine learning since 2024
node dist/cli.js fetch-top-cited --concept="machine learning" --since=2024-01-01 --count=20

# Get top cited papers by concept ID
node dist/cli.js fetch-top-cited --concept=C41008148 --since=2023-06-01 --count=10

Buscar Artículos

# Search by keywords across all fields
node dist/cli.js search-papers --source=arxiv --query="machine learning" --count=10

# Search by paper title
node dist/cli.js search-papers --source=openalex --query="neural networks" --field=title --count=5

# Search by author name
node dist/cli.js search-papers --source=europepmc --query="John Smith" --field=author --count=10

# Search full-text content sorted by citations
node dist/cli.js search-papers --source=core --query="climate change" --field=fulltext --sortBy=citations --count=20

Obtener el Contenido de un Artículo Específico

# Get arXiv paper by ID
node dist/cli.js fetch-content --source=arxiv --id=2401.12345

# Get bioRxiv paper by DOI
node dist/cli.js fetch-content --source=biorxiv --id="10.1101/2021.01.01.425001"

# Get PMC paper by ID
node dist/cli.js fetch-content --source=pmc --id=PMC8245678

# Get CORE paper by ID
node dist/cli.js fetch-content --source=core --id=12345678

# Show text content with preview
node dist/cli.js fetch-content --source=arxiv --id=2401.12345 --show-text --text-preview=500

🔧 Herramientas Disponibles

list_categories

Lista las categorías/conceptos disponibles de cualquier fuente de datos.

Parámetros:

  • source: "arxiv" | "openalex" | "pmc" | "europepmc" | "biorxiv" | "core"

Devuelve:

  • Un array de objetos de categoría con id, name y description opcional

Ejemplos:

{
  "name": "list_categories",
  "arguments": {
    "source": "biorxiv"
  }
}

fetch_latest

Obtiene los artículos más recientes de cualquier fuente para una categoría determinada con solo metadatos (sin extracción de texto).

Parámetros:

  • source: "arxiv" | "openalex" | "pmc" | "europepmc" | "biorxiv" | "core"
  • category: ID de categoría o nombre de concepto (varía según la fuente)
  • count: Número de artículos a obtener (predeterminado: 50, máximo: 200)

Ejemplos de Categorías por Fuente:

  • arXiv: "cs.AI", "physics.gen-ph", "math.CO"
  • OpenAlex: "artificial intelligence", "machine learning", "C41008148"
  • PMC: "immunology", "genetics", "neuroscience"
  • Europe PMC: "biology", "medicine", "cancer"
  • bioRxiv/medRxiv: "biorxiv:neuroscience", "medrxiv:psychiatry"
  • CORE: "computer_science", "mathematics", "physics"

Devuelve:

  • Un array de objetos de artículo con metadatos (id, título, autores, fecha, pdf_url)
  • Campo de texto: Cadena vacía (text: "") — usa fetch_content para el texto completo

fetch_top_cited

Obtiene los artículos más citados de OpenAlex para un concepto determinado desde una fecha específica.

Parámetros:

  • concept: Nombre del concepto o ID de concepto de OpenAlex
  • since: Fecha de inicio en formato YYYY-MM-DD
  • count: Número de artículos a obtener (predeterminado: 50, máximo: 200)

search_papers

Busca artículos en múltiples fuentes académicas con opciones de búsqueda específicas por campo y de ordenamiento.

Parámetros:

  • source: "arxiv" | "openalex" | "europepmc" | "core"
  • query: Cadena de consulta de búsqueda (máximo 1500 caracteres)
  • field: "all" | "title" | "abstract" | "author" | "fulltext" (predeterminado: "all")
  • count: Número de resultados a devolver (predeterminado: 50, máximo: 200)
  • sortBy: "relevance" | "date" | "citations" (predeterminado: "relevance")

Capacidades de Búsqueda por Fuente:

  • arXiv: Búsqueda por título, resumen, autor y general con operadores booleanos
  • OpenAlex: Búsqueda avanzada con puntuación de relevancia y ordenamiento por citas
  • Europe PMC: Literatura biomédica con términos MeSH y búsqueda de texto completo
  • CORE: Artículos académicos globales con lenguaje de consulta avanzado

Ejemplos de Consultas:

  • Palabras clave: "machine learning", "climate change"
  • Frases: "artificial intelligence" (usa comillas para frases exactas)
  • Booleanas: "deep learning AND neural networks" (arXiv admite esto)
  • Autores: "John Smith", "Smith J"

Devuelve:

  • Un array de objetos de artículo con metadatos (id, título, autores, fecha, pdf_url)
  • Campo de texto: Cadena vacía (text: "") — usa fetch_content para el texto completo

fetch_content

Obtiene los metadatos completos y el contenido de texto de un artículo específico por ID con extracción completa de texto.

Parámetros:

  • source: Cualquiera de las 6 fuentes compatibles
  • id: ID del artículo (el formato varía según la fuente)

Formatos de ID por Fuente:

  • arXiv: "2401.12345", "cs/0601001", "1234.5678v2"
  • OpenAlex: "W2741809807" o ID numérico 2741809807
  • PMC: "PMC8245678" o "12345678"
  • Europe PMC: "PMC8245678", "12345678" o DOI
  • bioRxiv/medRxiv: "10.1101/2021.01.01.425001" o "2021.01.01.425001"
  • CORE: ID numérico como "12345678"

📄 Formato de Metadatos de Artículos

Todas las herramientas devuelven objetos de artículo con la siguiente estructura:

{
  id: string;                    // Paper ID
  title: string;                 // Paper title
  authors: string[];             // List of author names
  date: string;                  // Publication date (ISO format)
  pdf_url?: string;              // PDF URL (if available)
  text: string;                  // Extracted full text content
  textTruncated?: boolean;       // Warning: text was truncated due to size limits
  textExtractionFailed?: boolean; // Warning: text extraction failed
}

🧠 Extracción Avanzada de Texto

Estrategia de Múltiples Fuentes

Cada fuente tiene enfoques especializados de extracción de texto:

  • arXiv: HTML desde arxiv.org/html con respaldo de ar5iv.labs.arxiv.org
  • OpenAlex: Fuentes HTML con cadena de respaldo de resolvedor de DOI
  • PMC: API de E-utilities con extracción XML/HTML
  • Europe PMC: API REST con múltiples estrategias de URL
  • bioRxiv/medRxiv: Extracción directa de HTML con respaldo de resumen
  • CORE: PDF/HTML con respaldo de URL de origen

Cadena de Resolución de DOI

Resolvedor avanzado de DOI con múltiples estrategias de respaldo:

  1. Unpaywall → Fuentes gratuitas de texto completo
  2. Crossref → Metadatos y enlaces del editor
  3. Semantic Scholar Academic Graph → Acceso alternativo

Rendimiento y Fiabilidad

  • Éxito de Extracción de Texto: >90 % para artículos con HTML disponible
  • Degradación Gradual: Siempre devuelve metadatos incluso si falla la extracción de texto
  • Gestión de Tamaño: Límite de texto de 6 MB con truncamiento inteligente
  • Caché: Caché LRU de 24 horas para la resolución de DOI

🔄 Limitación de Velocidad

Uso respetuoso de la API con limitación de velocidad por fuente:

  • arXiv: 5 solicitudes por minuto
  • OpenAlex: 10 solicitudes por minuto
  • PMC: 3 solicitudes por segundo
  • Europe PMC: 10 solicitudes por minuto
  • bioRxiv/medRxiv: 5 solicitudes por minuto
  • CORE: 10 solicitudes por minuto (público), mayor con clave de API

Configuración de la API de CORE

Para un acceso mejorado a CORE, define la variable de entorno:

export CORE_API_KEY="your-api-key"

🧪 Pruebas

Ejecutar el Conjunto de Pruebas

# Run all tests
npm test

# Run integration tests
npm run test -- tests/integration

# Run end-to-end workflow tests
npm run test -- tests/e2e

# Run performance benchmarks
npm run test -- tests/integration/performance.test.ts

Cobertura de Pruebas

  • Pruebas de Integración: Las 6 fuentes probadas de extremo a extremo
  • Pruebas de Rendimiento: Evaluaciones comparativas de tiempo de respuesta y rendimiento
  • Pruebas de Flujo de Trabajo: Escenarios de investigación reales en múltiples fuentes
  • Pruebas Unitarias: Componentes principales y casos límite

🏗 Arquitectura

Sistema Modular de Controladores

  • Separación limpia entre fuentes
  • Interfaz consistente en todos los controladores
  • Extracción de texto especializada por fuente

Características Avanzadas

  • Resolución de DOI: Cadena de respaldo de múltiples proveedores
  • Limitación de Velocidad: Algoritmo de cubo de fichas por fuente
  • Procesamiento de Texto: Limpieza y normalización de HTML
  • Manejo de Errores: Respuestas estructuradas con sugerencias accionables
  • Caché: Almacenamiento en caché inteligente para la resolución de DOI

Pila Tecnológica

  • TypeScript + ESM: JavaScript moderno con seguridad total de tipos
  • Diseño Modular: Separación limpia de responsabilidades
  • Degradación Gradual: Siempre funcional incluso con fallos parciales
  • Gestión del Tamaño de Respuesta: Truncamiento automático y advertencias

📊 Comparación de Fuentes

FuenteArtículosDisciplinasTexto CompletoDatos de CitasPreprintsBúsqueda
arXiv2,3 M+STEMHTML ✓Limitado✓✓✓
OpenAlex200 M+TodasVariable✓✓✓✓✓✓
PMC7 M+BiomédicaXML/HTML ✓LimitadoLimitada
Europe PMC40 M+Ciencias de la VidaHTML ✓Limitado✓✓✓
bioRxiv/medRxiv500 K+Bio/MédicaHTML ✓Limitado✓✓✓Limitada
CORE200 M+TodasPDF/HTML ✓Limitado✓✓✓

🔧 Desarrollo

Compilar

npm run build

Probar Fuentes Individuales

# Test specific sources
node dist/cli.js list-categories --source=arxiv
node dist/cli.js fetch-latest --source=biorxiv --category="biorxiv:biology" --count=3
node dist/cli.js fetch-content --source=core --id=12345678

# Test search functionality
node dist/cli.js search-papers --source=arxiv --query="artificial intelligence" --count=5
node dist/cli.js search-papers --source=openalex --query="quantum computing" --field=title --count=3

Pruebas de Rendimiento

# Run performance benchmarks
npm run test -- tests/integration/performance.test.ts

# Test memory usage
npm run test -- --reporter=verbose

🚨 Manejo de Errores

Manejo integral de errores para todas las fuentes:

  • IDs de artículo no válidos con sugerencias de formato
  • Limitación de velocidad con información de reintento
  • Tiempos de espera de la API y errores del servidor
  • Autenticación faltante (clave de API de CORE)
  • Problemas de conectividad de red
  • Fallos de extracción de texto con estrategias de respaldo

🔍 Solución de Problemas

Problemas Comunes

  • Limitación de velocidad: Reintento automático con retroceso exponencial
  • Artículos faltantes: Prueba fuentes alternativas para el mismo contenido
  • Fallos de extracción de texto: Respaldo al resumen o a los metadatos
  • Límites de la API de CORE: Define la variable de entorno CORE_API_KEY

Optimización del Rendimiento

  • Usa parámetros count apropiados (más pequeños para respuestas más rápidas)
  • Almacena los resultados en caché cuando sea posible
  • Usa fetch_latest para descubrimiento y fetch_content para lectura detallada

📝 Licencia

MIT


¿Listo para explorar el conocimiento científico mundial? Comienza con cualquiera de las 6 fuentes y descubre artículos de todas las disciplinas académicas. 🔬📚