Servidor MCP de atención médica
Un servidor de Protocolo de Contexto Modelo (MCP) que proporciona a los asistentes de IA acceso a datos de atención médica y herramientas de información médica.
Descripción general
El Servidor MCP de Salud es un servidor especializado que implementa el Protocolo de Contexto de Modelo (MCP) para proporcionar a los asistentes de IA acceso a datos de atención médica y herramientas de información médica. Permite a los modelos de IA recuperar información médica precisa y actualizada de fuentes confiables.
Related MCP server: MCP Toolkit
Características
Información sobre medicamentos de la FDA : Busque y recupere información completa sobre medicamentos de la base de datos de la FDA
PubMed Research : Busque literatura médica en la base de datos de artículos científicos de PubMed.
Temas de salud : Acceda a información de salud basada en evidencia en Health.gov
Ensayos clínicos : búsqueda de ensayos clínicos en curso y finalizados
Terminología médica : Busque códigos CIE-10 y definiciones de terminología médica
Almacenamiento en caché : sistema de almacenamiento en caché eficiente con agrupación de conexiones para reducir las llamadas a la API y mejorar el rendimiento
Seguimiento de uso : seguimiento de uso anónimo para supervisar el uso de la API
Manejo de errores : manejo y registro de errores robustos
Interfaces múltiples : compatibilidad con interfaces stdio (para CLI) y HTTP/SSE
Documentación de API : Documentación de API interactiva con Swagger UI
Pruebas integrales : Amplio conjunto de pruebas con pytest e informes de cobertura
Instalación
Instalación manual
Clonar el repositorio:
git clone https://github.com/Cicatriiz/healthcare-mcp-public.git cd healthcare-mcp-publicCrear un entorno virtual:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activateInstalar dependencias:
pip install -r requirements.txtConfigurar variables de entorno (opcional):
# Create .env file from example cp .env.example .env # Edit .env with your API keys (optional)Ejecutar el servidor:
python run.py
Uso
Corriendo en diferentes modos de transporte
Modo stdio (predeterminado, para Cline):
python run.pyModo HTTP/SSE (para clientes web):
python run.py --http --port 8000
Probando las herramientas
Puede probar las herramientas MCP utilizando la nueva suite de pruebas basada en pytest:
# Run all tests with pytest and coverage
python -m tests.run_tests --pytest
# Run a specific test file
python -m tests.run_tests --test test_fda_tool.py
# Test the HTTP server
python -m tests.run_tests --server --port 8000Para mantener la compatibilidad con versiones anteriores, aún puedes ejecutar las pruebas antiguas:
# Run all tests (old style)
python -m tests.run_tests
# Test individual tools (old style)
python -m tests.run_tests --fda # Test FDA drug lookup
python -m tests.run_tests --pubmed # Test PubMed search
python -m tests.run_tests --health # Test Health Topics
python -m tests.run_tests --trials # Test Clinical Trials search
python -m tests.run_tests --icd # Test ICD-10 code lookupReferencia de API
El servidor MCP de atención médica proporciona una API programática para integración directa y una API HTTP RESTful para clientes web.
Puntos finales de API RESTful
Cuando se ejecuta en modo HTTP, están disponibles los siguientes puntos finales:
Chequeo de salud
GET /healthDevuelve el estado del servidor y sus servicios.
Búsqueda de medicamentos de la FDA
GET /api/fda?drug_name={drug_name}&search_type={search_type}Parámetros:
drug_name: Nombre del medicamento a buscarsearch_type: Tipo de información a recuperargeneral: Información básica del medicamento (predeterminado)label: Información de etiquetado de medicamentosadverse_events: Eventos adversos notificados
Ejemplo de respuesta:
{
"status": "success",
"drug_name": "aspirin",
"search_type": "general",
"total_results": 25,
"results": [
{
"brand_name": "ASPIRIN",
"generic_name": "ASPIRIN",
"manufacturer": "Bayer Healthcare",
"product_type": "HUMAN OTC DRUG",
"route": "ORAL",
"active_ingredients": [
{
"name": "ASPIRIN",
"strength": "325 mg/1"
}
]
}
]
}Búsqueda en PubMed
GET /api/pubmed?query={query}&max_results={max_results}&date_range={date_range}Parámetros:
query: Consulta de búsqueda de literatura médicamax_results: Número máximo de resultados a devolver (predeterminado: 5, máximo: 50)date_range: Límite a artículos publicados en los últimos años (por ejemplo, '5' para los últimos 5 años)
Ejemplo de respuesta:
{
"status": "success",
"query": "diabetes treatment",
"total_results": 123456,
"date_range": "5",
"articles": [
{
"pmid": "12345678",
"title": "New advances in diabetes treatment",
"authors": ["Smith J", "Johnson A"],
"journal": "Journal of Diabetes Research",
"publication_date": "2023-01-15",
"abstract": "This study explores new treatment options...",
"url": "https://pubmed.ncbi.nlm.nih.gov/12345678/"
}
]
}Temas de salud
GET /api/health_finder?topic={topic}&language={language}Parámetros:
topic: Tema de salud para buscar informaciónlanguage: Idioma del contenido (en o es, predeterminado: en)
Ejemplo de respuesta:
{
"status": "success",
"search_term": "diabetes",
"language": "en",
"total_results": 15,
"topics": [
{
"title": "Diabetes Type 2",
"url": "https://health.gov/myhealthfinder/topics/health-conditions/diabetes/diabetes-type-2",
"last_updated": "2023-05-20",
"section": "Health Conditions",
"description": "Information about managing type 2 diabetes",
"content": ["Diabetes is a disease...", "Treatment options include..."]
}
]
}Búsqueda de ensayos clínicos
GET /api/clinical_trials?condition={condition}&status={status}&max_results={max_results}Parámetros:
condition: Condición médica o enfermedad a buscarstatus: Estado de la prueba (en proceso de reclutamiento, completada, activa, no reclutando o todas)max_results: Número máximo de resultados a devolver (predeterminado: 10, máximo: 100)
Ejemplo de respuesta:
{
"status": "success",
"condition": "breast cancer",
"search_status": "recruiting",
"total_results": 256,
"trials": [
{
"nct_id": "NCT12345678",
"title": "Study of New Treatment for Breast Cancer",
"status": "Recruiting",
"phase": "Phase 2",
"study_type": "Interventional",
"conditions": ["Breast Cancer", "HER2-positive Breast Cancer"],
"locations": [
{
"facility": "Memorial Hospital",
"city": "New York",
"state": "NY",
"country": "United States"
}
],
"sponsor": "National Cancer Institute",
"url": "https://clinicaltrials.gov/study/NCT12345678",
"eligibility": {
"gender": "Female",
"min_age": "18 Years",
"max_age": "75 Years",
"healthy_volunteers": "No"
}
}
]
}Búsqueda de códigos CIE-10
GET /api/medical_terminology?code={code}&description={description}&max_results={max_results}Parámetros:
code: código CIE-10 a buscar (opcional si se proporciona una descripción)description: Descripción de la condición médica a buscar (opcional si se proporciona el código)max_results: Número máximo de resultados a devolver (predeterminado: 10, máximo: 50)
Ejemplo de respuesta:
{
"status": "success",
"search_type": "description",
"search_term": "diabetes",
"total_results": 25,
"codes": [
{
"code": "E11",
"description": "Type 2 diabetes mellitus",
"category": "Endocrine, nutritional and metabolic diseases"
},
{
"code": "E10",
"description": "Type 1 diabetes mellitus",
"category": "Endocrine, nutritional and metabolic diseases"
}
]
}Ejecución de herramientas genéricas
POST /mcp/call-toolCuerpo de la solicitud:
{
"name": "fda_drug_lookup",
"arguments": {
"drug_name": "aspirin",
"search_type": "general"
},
"session_id": "optional-session-id"
}API programática
Al utilizar el servidor MCP mediante programación, están disponibles las siguientes funciones:
Búsqueda de medicamentos de la FDA
fda_drug_lookup(drug_name: str, search_type: str = "general")Parámetros:
drug_name: Nombre del medicamento a buscarsearch_type: Tipo de información a recuperargeneral: Información básica del medicamento (predeterminado)label: Información de etiquetado de medicamentosadverse_events: Eventos adversos notificados
Búsqueda en PubMed
pubmed_search(query: str, max_results: int = 5, date_range: str = "")Parámetros:
query: Consulta de búsqueda de literatura médicamax_results: Número máximo de resultados a devolver (predeterminado: 5)date_range: Límite a artículos publicados en los últimos años (por ejemplo, '5' para los últimos 5 años)
Temas de salud
health_topics(topic: str, language: str = "en")Parámetros:
topic: Tema de salud para buscar informaciónlanguage: Idioma del contenido (en o es, predeterminado: en)
Búsqueda de ensayos clínicos
clinical_trials_search(condition: str, status: str = "recruiting", max_results: int = 10)Parámetros:
condition: Condición médica o enfermedad a buscarstatus: Estado de la prueba (en proceso de reclutamiento, completada, activa, no reclutando o todas)max_results: Número máximo de resultados a devolver
Búsqueda de códigos CIE-10
lookup_icd_code(code: str = None, description: str = None, max_results: int = 10)Parámetros:
code: código CIE-10 a buscar (opcional si se proporciona una descripción)description: Descripción de la condición médica a buscar (opcional si se proporciona el código)max_results: Número máximo de resultados a devolver
Fuentes de datos
Este servidor MCP utiliza varias API de atención médica disponibles públicamente:
Versión Premium (aún en desarrollo)
Esta es la versión gratuita de Healthcare MCP Server con límites de uso. Para funciones avanzadas y límites de uso más altos, consulte nuestra versión premium:
Llamadas API ilimitadas
Herramientas avanzadas de datos de atención médica
Integraciones personalizadas
Soporte prioritario
Licencia
Licencia MIT