MEVA Health AI MCP Server
MEVA
Agente de Verificación de Evidencia Médica
Qué hace: MEVA evalúa si las afirmaciones de registros médicos generadas por IA están fundamentadas en evidencia FHIR sintética recuperada, utilizando un verificador determinista (no IA) — sin diagnóstico, sin consejo de tratamiento, sin datos reales de pacientes.
🧪 Sandbox en Vivo
Prueba MEVA en tu navegador: sin Ollama, sin clave de API, sin instalación.
▶ Abrir Sandbox en Vivo
Solo datos sintéticos — 21 pacientes ficticios generados con Synthea
Verificador determinista — cada resultado proviene de la coincidencia de evidencia en Python puro, no de la opinión de un modelo
Ningún modelo de IA se ejecuta en el sandbox público — tú construyes la afirmación y MEVA la verifica contra datos reales registrados (sintéticos)
Prueba Sandbox en Vivo · Inicio Rápido · Metodología de Evaluación Comparativa · Contribuir
MEVA no es un chatbot médico, una IA de diagnóstico, una herramienta de apoyo a la decisión clínica, un sistema de recomendación de tratamiento ni un dispositivo médico. No está validado clínicamente. Todos los datos de pacientes son 100 % sintéticos. Consulta Alcance y seguridad a continuación y
docs/safety-and-scope.mdpara la declaración completa.
Related MCP server: MediLinkAI
Ve a MEVA en acción
Capturas de pantalla del sandbox alojado en vivo — solo datos sintéticos, no es consejo médico, y ningún modelo de IA se ejecuta en el sandbox alojado (cada resultado proviene del verificador determinista de MEVA, no de la opinión de un modelo).
Modo Guiado

Modo Guiado: elige un paciente ficticio y verifica una afirmación con un flujo de trabajo simple en lenguaje natural.
Verificación respaldada por evidencia

MEVA verifica la afirmación contra la evidencia FHIR sintética registrada y devuelve SUPPORTED, CONTRADICTED, UNSUPPORTED o UNVERIFIABLE.
Modo Avanzado

Modo Avanzado: explorador técnico de evidencia y controles estructurados de afirmaciones para desarrolladores, investigadores y colaboradores.
Por qué existe MEVA
Los agentes de IA locales pueden llamar a herramientas, recuperar datos reales y generar una «respuesta» estructurada, pero nada obliga a que esa respuesta estructurada coincida realmente con la evidencia que el agente recuperó. MEVA mide esa brecha directamente, con un verificador que nunca confía en el autoinforme de un modelo sobre su propia corrección.
Arquitectura
flowchart TD
A[Synthetic Synthea FHIR data] --> B[MEVA FHIR layer]
B --> C[MCP tools]
C --> D[Local AI model - via Ollama]
D --> E[Natural-language answer]
E --> F[Claim extraction]
F --> G[Deterministic evidence verifier]
G --> H[Benchmark / report]MEVA admite dos modos de evaluación, reportados por separado y nunca combinados en una sola puntuación (ver docs/decoupled-evaluation.md):
END_TO_END — el modelo evaluado responde una pregunta Y codifica su propia respuesta en el esquema estructurado
MedicalClaimde MEVA, en una sola pasada.DECOUPLED — el modelo evaluado responde solo en prosa; un modelo extractor fijo separado convierte esa prosa guardada en afirmaciones estructuradas, que se verifican de la misma manera. Esto aísla «¿sabía el modelo la respuesta correcta?» de «¿formateó el modelo correctamente el JSON?»
En ambos modos, el paso final de verificación —comparar una afirmación con evidencia real— es siempre Python puro y determinista. Ningún LLM juzga su propia corrección (ni la de otro modelo).
Inicio rápido
git clone https://github.com/Tanz2024/meva-health-ai
cd meva-health-ai
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
pytestMEVA está diseñado para ejecutarse desde una copia clonada de este repositorio (como se indicó antes:
git clonee instalación editable), no como un paquete independiente instalado desde otro lugar. Sus fixtures FHIR sintéticos (data/synthetic/synthea/) y definiciones de evaluación (benchmarks/) se leen desde rutas relativas al repositorio, no se empaquetan como datos de paquete instalable: unpip installde una wheel/sdist compilada fuera de un checkout del repositorio no tendrá datos de pacientes disponibles. Este es el alcance actual e intencionado (un repositorio de investigación/ingeniería, no una biblioteca distribuida) — verdocs/publishing-checklist.mdsi esto cambia en el futuro.
Esto ejecuta toda la suite de pruebas sin conexión (no se requiere modelo de IA — ver Qué se ejecuta sin IA).
Opcional — IA local:
ollama pull qwen3:4b
python3 examples/verify_local.pyConsulta examples/ para más scripts ejecutables y docs/local-ai.md para ver cómo MEVA se comunica con Ollama.
Qué se ejecuta sin IA (no se requiere Ollama)
La mayor parte de MEVA funciona sin ningún modelo de IA:
Análisis FHIR (
src/meva/fhir/)Verificación determinista de evidencia (
src/meva/verification/)Carga y validación de conjuntos de datos de evaluación (
meva.benchmark.validator)La suite completa de pruebas sin conexión (
pytest)Los ejemplos de desafío al verificador (
examples/verify_contradiction_demo.py) — estos prueban la lógica de verificación de MEVA con una afirmación incorrecta escrita a mano, sin involucrar un modelo en vivo
Ollama solo se necesita cuando se ejecuta inferencia local de modelos (examples/ask_local.py, examples/chat_local.py) o extracción de afirmaciones asistida por modelos (examples/run_decoupled_pilot.py, run_decoupled_full.py, run_extractor_fidelity.py).
Datos sintéticos
Los fixtures públicos de pacientes de MEVA (data/synthetic/synthea/patient-01.json hasta patient-21.json) se generan localmente por este proyecto, utilizando el generador Synthea oficial con licencia Apache-2.0 (fijado en la etiqueta v3.4.0), con una semilla fija, documentada y reproducible. No se incluyen datos reales de pacientes en ningún lugar. Los detalles completos de generación (comando exacto, semilla y hashes SHA-256 por archivo) están en data/synthetic/synthea/PROVENANCE.md. Consulta docs/synthetic-data.md para el panorama completo, incluyendo por qué se reemplazó un conjunto anterior de 18 pacientes (utilizado hasta la Etapa 8A) — ese conjunto anterior se había copiado de un repositorio sin licencia declarada y ya no forma parte del conjunto de datos público (ver docs/historical-sample-data-provenance.md).
Resultados de evaluación comparativa
MEVA tiene dos conjuntos de datos de evaluación comparativa registrados, y no deben confundirse:
CONJUNTO DE DATOS PÚBLICO REPRODUCIBLE: benchmark v0.4 — construido enteramente con los fixtures Apache-2.0 generados localmente mencionados anteriormente (53 casos, 16 pacientes únicos; ver benchmarks/v0.4/manifest.json). Los resultados de comparación de modelos v0.4 están pendientes — aún no se ha realizado ninguna ejecución de qwen3:4b/llama3.2:3b contra v0.4.
RESULTADO HISTÓRICO DE DESARROLLO: benchmark v0.3 — resultados completos de qwen3:4b vs llama3.2:3b a continuación. Esto se midió contra el conjunto de pacientes anterior, ya eliminado (ver arriba) — sigue siendo un registro histórico válido de desarrollo de la metodología y los hallazgos, pero no es un resultado sobre el conjunto de datos público actual v0.4, y no deben compararse directamente. Informe completo: docs/baseline-results-v0.3.md (los números a continuación usan la fórmula corregida de cobertura verificable de la Etapa 7C2.1 — consulta ese documento para el historial de corrección; los números originales sin corregir también se divulgan allí, no se ocultan).
No se declara ningún ganador. Lee la puntuación de fundamentación junto con la cobertura verificable: una puntuación de fundamentación alta calculada sobre muy pocas afirmaciones comprobables parece mejor de lo que es.
Métricas de recuperación + salida estructurada END_TO_END (v0.3, histórico)
qwen3:4b | llama3.2:3b | |
Recall de herramientas | 1.000 | 0.981 |
Precisión de herramientas | 1.000 | 1.000 |
Coincidencia exacta de herramientas | 1.000 | 0.962 |
Recall de evidencia | 0.810 | 0.738 |
Validez estructurada E2E | 0.917 | 0.087 |
Cobertura verificable E2E | 0.656 | 0.120 |
Fundamentación E2E | 83% | 70% |
Evaluación DECOUPLED (v0.3, histórico; extractor fijo separado qwen3:4b)
qwen3:4b | llama3.2:3b | |
Cobertura verificable DECOUPLED | 0.990 | 0.987 |
Fundamentación DECOUPLED | 89% | 80% |
La evaluación DECOUPLED utiliza qwen3:4b como extractor fijo de afirmaciones para las respuestas guardadas de ambos modelos, incluidas las del propio qwen3:4b — esto introduce un posible sesgo específico del extractor, documentado explícitamente en docs/decoupled-evaluation.md. END_TO_END y DECOUPLED responden preguntas diferentes y nunca deben leerse como «el modelo mejoró.»
Validación del extractor — el extractor no es perfecto
Desarrollo (10 fixtures) | Holdout (14 fixtures no vistos) | |
Precisión | 1.000 | 0.929 |
Recall | 1.000 | 0.813 |
F1 | 1.000 | 0.867 |
Coincidencia exacta del conjunto de afirmaciones | 1.000 | 0.857 |
Preservación de afirmaciones negativas | 1.000 | 1.000 |
Exactitud de atributos | 1.000 | 0.750 |
No leas los números de cobertura DECOUPLED del ~99 % anteriores como «99 % de precisión de extracción.» La cobertura mide cuánto de la salida del extractor pudo verificar el verificador; los números de holdout aquí miden si esa salida realmente coincide con lo que dijo la respuesta fuente.
Hallazgo sobre la categoría de observación
Ambos modelos obtuvieron puntuaciones inusualmente bajas en las preguntas de la categoría de observación: qwen3:4b 20 %, llama3.2:3b 0 % de fundamentación (n=10 casos cada uno). La Etapa 7D2.2 auditó de forma independiente cada caso de observación contra los datos FHIR reales de MEVA y la capa de herramientas, y no encontró ningún error de infraestructura o evaluación que invalide estos resultados: 18 de 20 pares modelo-caso son errores genuinos de fundamentación del modelo. Auditoría completa: docs/observation-audit.md. Esto describe el comportamiento del benchmark, no el rendimiento clínico.
Prueba MEVA (solo verificación determinista, sin modelo de IA)
Cuatro formas de explorar el verificador determinista de MEVA con los 21 pacientes sintéticos públicos v0.4 — ninguna requiere un modelo de IA:
Sandbox público alojado (sin instalación): Abrir Sandbox en Vivo
Sandbox local en navegador:
pip install -e ".[playground]"
streamlit run streamlit_app.pyEntorno de pruebas CLI local:
python3 examples/playground.py demo
python3 examples/playground.py list-patients
python3 examples/playground.py verify --patient-id <id> --category allergy --assertion present --value "Peanut"Modo IA local completo (opcional, requiere Ollama — ver Qué se ejecuta sin IA a continuación).
Los cuatro comparten la misma capa de servicio (meva.playground) y llaman al verificador real y sin modificar de MEVA: tú mismo formulas una afirmación (categoría/aseveración/valor); MEVA la verifica contra los datos reales registrados y devuelve SUPPORTED/CONTRADICTED/UNSUPPORTED/UNVERIFIABLE con procedencia completa. Detalles completos, incluyendo en qué se diferencian los cuatro modos: docs/playground.md.
Consulta Ve a MEVA en acción cerca del inicio de este README para ver capturas de pantalla del sandbox alojado (Modo Guiado, un resultado de verificación y Modo Avanzado).
Documentación
Documento | Contenido |
Qué es MEVA y qué no es — lee esto primero | |
Procedencia de los datos sintéticos de pacientes | |
La capa de herramientas de MCP | |
Cómo se comunica MEVA con los modelos locales de Ollama | |
El verificador determinista | |
Qué garantizan y qué no los ajustes de reproducibilidad | |
El motor de benchmarks | |
Construcción y validación del conjunto de datos | |
Metodología de comparación de múltiples modelos | |
Por qué existen tanto END_TO_END como DECOUPLED | |
El contrato del esquema de extracción de afirmaciones | |
La auditoría de coherencia de las categorías de observación | |
Informe completo del benchmark v0.3 (histórico) | |
Procedencia de la generación de fixtures públicos | |
Por qué y cómo se reemplazó el antiguo conjunto de pacientes | |
El playground público del verificador determinista (CLI) |
Alcance y seguridad
MEVA usa solo datos sintéticos de pacientes (generados con Synthea) — no se
incluyen ni deben jamás contribuirse datos reales de pacientes. No realiza ningún
diagnóstico ni recomendación de tratamiento y no está clínicamente
validado. Sus métricas (Evidence Grounding Score, Verifiable Claim
Coverage, etc.) son métricas de benchmark de ingeniería/investigación —
miden si las afirmaciones de un modelo coinciden con la evidencia recuperada, no la
corrección médica, la precisión diagnóstica ni la seguridad del paciente. Toda la inferencia de IA es
solo local, a través de Ollama — MEVA nunca llama a una API de IA de pago o en la nube.
Declaración completa: docs/safety-and-scope.md.
Contribución
Elige un issue (o propón uno)
Haz un fork del repositorio
Crea una rama
Realiza tu cambio
Ejecuta
pytestAbre una pull request
Instrucciones completas de configuración, detalles de pruebas y cómo añadir soporte para FHIR, casos de benchmark
(solo datos sintéticos), pruebas del verificador o adaptadores de modelo:
CONTRIBUTING.md. Lee también CODE_OF_CONDUCT.md.
¿Buscas una primera contribución?
Consulta los issues abiertos de GitHub: https://github.com/Tanz2024/meva-health-ai/issues
Un buen punto de partida es un issue etiquetado como good first issue o help wanted.
Consulta docs/contributor-issues.md para conocer las áreas de contribución adicionales propuestas
y CONTRIBUTING.md para las pautas de configuración y envío.
Licencia
El código fuente de MEVA y los datos sintéticos generados localmente están licenciados bajo
la Apache License 2.0. Las dependencias y los modelos de terceros tienen
sus propias licencias; consulta THIRD_PARTY_NOTICES.md.
Una cuestión anterior de licencia de redistribución pública (un antiguo conjunto de pacientes
copiado de un repositorio sin licencia declarada) se resolvió en la etapa
8A.1 reemplazando esos datos con fixtures locales generados con Apache-2.0 —
consulta docs/historical-sample-data-provenance.md para conocer el historial completo.
Citación
Consulta CITATION.cff para ver los metadatos de citación de MEVA v0.1.0.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA clean-room SHARP-on-MCP compliant FHIR R4 MCP server that enables AI agents to interact with any FHIR R4 endpoint using SHARP context headers, without server-side OAuth. It provides clinical tools, lab results, imaging, and interactive MCP-UI dashboards.MIT
- Alicense-qualityDmaintenanceClinical decision-support MCP server that lets AI agents reason over live FHIR patient data for medication review, appointment scheduling, and care gap identification.7,813MIT

Agent-Townofficial
Alicense-qualityCmaintenanceA neutral verification court for AI tools that ranks MCP servers by executing them against ground truth and recording results. Enables agents to consult execution records, contribute verdicts, and challenge claims.Apache 2.0- AlicenseAqualityBmaintenanceA Claude-compatible MCP server that exposes health-domain tools over 100% synthetic data, built with security and compliance in mind.4MIT
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Deterministic fact verification for AI agents — checksums & curated data, not guesses.
Read-only MCP over an agentic SLR workspace with per-claim citation verification
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tanz2024/meva-health-ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server