PubMed MCP Server

Busca y descarga artículos científicos desde la API de E-utilities de PubMed.

Documentación

PubMed MCP Server

Un servidor de Model Context Protocol (MCP) que proporciona acceso a la API E-utilities de PubMed para buscar y descargar artículos científicos. Este servidor permite a las aplicaciones LLM buscar en la vasta base de datos de literatura biomédica de PubMed y recuperar metadatos de artículos, resúmenes y contenido completo.

Características

  • Búsqueda de artículos: Buscar en la base de datos de PubMed con términos de consulta flexibles
  • Descarga de artículos: Recuperar metadatos completos de artículos, resúmenes y contenido disponible
  • Operaciones por lotes: Descargar múltiples artículos en una sola solicitud
  • Resúmenes de artículos: Obtener resúmenes de documentos con metadatos
  • Múltiples formatos: Soporte para formatos de salida XML, JSON y texto
  • Límite de velocidad: Límite de velocidad automático para respetar los límites de la API de PubMed
  • Manejo de errores: Manejo robusto de errores para fallos de API

Instalación

Configuración rápida (Recomendada)

  1. Clona o descarga este repositorio
  2. Ejecuta el script de configuración:
    ./setup.sh
    
    Esto creará un entorno virtual, instalará las dependencias y proporcionará los siguientes pasos.

Configuración manual

  1. Clona o descarga este repositorio
  2. Crea y activa el entorno virtual:
    python3 -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  3. Instala las dependencias:
    pip install -r requirements.txt
    
  4. Configura el entorno (opcional pero recomendado):
    cp .env.example .env
    # Edit .env file with your NCBI API key and email
    

Configuración

Variables de entorno

Crea un archivo .env con la siguiente configuración opcional:

  • NCBI_API_KEY: Tu clave de API de NCBI (aumenta el límite de velocidad de 3 a 10 solicitudes por segundo)
  • NCBI_EMAIL: Tu dirección de correo electrónico (recomendada por NCBI para el seguimiento del uso de la API)

Obtén tu clave de API gratuita de NCBI en: https://www.ncbi.nlm.nih.gov/account/settings/

Uso

Ejecutar el servidor

  1. Activa el entorno virtual (si no está ya activo):

    source venv/bin/activate  # On Windows: venv\Scripts\activate
    
  2. Ejecuta el servidor:

    python server.py
    

El servidor se iniciará y escuchará conexiones MCP a través de stdio.

  1. Para desactivar el entorno virtual cuando termines:
    deactivate
    

Herramientas disponibles

1. search_articles

Busca artículos en PubMed que coincidan con una consulta.

Parámetros:

  • query (string, obligatorio): Consulta de búsqueda (ej., "COVID-19 vaccines", "machine learning AND healthcare")
  • max_results (int, opcional): Máximo de resultados a devolver (predeterminado: 20, máximo: 200)
  • sort (string, opcional): Orden de clasificación - "relevance", "pub_date" o "first_author" (predeterminado: "relevance")

Devuelve:

  • pmids: Lista de IDs de PubMed
  • total_count: Número total de artículos coincidentes
  • query_used: La consulta de búsqueda ejecutada
  • results_returned: Número de resultados devueltos
  • sort_order: Orden de clasificación utilizado

Ejemplo:

{
  "query": "CRISPR gene editing",
  "max_results": 10,
  "sort": "pub_date"
}

2. download_article

Descarga los detalles de un artículo por su ID de PubMed.

Parámetros:

  • pmid (string, obligatorio): ID de PubMed (ej., "33073741")
  • format_type (string, opcional): Formato de contenido - "abstract", "medline" o "full" (predeterminado: "abstract")
  • return_mode (string, opcional): Formato de devolución - "xml", "text" o "json" (predeterminado: "xml")

Devuelve:

  • pmid: El ID de PubMed
  • content: Contenido del artículo en el formato solicitado
  • format_type: Tipo de formato utilizado
  • return_mode: Modo de devolución utilizado
  • content_length: Longitud del contenido

3. download_articles_batch

Descarga múltiples artículos en una sola solicitud.

Parámetros:

  • pmids (lista, obligatorio): Lista de IDs de PubMed
  • format_type (string, opcional): Formato de contenido (predeterminado: "abstract")
  • return_mode (string, opcional): Formato de devolución (predeterminado: "xml")

Devuelve:

  • pmids: Lista de PMIDs solicitados
  • content: Contenido combinado de los artículos
  • article_count: Número de artículos solicitados
  • content_length: Longitud del contenido

4. get_article_summaries

Obtiene resúmenes de documentos para artículos (metadatos sin contenido completo).

Parámetros:

  • pmids (lista, obligatorio): Lista de IDs de PubMed

Devuelve:

  • pmids: Lista de PMIDs solicitados
  • summaries: Datos de resumen en XML
  • article_count: Número de artículos solicitados

Ejemplos de consultas de búsqueda

Búsquedas básicas

  • "COVID-19" - Buscar artículos sobre COVID-19
  • "machine learning" - Buscar artículos sobre machine learning
  • "breast cancer" - Buscar artículos sobre cáncer de mama

Búsquedas avanzadas

  • "COVID-19 AND vaccine" - Artículos sobre vacunas contra la COVID-19
  • "machine learning AND healthcare" - ML en el sector salud
  • "CRISPR[Title]" - CRISPR solo en títulos de artículos
  • "Nature[Journal]" - Artículos de la revista Nature
  • "2023[PDAT]" - Artículos publicados en 2023
  • "Smith J[Author]" - Artículos del autor "Smith J"

Búsquedas por campo específico

  • [Title] - Buscar solo en el título
  • [Author] - Buscar por autor
  • [Journal] - Buscar por nombre de revista
  • [PDAT] - Buscar por fecha de publicación
  • [MeSH] - Buscar términos MeSH

Integración con Claude Desktop

Opción 1: Usar archivo .env (Recomendada)

Si configuraste tu clave de API en el archivo .env durante la instalación:

{
  "mcpServers": {
    "pubmed": {
      "command": "/path/to/pubmed-mcp/venv/bin/python",
      "args": ["/path/to/pubmed-mcp/server.py"]
    }
  }
}

Opción 2: Configurar en Claude Desktop

Alternativamente, puedes especificar la clave de API directamente en la configuración de Claude Desktop:

{
  "mcpServers": {
    "pubmed": {
      "command": "/path/to/pubmed-mcp/venv/bin/python",
      "args": ["/path/to/pubmed-mcp/server.py"],
      "env": {
        "NCBI_API_KEY": "your_api_key_here",
        "NCBI_EMAIL": "your_email@example.com"
      }
    }
  }
}

Recomendación: Usa la Opción 1 (archivo .env) para mayor seguridad y una gestión más fácil.

Nota: Asegúrate de usar la ruta completa al ejecutable de Python en el entorno virtual (venv/bin/python) para garantizar que las dependencias correctas estén disponibles.

Límites de velocidad

  • Sin clave de API: 3 solicitudes por segundo
  • Con clave de API: 10 solicitudes por segundo
  • Límite de tamaño de lote: 50 artículos por solicitud por lotes

Manejo de errores

El servidor proporciona un manejo integral de errores:

  • Los PMIDs inválidos se limpian automáticamente (se eliminan caracteres no numéricos)
  • Las consultas vacías devuelven errores descriptivos
  • Los fallos de API se capturan y se informan
  • El límite de velocidad previene el abuso de la API

Desarrollo

Estructura del proyecto

pubmed-mcp/
├── server.py              # Main MCP server implementation
├── pubmed_client.py       # PubMed API client wrapper
├── requirements.txt       # Python dependencies
├── setup.sh              # Automated setup script
├── .gitignore            # Git ignore file
├── README.md             # This file
├── .env.example          # Environment variables template
└── venv/                 # Virtual environment (created by setup)

Dependencias

  • mcp[cli] - SDK de MCP para Python
  • requests - Cliente HTTP para la API de PubMed
  • python-dotenv - Variables de entorno
  • typing-extensions - Soporte de sugerencias de tipo

Licencia

Este proyecto es de código abierto. Consulta los términos de servicio de PubMed para las pautas de uso de la API.

Soporte

Para problemas con este servidor MCP, verifica:

  1. Tu clave de API y configuración de correo electrónico
  2. Conectividad de red a los servidores de NCBI
  3. Cumplimiento del límite de velocidad
  4. Formatos de PMID válidos

Para la documentación de la API de PubMed, visita: https://www.ncbi.nlm.nih.gov/books/NBK25500/