Skip to main content
Glama

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.md para 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

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

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

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 MedicalClaim de 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 .

pytest

MEVA está diseñado para ejecutarse desde una copia clonada de este repositorio (como se indicó antes: git clone e 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: un pip install de 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) — ver docs/publishing-checklist.md si 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.py

Consulta 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.py

Entorno 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

docs/safety-and-scope.md

Qué es MEVA y qué no es — lee esto primero

docs/synthetic-data.md

Procedencia de los datos sintéticos de pacientes

docs/mcp-server.md

La capa de herramientas de MCP

docs/local-ai.md

Cómo se comunica MEVA con los modelos locales de Ollama

docs/evidence-verification.md

El verificador determinista

docs/reproducibility.md

Qué garantizan y qué no los ajustes de reproducibilidad

docs/benchmarking.md

El motor de benchmarks

docs/benchmark-dataset.md

Construcción y validación del conjunto de datos

docs/model-comparison.md

Metodología de comparación de múltiples modelos

docs/decoupled-evaluation.md

Por qué existen tanto END_TO_END como DECOUPLED

docs/claim-extraction-contract.md

El contrato del esquema de extracción de afirmaciones

docs/observation-audit.md

La auditoría de coherencia de las categorías de observación

docs/baseline-results-v0.3.md

Informe completo del benchmark v0.3 (histórico)

data/synthetic/synthea/PROVENANCE.md

Procedencia de la generación de fixtures públicos

docs/historical-sample-data-provenance.md

Por qué y cómo se reemplazó el antiguo conjunto de pacientes

docs/playground.md

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

  1. Elige un issue (o propón uno)

  2. Haz un fork del repositorio

  3. Crea una rama

  4. Realiza tu cambio

  5. Ejecuta pytest

  6. Abre 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.

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    -
    quality
    C
    maintenance
    A 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
  • A
    license
    -
    quality
    D
    maintenance
    Clinical decision-support MCP server that lets AI agents reason over live FHIR patient data for medication review, appointment scheduling, and care gap identification.
    7,813
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    A 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

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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