medical-mcp

Un servidor MCP que proporciona información médica completa consultando múltiples APIs médicas autorizadas, incluyendo FDA, WHO, PubMed, Google Scholar y RxNorm.

Documentación

🩺 Servidor MCP Médico

Lleva datos médicos confiables directamente a tu flujo de trabajo de IA. Un servidor local para acceso privado y gratuito a FDA, OMS, PubMed, RxNorm, Semantic Scholar y Google Scholar. Sin claves API. Sin fugas de datos.

Un servidor MCP (Protocolo de Contexto de Modelo) que lleva información médica autorizada a entornos de codificación de IA como Cursor y Claude Desktop.

medical-mcp MCP server

Trust Score

¿Por qué usar Medical MCP?

  • 🔒 Tus datos nunca salen – Se ejecuta 100% localmente; sin seguimiento, sin registros, sin nube
  • 🆓 Sin claves API – Funciona de inmediato, cero configuración
  • 🏥 Fuentes autorizadas – FDA, TGA, Health Canada, EMA, DailyMed, OMS, PubMed, RxNorm, ClinicalTrials.gov
  • ⚡ Configuración fácil – Instalación con un clic en Cursor o configuración manual simple
  • 🔬 Integral – Información de medicamentos, estadísticas de salud, literatura médica, guías clínicas, fuentes pediátricas
  • 🛡️ Resiliente – Interruptores de circuito, reintentos con retroceso, limitación de velocidad y respaldos automáticos
  • 📊 Clasificación por evidencia – Resultados etiquetados con tipo de estudio y nivel de evidencia (Metaanálisis → Reporte de caso). Las etiquetas son rótulos automáticos del título y resumen, no grados verificados de forma independiente.
  • 🏥 Monitoreo de salud – Herramienta de verificación de salud integrada para diagnosticar disponibilidad de fuentes

Novedades en v2.0

  • Capa de resiliencia – Interruptores de circuito por fuente, reintentos con retroceso exponencial + fluctuación, limitadores de velocidad por fuente tipo token bucket
  • Búsqueda web Monid – Scholar, AAP y HTML de PMC pasan por Monid TinyFish (búsqueda/extracción estilo Tavily). Semantic Scholar es el respaldo sin clave
  • Clasificación de evidencia – Resultados de PubMed y bases de datos múltiples etiquetados con tipo de estudio (Revisión sistemática, ECA, Cohorte, Reporte de caso, etc.) y grado de evidencia (I–V). Estas etiquetas son rótulos automáticos del título y resumen, no grados verificados de forma independiente.
  • Validación de respuestas – Los esquemas Zod validan todas las respuestas de API ascendentes, registrando advertencias sobre desviaciones de esquema sin interrumpir
  • Soporte de clave API NCBI – La variable de entorno opcional NCBI_API_KEY aumenta PubMed de 3 req/seg a 10 req/seg
  • Herramienta de verificación de salud – health-check verifica todas las fuentes ascendentes e informa latencia, estados de interruptores de circuito, estado de limitadores de velocidad y salud de caché
  • Registro estructurado – Registro estructurado por niveles (DEBUG/INFO/WARN/ERROR) con seguimiento de fuente y tiempos para cada llamada API
  • Tiempos de espera de solicitudes – Todas las llamadas ascendentes tienen tiempos de espera explícitos de respuesta/plazo para evitar bloqueos

Inicio rápido

Instalar en Cursor (Recomendado):

🔗 Instalar en Cursor

O instalar manualmente:

npm install -g medical-mcp
# Or from source:
git clone https://github.com/JamesANZ/medical-mcp.git
cd medical-mcp && npm install && npm run build

Características

💊 Información de medicamentos

  • search-drugs – Busca en FDA, DailyMed, TGA (Australia), Health Canada y EMA. Filtra con countries (US, AU, CA, EU). Los códigos no admitidos se rechazan en lugar de devolverse como resultados regulatorios vacíos.
  • search-drug-nomenclature – Nombres de medicamentos estandarizados mediante RxNorm (limit tiene un valor predeterminado de 25)
  • search-drug-safety – Eventos adversos de FDA FAERS (con IDs de reporte), retiros del mercado y escasez

📊 Estadísticas de salud

  • get-health-statistics – Datos del Observatorio Global de Salud de la OMS (esperanza de vida, mortalidad, prevalencia de enfermedades)

🔬 Literatura médica

  • search-medical-literature – Busca en más de 30 millones de artículos de PubMed (con clasificación de evidencia). El question o rerank opcional reordena esos resultados para que los artículos que realmente responden la pregunta aparezcan por encima de los que solo comparten palabras clave.
  • rank-search-hits – Misma reclasificación para una lista que ya tienes (título + resumen). Solo clasificación de recuperación, no diagnóstico ni consejo.
  • get-article-details – Información detallada del artículo por PMID
  • search-google-scholar – Artículos académicos mediante Monid TinyFish (research_paper) cuando MONID_API_KEY está configurado; de lo contrario, Semantic Scholar
  • search-medical-journals – Revistas principales (NEJM, JAMA, Lancet, BMJ, Nature Medicine)

🏥 Herramientas clínicas

  • search-clinical-guidelines – Recomendaciones de práctica de organizaciones médicas
  • search-clinical-trials – ClinicalTrials.gov
  • list-sources – Catálogo completo de adaptadores de registro y fuentes de herramientas dedicadas (OMS, PubMed, RxNorm, Scholar, AAP), incluyendo qué herramienta MCP llega a cada una. Esto no es el search-drugs de cinco reguladores.

👶 Fuentes pediátricas

  • search-pediatric-guidelines – Informes de políticas/clínicos de AAP mediante PubMed, además de Bright Futures. Los resultados web fuera del dominio se descartan; las etiquetas provienen de la página, no de la búsqueda ejecutada.
  • search-pediatric-literature – Investigación de las principales revistas pediátricas. question / rerank opcionales como en literatura médica.
  • search-pediatric-drugs – Medicamentos con etiquetado pediátrico, NDC, fabricante y URL de DailyMed

🛡️ Confiabilidad y monitoreo

  • health-check – Verifica todas las fuentes ascendentes, informa latencia/estado, estados de interruptores de circuito y salud de caché
  • get-cache-stats – Ver estadísticas de caché (tasa de aciertos, uso de memoria, cantidad de entradas)

Instalación

Cursor (Un clic)

Haz clic en el enlace de instalación anterior o usa:

cursor://anysphere.cursor-deeplink/mcp/install?name=medical-mcp&config=eyJtZWRpY2FsLW1jcCI6eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIm1lZGljYWwtbWNwIl19fQ==

Instalación manual

Requisitos: Node.js 18+ y npm

git clone https://github.com/JamesANZ/medical-mcp.git
cd medical-mcp
npm install
npm run build
npm start

Claude Desktop

Agrega a claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "medical-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/medical-mcp/build/index.js"],
      "env": {
        "NCBI_API_KEY": "your_optional_key_here"
      }
    }
  }
}

Reinicia Claude Desktop después de la configuración.

Ejemplos de uso

Buscar información de medicamentos

{
  "tool": "search-drugs",
  "arguments": { "query": "Tylenol", "limit": 5 }
}

Buscar literatura médica (con clasificación de evidencia)

Los resultados ahora incluyen etiquetas de evidencia:

1. Efficacy of COVID-19 Treatments: A Meta-Analysis
   Evidence: [Systematic Review / Meta-Analysis • tool grade I]
   Authors: Smith J, Jones K...

2. Randomized Trial of Remdesivir in Adults
   Evidence: [Randomized Controlled Trial • tool grade II]
   Authors: Chen L, Wang M...

Ejecutar verificación de salud

{ "tool": "health-check", "arguments": {} }

Devuelve:

✅ FDA: healthy (234ms)
✅ PubMed: healthy (156ms)
✅ WHO: healthy (890ms)
✅ RxNorm: healthy (312ms)
✅ ClinicalTrials: healthy (445ms)
✅ SemanticScholar: healthy (189ms)

NCBI API Key: ✅ Configured (10 req/sec PubMed)

Arquitectura

Pila de resiliencia

Cada llamada API pasa por una pila de resiliencia de tres capas:

Request → Rate Limiter → Circuit Breaker → Retry (with backoff) → Upstream API
  • Limitador de velocidad – Token bucket por fuente evita exceder los límites de API (PubMed: 3/seg sin clave, 10/seg con; FDA: 4/seg; Google Scholar: 0.2/seg)
  • Interruptor de circuito – Después de 3 fallos consecutivos, el circuito se abre durante 60s, evitando fallos en cascada. Transiciones: CERRADO → ABIERTO → MEDIO ABIERTO → CERRADO
  • Reintento – Retroceso exponencial con fluctuación completa en fallos transitorios (429, 5xx, errores de red). Máximo 2 reintentos

Clasificación de evidencia

Los resultados de PubMed y bases de datos múltiples se clasifican automáticamente:

GradoTipo de estudioEjemplos
IRevisión sistemática / MetaanálisisRevisiones Cochrane, estudios PRISMA
IIEnsayo controlado aleatorizadoEnsayos doble ciego controlados con placebo
IIIEstudio de cohorte / caso-controlProspectivos, retrospectivos, basados en población
IVReporte de caso / serie de casosPresentaciones de casos clínicos
VOpinión de experto / EditorialComentarios, perspectivas, revisiones narrativas

Estas etiquetas son rótulos automáticos del título y resumen, no grados verificados de forma independiente.

Respaldo automático

Cuando MONID_API_KEY está configurado, la búsqueda de Scholar/AAP y la extracción de HTML de PMC pasan por Monid TinyFish. Sin clave, Scholar recurre a la API de Semantic Scholar — gratuita, bien estructurada, 100 req/seg, sin necesidad de clave API.

Validación de respuestas

Todas las respuestas de API ascendentes se validan contra esquemas Zod. Si una fuente cambia el formato de su respuesta API, el servidor registra una advertencia pero continúa operando con datos sin procesar — sin fallos, solo alertas.

Fuentes de datos

FuenteCoberturaFrecuencia de actualizaciónResiliencia
FDAEtiquetas de medicamentos aprobados en EE. UU.Tiempo realInterruptor de circuito + reintento
DailyMedEtiquetas de productos estructurados de EE. UU.DiariaInterruptor de circuito + reintento
TGA ARTGRegistro Australiano de Bienes TerapéuticosTiempo realInterruptor de circuito + reintento
Health Canada DPDMedicamentos comercializados/aprobados en CanadáTiempo realInterruptor de circuito + reintento
EMAMedicamentos autorizados centralmente en la UEJSON dos veces al díaCaché en memoria + reintento
FDA FAERS / retiros / escasezSeñales de seguridad de EE. UU.Tiempo realInterruptor de circuito + reintento
OMSEstadísticas de salud global (194 países)AnualInterruptor de circuito + reintento
PubMedMás de 30 millones de citas médicasDiariaInterruptor de circuito + reintento + clave NCBI
RxNormNomenclatura estandarizada de medicamentos (EE. UU.)SemanalInterruptor de circuito + reintento
TinyFish vía MonidArtículos de investigación + web con alcance de dominioTiempo realMONID_API_KEY opcional
Semantic ScholarMás de 200 millones de artículos con datos de citasTiempo realInterruptor de circuito + reintento
AAPBright Futures y declaraciones de políticasPeriódicaDegradación gradual
Revistas pediátricasPrincipales revistas pediátricasDiariaInterruptor de circuito + reintento
ClinicalTrials.govEnsayos intervencionales y observacionalesTiempo realInterruptor de circuito + reintento

Configuración

Variables de entorno

Rendimiento y confiabilidad:

VariablePredeterminadoDescripción
NCBI_API_KEY(ninguno)Clave API gratuita de PubMed — 3x de rendimiento. Obtén una en NCBI
MONID_API_KEY(ninguno)Opcional. Cuando se configura, Scholar/AAP/HTML de PMC usan la búsqueda y extracción de TinyFish de Monid (raspador web estilo Tavily). Obtén una clave en Monid
TINYFISH_API_KEY(ninguno)Respaldo opcional si llamas a TinyFish directamente en lugar de a través de Monid.
TYPESAFE_API_KEY(ninguno)Opcional. Necesario para reclasificar resultados de literatura con JEV (jev-1.13.0). Sin él, la búsqueda funciona como antes. Obtén una clave en TypeSafe
LOG_LEVELINFONivel de registro: DEBUG, INFO, WARN, ERROR, SILENT

Caché:

VariableDefaultDescription
CACHE_ENABLEDtrueHabilitar/deshabilitar caché
CACHE_MAX_SIZE1000Máximo de entradas de caché
CACHE_TTL_FDA86400TTL de FDA en segundos (24h)
CACHE_TTL_PUBMED3600TTL de PubMed (1h)
CACHE_TTL_WHO604800TTL de WHO (7d)
CACHE_TTL_RXNORM2592000TTL de RxNorm (30d)
CACHE_TTL_GOOGLE_SCHOLAR3600TTL de Google Scholar (1h)
CACHE_TTL_BRIGHT_FUTURES2592000TTL de Bright Futures (30d)
CACHE_TTL_AAP_POLICY604800TTL de AAP Policy (7d)
CACHE_TTL_REGULATORS86400TTL de TGA/EMA/Health Canada
CACHE_TTL_SAFETY3600TTL de FAERS/retiros/escasez
CACHE_TTL_TRIALS3600TTL de búsqueda de ensayos clínicos
CACHE_CLEANUP_INTERVAL300000Intervalo de limpieza en ms (5min)

Deduplicación:

VariableDefaultDescription
DEDUP_ENABLEDtrueHabilitar/deshabilitar deduplicación entre fuentes
DEDUP_SIMILARITY_THRESHOLD0.9Umbral de coincidencia difusa de títulos (0.0–1.0)
DEDUP_LOG_REMOVEDfalseRegistrar duplicados eliminados

Rendimiento: Las respuestas en caché se devuelven en <10ms frente a 800–1500ms para llamadas API. Tasa de aciertos esperada: 60%+ para consultas comunes.

Seguridad y Privacidad

  • ✅ Solo localhost – El servidor se ejecuta localmente, sin acceso externo
  • ✅ Sin almacenamiento de datos – Todas las consultas son en tiempo real, nada se guarda en disco
  • ✅ Aislamiento de procesos – Los datos médicos permanecen en tu máquina
  • ✅ Sin necesidad de claves API – Funciona sin credenciales (las claves de NCBI y Monid son opcionales)

Detalles Técnicos

Construido con: Node.js, TypeScript, MCP SDK Dependencias: @modelcontextprotocol/sdk, superagent, zod, express, cors Plataformas: macOS, Windows, Linux

Estructura del código fuente:

src/
├── index.ts                    # MCP tool definitions
├── utils.ts                    # Core API functions + formatters
├── constants.ts                # API URLs, config constants
├── types.ts                    # TypeScript types
├── logger.ts                   # Structured leveled logging
├── rank/                       # Optional JEV post-retrieval ranker (question vs abstract)
│   ├── policy.ts               # Keep / demote / drop — no HTTP
│   └── jev-client.ts           # TypeSafe System One client (jev-1.13.0)
├── cache/
│   ├── config.ts               # TTL policies, env var support
│   └── manager.ts              # In-memory LRU cache
├── resilience/
│   ├── index.ts                # Composed resilientCall()
│   ├── circuit-breaker.ts      # Per-source circuit breaker
│   ├── retry.ts                # Exponential backoff + jitter
│   └── rate-limiter.ts         # Token bucket rate limiter
├── validation/
│   └── schemas.ts              # Zod schemas for API responses
├── sources/                    # Country/source registry + adapters
│   ├── adapters/               # FDA, TGA, Health Canada, EMA, DailyMed, FAERS, trials, TinyFish
│   └── ...
└── utils/
    ├── deduplication.ts         # Cross-source paper dedup
    ├── evidence-grading.ts      # Study type classification
    └── semantic-scholar.ts      # Semantic Scholar API client

Aviso Médico

⚠️ Importante: Esta herramienta proporciona información de fuentes autorizadas pero no debe reemplazar el consejo médico profesional, el diagnóstico o el tratamiento. Siempre consulta a profesionales de la salud calificados para decisiones médicas.

Contribuciones

⭐ Si este proyecto te resulta útil, ¡dale una estrella en GitHub! ⭐

¡Las contribuciones son bienvenidas! Por favor, abre un issue o envía un pull request.

Licencia

Licencia MIT – consulta LICENSE.md para más detalles.

Soporte

Si encuentras útil este proyecto, considera apoyarlo:

⚡ Red Lightning

lnbc1pjhhsqepp5mjgwnvg0z53shm22hfe9us289lnaqkwv8rn2s0rtekg5vvj56xnqdqqcqzzsxqyz5vqsp5gu6vh9hyp94c7t3tkpqrp2r059t4vrw7ps78a4n0a2u52678c7yq9qyyssq7zcferywka50wcy75skjfrdrk930cuyx24rg55cwfuzxs49rc9c53mpz6zug5y2544pt8y9jflnq0ltlha26ed846jh0y7n4gm8jd3qqaautqa

₿ Bitcoin: bc1ptzvr93pn959xq4et6sqzpfnkk2args22ewv5u2th4ps7hshfaqrshe0xtp

Ξ Ethereum/EVM: 0x42ea529282DDE0AA87B42d9E83316eb23FE62c3f