Certus
Proporciona información médica y de medicamentos en tiempo real utilizando la API de openFDA.
Documentación
Certus
Un servidor Model Context Protocol (MCP) listo para producción para información médica y de medicamentos autoritativa y en tiempo real. Certus se integra con Claude Desktop y proporciona acceso en vivo a datos de medicamentos de la FDA, incluyendo escaseces, retiros y etiquetado, a través de las APIs de openFDA.
Versiones del Proyecto
Este proyecto soporta implementaciones tanto en Python como en JavaScript de los servidores MCP. Puedes usar cualquiera de las versiones según tu 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)
Crea un archivo .env para tu clave de API de OpenFDA (opcional, mejora los límites de tasa):
OPENFDA_API_KEY=your_api_key_here
Obtén una clave de API gratuita en: https://open.fda.gov/apis/authentication/
Pruebas
Prueba el cliente RxNorm:
python3 drug_features.py
Prueba el cliente OpenFDA:
python3 openfda_client.py
Integración con Claude Desktop (Python)
Edita tu 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)
Establece tu clave de API de OpenFDA (opcional, mejora los límites de tasa):
export OPENFDA_API_KEY="your_api_key_here"
Obtén una clave de API gratuita en: https://open.fda.gov/apis/authentication/
Pruebas
Ejecuta el cliente de prueba:
npm test
# or
node test-client.js
Integración con Claude Desktop (JavaScript)
Edita tu 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"
}
}
}
}
Características (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: retiros de medicamentos actuales e históricos de la base de datos de cumplimiento de la FDA
- Búsqueda solo de etiquetas: recupera solo 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: analiza patrones de escasez y riesgo para un medicamento
- Análisis por lotes: evalúa escaseces, retiros y riesgo para 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 llamar a través de Claude Desktop o programáticamente. A continuación se muestra un resumen de cada endpoint para las versiones de Python y JavaScript:
Servidor MCP de Información Mejorada de Medicamentos
| 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, por defecto: openfda.generic_name) | { "drug_identifier_requested": "lisinopril", ... } |
search_drug_shortages | Buscar escasez de medicamentos | search_term (str, obligatorio), limit (int, por defecto: 10) | { "search_term": "amoxicillin", "shortage_data": {...} } |
search_drug_recalls | Buscar retiros de medicamentos | search_term (str, obligatorio), limit (int, por defecto: 10) | { "search_term": "acetaminophen", "recall_data": {...} } |
get_drug_label_only | Solo información de etiqueta de la FDA | drug_identifier (str, obligatorio), identifier_type (str, por defecto: openfda.generic_name) | { "drug_identifier": "lisinopril", "label_data": {...} } |
get_shortage_search_guidance | Guía para encontrar información de escasez | drug_name (str, obligatorio) | { "drug_name": "clindamycin", "additional_search_strategies": {...} } |
analyze_drug_market_trends | Analizar tendencias de escasez/mercado | drug_name (str, obligatorio), months_back (int, por defecto: 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, por defecto: False) | { "batch_analysis": {...} } |
Servidor MCP de Características de Medicamentos (solo Python)
| Nombre de la Herramienta | Descripción | Parámetros | Respuesta de Ejemplo |
|---|---|---|---|
check_drug_interactions | Verificar posibles interacciones de medicamentos | 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", por defecto: "both") | { "name_conversion": {...} } |
get_adverse_events | Obtener informes de eventos adversos de la FDA (FAERS) | drug_name (str, obligatorio), time_period (str, por defecto "1year"), severity_filter (str, por defecto "all") | { "adverse_event_analysis": {...} } |
Fuentes de Datos y Documentación de la API
- openFDA Drug Label API (documentación)
Endpoint:https://api.fda.gov/drug/label.json - openFDA Drug Shortages API (documentación)
Endpoint:https://api.fda.gov/drug/shortages.json - openFDA Drug Enforcement/Recalls API (documentación)
Endpoint:https://api.fda.gov/drug/enforcement.json - openFDA FAERS (Adverse Events) API (documentación)
Endpoint:https://api.fda.gov/drug/event.json - RxNorm API (documentación)
Endpoint:https://rxnav.nlm.nih.gov/REST
Solución de Problemas y Preguntas Frecuentes
- ¿MCP no funciona en Claude Desktop?
- Verifica dos veces las rutas y comandos de tu archivo de configuración
- Asegúrate de que las dependencias estén instaladas (
pip install -r requirements.txtonpm install) - Reinicia Claude Desktop
- ¿Problemas con la clave de API? Agrega tu clave a
.env(Python) o como variable de entorno (JS) para límites de tasa más altos - ¿Versión incorrecta de Claude? Usa Claude Desktop, no la web de claude.ai
- ¿Permisos? Asegúrate de que los archivos del servidor sean ejecutables
Dependencias
- Python: Ver
requirements.txt - JavaScript: Ver
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 consulta a profesionales de la salud para decisiones médicas.
Contribuciones
¡Las contribuciones son bienvenidas! Por favor, abre issues o pull requests para mejoras o correcciones de errores.