Paper Search MCP
Buscar y descargar artículos académicos de
Documentación
Paper Search MCP
Un servidor de Model Context Protocol (MCP) para buscar y descargar artículos académicos de múltiples fuentes. El proyecto sigue una estrategia de prioridad gratuita: prioriza fuentes de datos abiertas y públicas, admite claves API opcionales cuando mejoran la estabilidad o la cobertura, y mantiene conectores específicos por fuente extensibles para usuarios avanzados.
Tabla de Contenidos
- Descripción General
- Principios del Proyecto
- Características
- Estrategia de Fuentes
- Aviso sobre Sci-Hub
- Instalación
- Contribuciones
- Demo
- Historial de Estrellas
- Licencia
- Pendientes
Descripción General
paper-search-mcp es una herramienta basada en Python para buscar y descargar artículos académicos de diversas plataformas. Proporciona herramientas para buscar artículos, descargar PDFs y extraer texto, lo que lo hace ideal para investigadores y flujos de trabajo impulsados por IA. Puede usarse como servidor MCP (para Claude Desktop y otros clientes MCP) o como skill de Claude Code con interfaz CLI.
Principios del Proyecto
- Prioridad Gratuita: Las fuentes públicas y abiertas son la hoja de ruta predeterminada. Las fuentes de pago o restringidas no son la dirección central de este proyecto.
- Claves API Opcionales: Las claves API solo se admiten cuando mejoran la estabilidad, los límites de tasa o la calidad de los metadatos. El MCP debería seguir siendo utilizable sin ellas siempre que sea posible.
- Recuperación Amigable para LLM: Los resultados de búsqueda deben estar estandarizados, deduplicados y ser lo más completos posible para flujos de trabajo posteriores con LLM.
- Transparencia de Fuentes: Diferentes fuentes tienen diferentes fortalezas. El MCP debe hacer explícitas esas compensaciones en lugar de pretender que cada fuente admite recuperación de texto completo.
Características
- Arquitectura de Dos Capas:
- Capa 1 (Herramientas Unificadas):
search_papersde alto nivel para búsqueda concurrente multi-fuente y deduplicación, ydownload_with_fallbackque depende de enlaces de acceso abierto de los editores con respaldos secuenciales. - Capa 2 (Conectores de Plataforma): Conectores modulares para plataformas académicas específicas (arXiv, PubMed, bioRxiv, Semantic Scholar, etc.) equipados con extracción inteligente de DOI mediante análisis de texto con regex o campos de API.
- Capa 1 (Herramientas Unificadas):
- Soporte Multi-Fuente: Busca y descarga artículos de arXiv, PubMed, bioRxiv, medRxiv, Google Scholar, IACR ePrint Archive, Semantic Scholar, Crossref, OpenAlex, PubMed Central (PMC), CORE, Europe PMC, dblp, OpenAIRE, CiteSeerX, DOAJ, BASE, Zenodo, HAL, SSRN, Unpaywall (búsqueda por DOI) y flujos de trabajo opcionales de Sci-Hub.
- Salida Estandarizada: Los artículos se devuelven en un formato de diccionario consistente mediante la clase
Paper. - Diseño de Prioridad Gratuita: Las fuentes abiertas y públicas se priorizan antes que cualquier integración comercial o restringida opcional.
- Mejora Opcional con Clave API: Fuentes como Semantic Scholar pueden funcionar mejor con una clave API proporcionada por el usuario, pero no pretenden forzar el uso de pago.
- Flujo de Trabajo de Descubrimiento + Recuperación: Google Scholar y Crossref pueden usarse para descubrimiento y relleno de DOI, mientras que los repositorios abiertos y los enlaces de los editores se usan para la resolución legal de texto completo cuando esté disponible.
- Cadena de Respaldo con Prioridad OA:
download_with_fallbackahora sigue descarga nativa de la fuente → descubrimiento en OpenAIRE/CORE/Europe PMC/PMC → resolución de DOI en Unpaywall → Sci-Hub opcional. - Integración MCP: Compatible con clientes MCP para mejorar el contexto de LLM.
- Diseño Extensible: Añade fácilmente nuevas plataformas académicas extendiendo el módulo
academic_platforms.
Estrategia de Fuentes
El objetivo a largo plazo no es depender de un único motor de búsqueda, sino combinar múltiples fuentes gratuitas y públicas con roles claros:
- Columna vertebral de metadatos abiertos: Crossref, OpenAlex, Semantic Scholar, dblp, CiteSeerX, SSRN, Unpaywall (metadatos OA centrados en DOI).
- Fuentes específicas por disciplina: arXiv, PubMed, PubMed Central, Europe PMC, IACR.
- Fuentes de texto completo de acceso abierto: arXiv, PMC, CORE, OpenAIRE, DOAJ, BASE, Zenodo, HAL, enlaces de acceso abierto de los editores.
- Descubrimiento y recuperación de DOI: Google Scholar puede ser útil para encontrar títulos, versiones y pistas de DOI cuando otras fuentes de metadatos públicas están incompletas.
Hoja de ruta recomendada de prioridad gratuita:
- Mantener estables las fuentes públicas actuales.
- Añadir OpenAlex como fuente amplia de metadatos gratuita.
- Añadir PubMed Central y Europe PMC para un acceso más sólido a texto completo biomédico.
- Añadir CORE y OpenAIRE para recuperación de acceso abierto basada en repositorios.
- Usar Google Scholar principalmente como respaldo de descubrimiento, no como fuente canónica principal.
Matriz de Capacidades de Plataforma
Esta matriz refleja resultados verificados de integración en vivo de pruebas funcionales y de regresión de extremo a extremo en este repositorio. Las columnas muestran el nivel de capacidad más alto observado en condiciones normales.
| Plataforma | Búsqueda | Descarga | Lectura | Notas |
|---|---|---|---|---|
| arXiv | ✅ | ✅ | ✅ | API abierta; fiable |
| PubMed | ✅ | ❌ | ⚠️ solo información | API abierta; fiable |
| bioRxiv | ✅ | ✅ | ✅ | API abierta; fiable |
| medRxiv | ✅ | ✅ | ✅ | API abierta; fiable |
| Google Scholar | ⚠️ | ❌ | ❌ | Detección de bots activa; configurar PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL |
| IACR | ✅ | ✅ | ✅ | API abierta; fiable |
| Semantic Scholar | ✅ | ✅ (OA) | ✅ (OA) | Funciona sin clave (con límite de tasa); la clave mejora los límites; el rechazo de clave (403) se reintenta automáticamente sin clave |
| Crossref | ✅ | ❌ | ⚠️ solo información | API abierta; fiable |
| OpenAlex | ✅ | ❌ | ⚠️ solo información | API abierta; fiable |
| PMC | ✅ | ✅ (solo OA) | ✅ (solo OA) | Solo PDFs OA; la descarga directa puede estar bloqueada por algunos entornos proxy |
| CORE | ✅ | ✅ (depende del registro) | ✅ (depende del registro) | Se recomienda clave gratuita; el conector reintenta con retroceso y vuelve a modo sin clave en 401/403 |
| Europe PMC | ✅ | ✅ (OA) | ✅ (OA) | Solo PDFs OA; la descarga directa puede estar bloqueada por algunos entornos proxy |
| dblp | ✅ | ❌ | ⚠️ solo información | API abierta; fiable |
| OpenAIRE | ✅ | ❌ | ❌ | API abierta; reintenta 3× con perfiles de solicitud crecientes en 403 transitorios |
| CiteSeerX | ⚠️ | ✅ (depende del registro) | ⚠️ | El endpoint de API está intermitentemente no disponible / redirige al archivo web |
| DOAJ | ✅ | ⚠️ (depende de la URL) | ⚠️ (depende de la URL) | La disponibilidad de PDF varía según el artículo; la clave gratuita aumenta los límites de tasa |
| BASE | ⚠️ | ✅ (depende del registro) | ✅ (depende del registro) | El endpoint OAI-PMH requiere registro de IP institucional; devuelve vacío correctamente en caso contrario |
| Zenodo | ✅ | ✅ (depende del registro) | ✅ (depende del registro) | API abierta; fiable |
| HAL | ✅ | ✅ (depende del registro) | ✅ (depende del registro) | API abierta; fiable |
| SSRN | ⚠️ | ⚠️ mejor esfuerzo | ⚠️ mejor esfuerzo | Detección de bots 403 activa; solo PDF público |
| Unpaywall | ✅ (búsqueda por DOI) | ❌ | ❌ | Requiere PAPER_SEARCH_MCP_UNPAYWALL_EMAIL |
| Sci-Hub (opcional) | ⚠️ solo respaldo | ✅ | ❌ | Opcional; espejos inestables; responsabilidad del usuario |
| IEEE Xplore 🔑 | 🚧 esqueleto | 🚧 esqueleto | 🚧 esqueleto | Requiere PAPER_SEARCH_MCP_IEEE_API_KEY para activarse |
| ACM DL 🔑 | 🚧 esqueleto | 🚧 esqueleto | 🚧 esqueleto | Requiere PAPER_SEARCH_MCP_ACM_API_KEY para activarse |
✅ = fiable en pruebas en vivo. ⚠️ = funciona pero sujeto a inestabilidad ascendente o restricciones de acceso. ❌ = no compatible. 🔑 = requiere clave. 🚧 = solo esqueleto.
Requisitos de Credenciales y Claves API
Todas las claves son opcionales salvo que se indique. Configúralas en ~/.config/paper-search-mcp/.env (preferido) o como exportaciones de shell.
| Variable de Entorno | Proveedor | ¿Obligatoria? | Cómo obtenerla |
|---|---|---|---|
PAPER_SEARCH_MCP_UNPAYWALL_EMAIL | Unpaywall | Sí (Unpaywall deshabilitado sin ella) | Cualquier correo electrónico válido; regístrate en unpaywall.org |
PAPER_SEARCH_MCP_CORE_API_KEY | CORE | Recomendada | Gratuita en core.ac.uk/services/api |
PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY | Semantic Scholar | Opcional | Gratuita en semanticscholar.org — mejora los límites de tasa |
PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL | Google Scholar | Opcional | Tu URL de proxy HTTP/HTTPS — evita la detección de bots |
PAPER_SEARCH_MCP_DOAJ_API_KEY | DOAJ | Opcional | Gratuita en doaj.org — aumenta el límite de tasa por hora |
PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN | Zenodo | Opcional | Gratuita en zenodo.org — requerida para registros privados |
PAPER_SEARCH_MCP_IEEE_API_KEY | IEEE Xplore | Requerida para activar | Gratuita en developer.ieee.org |
PAPER_SEARCH_MCP_ACM_API_KEY | ACM DL | Requerida para activar | Consulta libraries.acm.org/digital-library/acm-open |
Todas las variables siguen el esquema de prefijo PAPER_SEARCH_MCP_<NAME>. Los nombres heredados sin el prefijo (p. ej. CORE_API_KEY, UNPAYWALL_EMAIL) siguen siendo compatibles por retrocompatibilidad.
Limitaciones Conocidas de Fuentes Externas
Algunos fallos de búsqueda son causados por inestabilidad de proveedores externos, no por errores de este proyecto:
| Fuente | Síntoma | Causa | Solución |
|---|---|---|---|
| Google Scholar | Devuelve 0 resultados / HTML vacío | Detección de bots (CAPTCHA) | Configurar PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL con un proxy |
| Semantic Scholar | Respuestas 429 de límite de tasa | Límite de tasa de acceso anónimo | Configurar PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY; si la clave es rechazada (403) el conector reintenta automáticamente sin clave |
| CORE | Errores 500 / tiempo de espera | Limitación de tasa sin autenticación | Configurar PAPER_SEARCH_MCP_CORE_API_KEY (gratuita); el conector reintenta con retroceso exponencial y vuelve a modo sin clave en 401/403 |
| OpenAIRE | Respuestas 403 transitorias | Limitación de tasa por sesión basada en IP | El conector reintenta 3× por perfil, escalando: sesión simple → cabecera Accept XML → requests.get crudo con UA de Mozilla |
| CiteSeerX | 404 mediante redirección de archivo web | El endpoint de PSU redirige intermitentemente al archivo | Sin solución; el conector devuelve vacío correctamente |
| BASE | La búsqueda devuelve 0 resultados | El endpoint OAI-PMH requiere registro de IP institucional | Regístrate en base-search.net para acceso API; el conector devuelve vacío correctamente en caso contrario |
| SSRN | HTTP 403 | Detección de bots (Cloudflare) | Sin solución; el conector prueba dos endpoints y devuelve un mensaje claro en caso de fallo |
| PMC / Europe PMC | ProxyError en descarga de PDF | Proxy local bloquea la descarga directa de PDF por HTTPS | Deshabilitar el proxy o usar download_with_fallback en su lugar |
| Unpaywall | Se omite por completo | Variable de entorno UNPAYWALL_EMAIL no configurada | Configurar PAPER_SEARCH_MCP_UNPAYWALL_EMAIL en ~/.config/paper-search-mcp/.env |
Conectores de Plataformas de Pago Opcionales (Fase 3)
Los conectores de IEEE Xplore y ACM Digital Library se incluyen como esqueletos de participación voluntaria. Están deshabilitados por defecto — no se realizan llamadas API a menos que configures explícitamente las claves correspondientes.
| Plataforma | Variable de Entorno | Estado |
|---|---|---|
| IEEE Xplore | PAPER_SEARCH_MCP_IEEE_API_KEY | 🚧 esqueleto — búsqueda registrada, descarga/lectura lanzan NotImplementedError |
| ACM Digital Library | PAPER_SEARCH_MCP_ACM_API_KEY | 🚧 esqueleto — búsqueda registrada, descarga/lectura lanzan NotImplementedError |
Cómo habilitarlos:
export PAPER_SEARCH_MCP_IEEE_API_KEY=<your_ieee_key> # free key at https://developer.ieee.org/
export PAPER_SEARCH_MCP_ACM_API_KEY=<your_acm_key> # see https://libraries.acm.org/digital-library
Una vez que se configura una clave, la fuente correspondiente se añade automáticamente a ALL_SOURCES y sus herramientas MCP (search_ieee / search_acm, download_ieee / download_acm, read_ieee_paper / read_acm_paper) se registran al iniciar el servidor.
Sin una clave, los conectores solo registran una advertencia de inicio — el resto del servidor no se ve afectado.
Expansión de Fuentes Gratuitas (Fase 4)
Tres conectores adicionales de fuentes gratuitas están ahora integrados en el servidor MCP:
zenodo: Conector oficial de la API REST de Zenodo (búsqueda + soporte de PDF/lectura según el registro).hal: Conector de la API pública de HAL (búsqueda + soporte de PDF/lectura según el registro).ssrn: Conector centrado en el descubrimiento con analizador robusto y descarga/lectura de mejor esfuerzo cuando hay un enlace PDF público directo disponible.unpaywall: Fuente de metadatos OA centrada en DOI para consulta independiente (search_unpaywall) y resolución de URL de respaldo.
La integración con SSRN sigue priorizando el cumplimiento: solo intenta enlaces PDF públicos directos expuestos por las páginas de SSRN. Si se requiere inicio de sesión o entrega restringida, el conector devuelve un mensaje claro en lugar de eludir los controles de acceso.
Aviso sobre Sci-Hub
El soporte de Sci-Hub puede seguir disponible como conector opcional para usuarios que elijan habilitarlo explícitamente, pero no debe tratarse como la vía predeterminada o recomendada para el texto completo.
- La disponibilidad es inestable y los espejos cambian con frecuencia.
- Los riesgos legales y de política varían según la jurisdicción.
- El README y las descripciones de las herramientas deben indicar claramente que los usuarios son responsables de habilitarlo y usarlo.
- Las fuentes de acceso abierto y las permitidas por los editores deben probarse primero siempre que sea posible.
Instalación
Elige el método que mejor se adapte a tu flujo de trabajo. Todos los métodos admiten las mismas claves API opcionales.
Claude Code (Skill) — recomendado para usuarios de Claude Code
Instálalo como una skill de Claude Code en lugar de un servidor MCP. Esto le da a Claude acceso automático a la búsqueda de artículos cuando menciones la búsqueda de papers, literatura académica, etc. — sin necesidad de configuración MCP.
Requisitos previos: uv y Claude Code.
Paso 1 — Instala la CLI:
uv tool install paper-search-mcp
Paso 2 — Instala la skill:
mkdir -p ~/.claude/skills/paper-search
curl -fsSL https://raw.githubusercontent.com/openags/paper-search-mcp/main/claude-code/SKILL.md \
-o ~/.claude/skills/paper-search/SKILL.md
Paso 3 (opcional) — Configura las claves API:
Crea ~/.config/paper-search-mcp/.env para las claves API opcionales (consulta Variables de entorno).
Eso es todo. La próxima vez que inicies Claude Code, solo pídele que encuentre artículos — la skill se activa automáticamente. Por ejemplo:
- "Encuentra artículos recientes sobre edición base CRISPR"
- "Busca en arXiv y Semantic Scholar mecanismos de atención en transformers"
- "Descarga el PDF del artículo arXiv 2106.12345"
La skill utiliza una CLI (paper-search) que envuelve la misma librería que el servidor MCP, generando JSON para búsqueda/descarga y texto plano para lectura.
Ubicaciones de archivos de configuración del servidor MCP (para los métodos a continuación)
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json- Windows:
%APPDATA%\Claude\claude_desktop_config.json- Linux:
~/.config/Claude/claude_desktop_config.json
Método 1 — Smithery (un comando, recomendado para Claude Desktop)
npx -y @smithery/cli install @openags/paper-search-mcp --client claude
Smithery escribe automáticamente el bloque de configuración correcto por ti. No se necesita edición manual de JSON.
Método 2 — uvx (sin instalación, siempre la última versión)
uvx ejecuta el paquete directamente desde PyPI sin una instalación permanente. Requiere uv.
# Install uv (skip if already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
⚠️ Nota para macOS: los scripts de envoltura generados por
uvxdependen derealpath, que no está incluido en macOS de forma predeterminada. Si ves un error derealpath: command not found, instala GNU coreutils (brew install coreutils) o usa el Método 3 (uv run) en su lugar — no tiene esta limitación.
Configuración de Claude Desktop:
{
"mcpServers": {
"paper-search-mcp": {
"command": "uvx",
"args": ["paper-search-mcp"],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com",
"PAPER_SEARCH_MCP_CORE_API_KEY": "",
"PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY": "",
"PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN": "",
"PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL": "",
"PAPER_SEARCH_MCP_IEEE_API_KEY": "",
"PAPER_SEARCH_MCP_ACM_API_KEY": ""
}
}
}
}
Método 3 — uv (instalación persistente)
uv tool install paper-search-mcp
Configuración de Claude Desktop:
{
"mcpServers": {
"paper-search-mcp": {
"command": "uv",
"args": ["tool", "run", "paper-search-mcp"],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com",
"PAPER_SEARCH_MCP_CORE_API_KEY": "",
"PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY": "",
"PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN": "",
"PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL": "",
"PAPER_SEARCH_MCP_IEEE_API_KEY": "",
"PAPER_SEARCH_MCP_ACM_API_KEY": ""
}
}
}
}
Método 4 — pip (instalación estándar de Python)
pip install paper-search-mcp
Configuración de Claude Desktop:
{
"mcpServers": {
"paper-search-mcp": {
"command": "python",
"args": ["-m", "paper_search_mcp.server"],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com",
"PAPER_SEARCH_MCP_CORE_API_KEY": "",
"PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY": "",
"PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN": "",
"PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL": "",
"PAPER_SEARCH_MCP_IEEE_API_KEY": "",
"PAPER_SEARCH_MCP_ACM_API_KEY": ""
}
}
}
}
Si
pythonno está en tu PATH, reemplázalo con la ruta completa (por ejemplo,/usr/bin/python3oC:\Python311\python.exe). Ejecutawhich python3/where pythonpara encontrarlo.
Método 5 — npx (mediante CLI de Smithery, sin Python local necesario)
npx -y @smithery/cli run @openags/paper-search-mcp
Configuración de Claude Desktop:
{
"mcpServers": {
"paper-search-mcp": {
"command": "npx",
"args": ["-y", "@smithery/cli", "run", "@openags/paper-search-mcp"],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com",
"PAPER_SEARCH_MCP_CORE_API_KEY": "",
"PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY": ""
}
}
}
}
Método 6 — Docker
docker build -t paper-search-mcp .
docker run --rm -i \
-e PAPER_SEARCH_MCP_UNPAYWALL_EMAIL=your@email.com \
-e PAPER_SEARCH_MCP_CORE_API_KEY=your_core_key \
paper-search-mcp
Configuración de Claude Desktop:
{
"mcpServers": {
"paper-search-mcp": {
"command": "docker",
"args": ["run", "--rm", "-i", "paper-search-mcp"],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com",
"PAPER_SEARCH_MCP_CORE_API_KEY": "",
"PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY": "",
"PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN": "",
"PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL": "",
"PAPER_SEARCH_MCP_IEEE_API_KEY": "",
"PAPER_SEARCH_MCP_ACM_API_KEY": ""
}
}
}
}
Método 7 — Clonar y ejecutar desde el código fuente (desarrollo / recomendado para macOS local)
Este es el método más confiable en macOS — sin scripts de envoltura, sin problemas de realpath.
# 1. Install uv (skip if already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Clone repo
git clone https://github.com/openags/paper-search-mcp.git
cd paper-search-mcp
# 3. Verify it runs (uv auto-resolves dependencies, no manual install needed)
uv run -m paper_search_mcp.server
Configuración de Claude Desktop (reemplaza la ruta del directorio con la ubicación real de tu clon):
{
"mcpServers": {
"paper-search-mcp": {
"command": "uv",
"args": [
"run",
"--directory", "/path/to/paper-search-mcp",
"-m", "paper_search_mcp.server"
],
"env": {
"PAPER_SEARCH_MCP_UNPAYWALL_EMAIL": "your@email.com",
"PAPER_SEARCH_MCP_CORE_API_KEY": "",
"PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY": "",
"PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN": "",
"PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL": "",
"PAPER_SEARCH_MCP_IEEE_API_KEY": "",
"PAPER_SEARCH_MCP_ACM_API_KEY": ""
}
}
}
}
Por ejemplo, si clonaste en /Users/mac/Pengsong/paper-search-mcp:
"args": ["run", "--directory", "/Users/mac/Pengsong/paper-search-mcp", "-m", "paper_search_mcp.server"]
uv runinstala automáticamente las dependencias en un entorno aislado en la primera ejecución — sin necesidad depip installovenv.
Para desarrollo activo, opcionalmente instala una copia editable:
uv venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
uv pip install -e ".[dev]"
Variables de entorno (archivo .env)
En lugar de poner las claves directamente en la configuración JSON, puedes guardarlas en el archivo de configuración del usuario (se carga automáticamente al inicio):
mkdir -p ~/.config/paper-search-mcp
curl -fsSL https://raw.githubusercontent.com/openags/paper-search-mcp/main/.env.example \
-o ~/.config/paper-search-mcp/.env
$EDITOR ~/.config/paper-search-mcp/.env
PAPER_SEARCH_MCP_UNPAYWALL_EMAIL=your@email.com
PAPER_SEARCH_MCP_CORE_API_KEY=
PAPER_SEARCH_MCP_SEMANTIC_SCHOLAR_API_KEY=
PAPER_SEARCH_MCP_ZENODO_ACCESS_TOKEN=
PAPER_SEARCH_MCP_GOOGLE_SCHOLAR_PROXY_URL=
PAPER_SEARCH_MCP_IEEE_API_KEY=
PAPER_SEARCH_MCP_ACM_API_KEY=
Para usar una ruta personalizada: export PAPER_SEARCH_MCP_ENV_FILE=/absolute/path/to/.env
Los nombres de variables heredados sin el prefijo
PAPER_SEARCH_MCP_(por ejemplo,CORE_API_KEY,UNPAYWALL_EMAIL) aún se admiten por compatibilidad con versiones anteriores.
Contribuciones
¡Damos la bienvenida a las contribuciones! Así puedes empezar:
-
Haz un fork del repositorio: Haz clic en "Fork" en GitHub.
-
Clona y configura:
git clone https://github.com/yourusername/paper-search-mcp.git cd paper-search-mcp uv venv && source .venv/bin/activate uv pip install -e ".[dev]" -
Realiza cambios:
- Añade nuevas plataformas en
academic_platforms/. - Actualiza las pruebas en
tests/.
- Añade nuevas plataformas en
-
Envía una solicitud de extracción (pull request): Sube los cambios y crea un PR en GitHub.
Demo
Pendientes
Plataformas académicas planificadas
- [√] arXiv
- [√] PubMed
- [√] bioRxiv
- [√] medRxiv
- [√] Google Scholar
- [√] IACR ePrint Archive
- [√] Semantic Scholar
- [√] Crossref
- [√] PubMed Central (PMC)
- [√] CORE
- [√] Europe PMC
- [√] Documentación de advertencia y habilitación de Sci-Hub
Tareas de desarrollo
- [√] Corregir errores de búsqueda asíncrona y asegurar eventos MCP rápidos y fiables
- [√] Script de prueba completa de extremo a extremo (búsqueda, análisis, descarga)
- [√] Establecer arquitectura federada de dos capas (herramienta de capa 1:
search_papers) - [√] Asegurar extracción generalizada de DOI en campos de metadatos y respaldos de resumen
- Gráfico de citaciones y contexto de relaciones entre artículos
- [√] Expandir el proveedor OpenAlex de pila completa
Fuentes gratuitas y abiertas prioritarias
- [√] PubMed Central (PMC)
- [√] CORE
- [√] OpenAlex
- [√] Europe PMC
- [√] OpenAIRE
- [√] dblp
- [√] CiteSeerX
- [√] DOAJ
- [√] BASE
- [√] Zenodo
- [√] HAL
- [√] SSRN (descubrimiento + texto completo de mejor esfuerzo)
- [√] Unpaywall (fuente de búsqueda autónoma por DOI)
Integraciones opcionales y no principales
- ResearchGate
- JSTOR
- ScienceDirect
- Springer Link
- [√] IEEE Xplore (esqueleto opcional — actívalo con
IEEE_API_KEY) - [√] ACM Digital Library (esqueleto opcional — actívalo con
ACM_API_KEY) - Web of Science
- Scopus
Historial de estrellas
Licencia
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
¡Feliz investigación con paper-search-mcp! Si encuentras problemas, abre un issue en GitHub.