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)
- Clona o descarga este repositorio
- Ejecuta el script de configuración:
Esto creará un entorno virtual, instalará las dependencias y proporcionará los siguientes pasos../setup.sh
Configuración manual
- Clona o descarga este repositorio
- Crea y activa el entorno virtual:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate - Instala las dependencias:
pip install -r requirements.txt - 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
-
Activa el entorno virtual (si no está ya activo):
source venv/bin/activate # On Windows: venv\Scripts\activate -
Ejecuta el servidor:
python server.py
El servidor se iniciará y escuchará conexiones MCP a través de stdio.
- 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 PubMedtotal_count: Número total de artículos coincidentesquery_used: La consulta de búsqueda ejecutadaresults_returned: Número de resultados devueltossort_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 PubMedcontent: Contenido del artículo en el formato solicitadoformat_type: Tipo de formato utilizadoreturn_mode: Modo de devolución utilizadocontent_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 PubMedformat_type(string, opcional): Formato de contenido (predeterminado: "abstract")return_mode(string, opcional): Formato de devolución (predeterminado: "xml")
Devuelve:
pmids: Lista de PMIDs solicitadoscontent: Contenido combinado de los artículosarticle_count: Número de artículos solicitadoscontent_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 solicitadossummaries: Datos de resumen en XMLarticle_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 Pythonrequests- Cliente HTTP para la API de PubMedpython-dotenv- Variables de entornotyping-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:
- Tu clave de API y configuración de correo electrónico
- Conectividad de red a los servidores de NCBI
- Cumplimiento del límite de velocidad
- Formatos de PMID válidos
Para la documentación de la API de PubMed, visita: https://www.ncbi.nlm.nih.gov/books/NBK25500/