Enhanced Medication Information MCP Server
Proporciona acceso en tiempo real a datos de medicamentos de la FDA, incluyendo desabastecimientos, etiquetado y retiros del mercado, a través de la API de openFDA.
Documentación
Certus
Un servidor de Model Context Protocol (MCP) listo para producción, diseñado para proporcionar información médica y de medicamentos autoritativa y en tiempo real. Certus se integra con Claude Desktop y ofrece acceso en vivo a datos de medicamentos de la FDA, incluyendo escaseces, retiros del mercado y etiquetado, a través de las APIs de openFDA.
Versiones del Proyecto
Este proyecto admite implementaciones tanto en Python como en JavaScript de los servidores MCP. Puede usar cualquiera de las dos versiones según su entorno y preferencias.
- Versión Python: en
PY_version/(completa en funciones) - Versión JavaScript: en
JS_version/(Node.js, paridad de funciones para información mejorada de medicamentos)
Inicio Rápido
1. Clonar el Repositorio
# Clone and enter the project directory
$ git clone <your_repository_url>
$ cd med_info_mcp_project
Configuración de la Versión Python (PY_version/)
Instalación
cd PY_version
pip install -r ../requirements.txt
touch __init__.py
Configuración del Entorno (Opcional)
Cree un archivo .env para su clave de API de OpenFDA (opcional, mejora los límites de velocidad):
OPENFDA_API_KEY=your_api_key_here
Obtenga una clave API gratuita en: https://open.fda.gov/apis/authentication/
Pruebas
Probar el cliente RxNorm:
python3 drug_features.py
Probar el cliente OpenFDA:
python3 openfda_client.py
Integración con Claude Desktop (Python)
Edite su archivo de configuración de Claude Desktop:
{
"mcpServers": {
"enhanced-medication-info": {
"command": "python3",
"args": ["/full/path/to/PY_version/enhanced_mcp_server.py"]
},
"drug-features": {
"command": "python3",
"args": ["/full/path/to/PY_version/drug_server.py"]
}
}
}
Configuración de la Versión JavaScript (JS_version/)
Requisitos Previos
- Node.js v18 o superior
Instalación
cd JS_version
npm install
Configuración del Entorno (Opcional)
Establezca su clave de API de OpenFDA (opcional, mejora los límites de velocidad):
export OPENFDA_API_KEY="your_api_key_here"
Obtenga una clave API gratuita en: https://open.fda.gov/apis/authentication/
Pruebas
Ejecute el cliente de prueba:
npm test
# or
node test-client.js
Integración con Claude Desktop (JavaScript)
Edite su archivo de configuración de Claude Desktop:
{
"mcpServers": {
"enhanced-medication-info": {
"command": "node",
"args": ["/full/path/to/JS_version/enhanced-mcp-server.js"],
"env": {
"OPENFDA_API_KEY": "your_openfda_api_key_here"
}
}
}
}
Funciones (Ambas Versiones)
- Perfiles completos de medicamentos: etiquetado de la FDA, estado de escasez, fabricante y más
- Búsqueda de escasez en tiempo real: datos de escasez en vivo de openFDA (más de 1,900 registros)
- Información de retiros del mercado: retiros de medicamentos actuales e históricos de la base de datos de cumplimiento de la FDA
- Consulta solo de etiquetado: recupere únicamente el etiquetado de medicamentos aprobado por la FDA
- Guía de búsqueda de escasez: consejos y estrategias para encontrar datos de escasez
- Análisis de tendencias del mercado: analice patrones de escasez y riesgo de un medicamento
- Análisis por lotes: evalúe escaseces, retiros y riesgo de hasta 25 medicamentos a la vez
Estructura del Proyecto
med_info_mcp_project/
├── JS_version/ # JavaScript/Node.js implementation
│ ├── enhanced-mcp-server.js
│ ├── openfda-client.js
│ ├── package.json
│ ├── test-client.js
│ └── ...
├── PY_version/ # Python implementation
│ ├── enhanced_mcp_server.py
│ ├── drug_server.py
│ ├── drug_features.py
│ ├── ...
├── data/ # Data files (e.g., images for testing)
├── requirements.txt # Python dependencies
├── README.md # This file
└── ...
Endpoints y Herramientas de la API
Todos los endpoints se exponen como herramientas MCP y se pueden invocar a través de Claude Desktop o mediante programación. A continuación se presenta un resumen de cada endpoint para las versiones de Python y JavaScript:
Enhanced Medication Info MCP Server
| Nombre de la Herramienta | Descripción | Parámetros | Solicitud/Respuesta de Ejemplo |
|---|---|---|---|
get_medication_profile | Perfil completo del medicamento (etiqueta + escasez) | drug_identifier (str, obligatorio), identifier_type (str, predeterminado: openfda.generic_name) | { "drug_identifier_requested": "lisinopril", ... } |
search_drug_shortages | Buscar escaseces de medicamentos | search_term (str, obligatorio), limit (int, predeterminado: 10) | { "search_term": "amoxicillin", "shortage_data": {...} } |
search_drug_recalls | Buscar retiros de medicamentos | search_term (str, obligatorio), limit (int, predeterminado: 10) | { "search_term": "acetaminophen", "recall_data": {...} } |
get_drug_label_only | Solo información de etiquetado de la FDA | drug_identifier (str, obligatorio), identifier_type (str, predeterminado: openfda.generic_name) | { "drug_identifier": "lisinopril", "label_data": {...} } |
get_shortage_search_guidance | Orientación para encontrar información de escasez | drug_name (str, obligatorio) | { "drug_name": "clindamycin", "additional_search_strategies": {...} } |
analyze_drug_market_trends | Analizar escasez/tendencias del mercado | drug_name (str, obligatorio), months_back (int, predeterminado: 12) | { "drug_analyzed": "amoxicillin", "trend_data": {...} } |
batch_drug_analysis | Análisis por lotes para múltiples medicamentos | drug_list (lista de str, máx. 25), include_trends (bool, predeterminado: False) | { "batch_analysis": {...} } |
Drug Features MCP Server (solo Python)
| Nombre de la Herramienta | Descripción | Parámetros | Respuesta de Ejemplo |
|---|---|---|---|
check_drug_interactions | Verificar posibles interacciones farmacológicas | drug1 (str, obligatorio), drug2 (str, obligatorio), additional_drugs (lista, opcional) | { "interaction_analysis": {...} } |
convert_drug_names | Convertir entre nombres genéricos y de marca | drug_name (str, obligatorio), conversion_type (str: "generic", "brand", "both", predeterminado: "both") | { "name_conversion": {...} } |
get_adverse_events | Obtener informes de eventos adversos de la FDA (FAERS) | drug_name (str, obligatorio), time_period (str, predeterminado "1year"), severity_filter (str, predeterminado "all") | { "adverse_event_analysis": {...} } |
Fuentes de Datos y Documentación de la API
- API de etiquetado de medicamentos de openFDA (docs)
Endpoint:https://api.fda.gov/drug/label.json - API de escasez de medicamentos de openFDA (docs)
Endpoint:https://api.fda.gov/drug/shortages.json - API de cumplimiento/retiros de medicamentos de openFDA (docs)
Endpoint:https://api.fda.gov/drug/enforcement.json - API de FAERS (eventos adversos) de openFDA (docs)
Endpoint:https://api.fda.gov/drug/event.json - API de RxNorm (docs)
Endpoint:https://rxnav.nlm.nih.gov/REST
Solución de Problemas y Preguntas Frecuentes
- ¿MCP no funciona en Claude Desktop?
- Verifique dos veces las rutas y comandos de su archivo de configuración
- Asegúrese de que las dependencias estén instaladas (
pip install -r requirements.txtonpm install) - Reinicie Claude Desktop
- ¿Problemas con la clave API? Agregue su clave a
.env(Python) o como variable de entorno (JS) para obtener límites de velocidad más altos - ¿Versión incorrecta de Claude? Use Claude Desktop, no la web de claude.ai
- ¿Permisos? Asegúrese de que los archivos del servidor sean ejecutables
Dependencias
- Python: Consulte
requirements.txt - JavaScript: Consulte
JS_version/package.json
Licencia
Este proyecto proporciona acceso a datos públicos de la FDA a través de las APIs de openFDA. Siempre consulte a profesionales de la salud para tomar decisiones médicas.
Contribuciones
¡Las contribuciones son bienvenidas! Abra issues o pull requests para mejoras o correcciones de errores.