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 HerramientaDescripciónParámetrosSolicitud/Respuesta de Ejemplo
get_medication_profilePerfil completo del medicamento (etiqueta + escasez)drug_identifier (str, obligatorio), identifier_type (str, por defecto: openfda.generic_name){ "drug_identifier_requested": "lisinopril", ... }
search_drug_shortagesBuscar escasez de medicamentossearch_term (str, obligatorio), limit (int, por defecto: 10){ "search_term": "amoxicillin", "shortage_data": {...} }
search_drug_recallsBuscar retiros de medicamentossearch_term (str, obligatorio), limit (int, por defecto: 10){ "search_term": "acetaminophen", "recall_data": {...} }
get_drug_label_onlySolo información de etiqueta de la FDAdrug_identifier (str, obligatorio), identifier_type (str, por defecto: openfda.generic_name){ "drug_identifier": "lisinopril", "label_data": {...} }
get_shortage_search_guidanceGuía para encontrar información de escasezdrug_name (str, obligatorio){ "drug_name": "clindamycin", "additional_search_strategies": {...} }
analyze_drug_market_trendsAnalizar tendencias de escasez/mercadodrug_name (str, obligatorio), months_back (int, por defecto: 12){ "drug_analyzed": "amoxicillin", "trend_data": {...} }
batch_drug_analysisAnálisis por lotes para múltiples medicamentosdrug_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 HerramientaDescripciónParámetrosRespuesta de Ejemplo
check_drug_interactionsVerificar posibles interacciones de medicamentosdrug1 (str, obligatorio), drug2 (str, obligatorio), additional_drugs (lista, opcional){ "interaction_analysis": {...} }
convert_drug_namesConvertir entre nombres genéricos y de marcadrug_name (str, obligatorio), conversion_type (str: "generic", "brand", "both", por defecto: "both"){ "name_conversion": {...} }
get_adverse_eventsObtener 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


Solución de Problemas y Preguntas Frecuentes

  • ¿MCP no funciona en Claude Desktop?
    1. Verifica dos veces las rutas y comandos de tu archivo de configuración
    2. Asegúrate de que las dependencias estén instaladas (pip install -r requirements.txt o npm install)
    3. 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.