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,nameydescriptionopcional
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: "") — usafetch_contentpara 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 OpenAlexsince: Fecha de inicio en formato YYYY-MM-DDcount: 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: "") — usafetch_contentpara 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 compatiblesid: 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érico2741809807 - 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/htmlcon respaldo dear5iv.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:
- Unpaywall → Fuentes gratuitas de texto completo
- Crossref → Metadatos y enlaces del editor
- 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
| Fuente | Artículos | Disciplinas | Texto Completo | Datos de Citas | Preprints | Búsqueda |
|---|---|---|---|---|---|---|
| arXiv | 2,3 M+ | STEM | HTML ✓ | Limitado | ✓ | ✓✓✓ |
| OpenAlex | 200 M+ | Todas | Variable | ✓✓✓ | ✓ | ✓✓✓ |
| PMC | 7 M+ | Biomédica | XML/HTML ✓ | Limitado | ✗ | Limitada |
| Europe PMC | 40 M+ | Ciencias de la Vida | HTML ✓ | Limitado | ✓ | ✓✓✓ |
| bioRxiv/medRxiv | 500 K+ | Bio/Médica | HTML ✓ | Limitado | ✓✓✓ | Limitada |
| CORE | 200 M+ | Todas | PDF/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
countapropiados (más pequeños para respuestas más rápidas) - Almacena los resultados en caché cuando sea posible
- Usa
fetch_latestpara descubrimiento yfetch_contentpara 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. 🔬📚