Skip to main content
Glama
eyasu11321238a

Secure Clinical LLM Access via MCP

Acceso Seguro a Datos Clínicos mediante LLM vía MCP

Un marco de investigación para el acceso seguro a datos clínicos estructurados mediante modelos de lenguaje de código abierto y el Protocolo de Contexto de Modelos (MCP).

Python MCP Ollama SQLite Synthea

Resumen

Los modelos de lenguaje de gran tamaño pueden proporcionar una interfaz intuitiva para explorar datos complejos, pero conectar directamente un LLM a una base de datos clínica plantea importantes desafíos en cuanto a acceso a datos, seguridad, fiabilidad y control.

Este proyecto investiga una alternativa controlada: exponer datos clínicos estructurados a un LLM mediante un conjunto de herramientas de alcance limitado, validadas y auditables que utilizan el Protocolo de Contexto de Modelos (MCP).

En lugar de permitir que el modelo genere y ejecute SQL arbitrario, el sistema proporciona herramientas específicas para acceder a información clínica. Esto crea una frontera de seguridad explícita entre el modelo de lenguaje y la base de datos subyacente.

El proyecto combina:

  • Modelos de lenguaje de código abierto

  • Protocolo de Contexto de Modelos (MCP)

  • Datos clínicos relacionales estructurados

  • Canalizaciones de transformación de datos basadas en Python

  • Acceso a bases de datos limitado a herramientas

  • Validación de entradas y límites de tamaño de resultados

  • Registro de auditoría

  • Pruebas de seguridad

  • Respuesta a preguntas clínicas basada en LLM

Todos los datos clínicos utilizados en este proyecto son sintéticos. No se almacena ni procesa ningún dato real de pacientes.


Related MCP server: atlas_mcp

Motivación de la Investigación

El proyecto explora la siguiente pregunta:

¿Cómo pueden los modelos de lenguaje de código abierto acceder y analizar datos clínicos estructurados manteniendo una frontera de acceso a datos controlada y auditable?

Esto es especialmente relevante en entornos de investigación clínica donde los profesionales médicos pueden necesitar acceso en lenguaje natural a conjuntos de datos complejos sin otorgar a un LLM acceso sin restricciones a la base de datos subyacente.

Por lo tanto, el sistema se centra en la interfaz entre:

Human
  │
  │ Natural-language question
  ▼
Open-weight LLM
  │
  │ Tool selection
  ▼
MCP Interface
  │
  │ Validated, scoped request
  ▼
Clinical Database
  │
  ▼
Synthetic Clinical Data

Arquitectura del Sistema

                  ┌──────────────────────────┐
                  │       User / Clinician   │
                  └────────────┬─────────────┘
                               │
                       Natural-language
                            question
                               │
                               ▼
                  ┌──────────────────────────┐
                  │    Open-weight LLM       │
                  │      (Ollama)             │
                  └────────────┬─────────────┘
                               │
                         Tool selection
                               │
                               ▼
                  ┌──────────────────────────┐
                  │       MCP Client          │
                  │     Clinical Agent        │
                  └────────────┬─────────────┘
                               │
                         MCP protocol
                               │
                               ▼
                  ┌──────────────────────────┐
                  │       MCP Server          │
                  │                          │
                  │  • Input validation      │
                  │  • Tool scoping          │
                  │  • Result limits         │
                  │  • PII exclusion         │
                  │  • Audit logging          │
                  └────────────┬─────────────┘
                               │
                       Controlled tools
                               │
                               ▼
                  ┌──────────────────────────┐
                  │    Relational Database   │
                  │        SQLite            │
                  └────────────┬─────────────┘
                               │
                               ▼
                  ┌──────────────────────────┐
                  │   Synthetic Clinical     │
                  │        Data              │
                  │        Synthea            │
                  └──────────────────────────┘

Canalización de Datos

Los datos clínicos se generan mediante Synthea, un generador de pacientes sintéticos diseñado para producir registros médicos realistas pero no identificables.

Los archivos CSV heterogéneos generados se transforman en una base de datos relacional vinculada:

Synthea
   │
   ├── Patients
   ├── Encounters
   ├── Conditions
   ├── Observations
   └── Medications
          │
          ▼
     Ingestion Pipeline
          │
          ▼
   Relational SQLite DB

La canalización de ingesta está implementada en Python y establece relaciones entre pacientes, encuentros, diagnósticos, observaciones y medicamentos.


¿Por Qué MCP en Lugar de SQL Directo?

Una decisión de diseño central es no exponer una herramienta genérica de ejecución de SQL al modelo de lenguaje.

Una arquitectura ingenua podría verse así:

LLM → Generate SQL → Execute SQL → Database

Este enfoque otorga al modelo un control significativo sobre la base de datos y crea riesgos de seguridad innecesarios.

Este proyecto, en cambio, utiliza:

LLM
 │
 ▼
MCP Tool
 │
 ├── Validate parameters
 ├── Restrict operation
 ├── Limit result size
 ├── Exclude identifying fields
 └── Record audit event
 │
 ▼
Database

Cada herramienta tiene un propósito claramente definido.

Por ejemplo:

get_patient_summary()
get_conditions()
get_medications()
get_lab_trends()
get_encounters()

El modelo puede seleccionar y parametrizar estas herramientas, pero no puede ejecutar SQL arbitrariamente.

Esto crea una frontera de seguridad a nivel de herramienta que es independiente de la capacidad del modelo para seguir las indicaciones del sistema.


Modelo de Seguridad

El proyecto trata al LLM como un componente no confiable.

Por lo tanto, los controles de seguridad se implementan fuera del modelo siempre que sea posible.

Controles implementados

  • Acceso a bases de datos limitado a herramientas

  • Validación de entradas

  • Operaciones de solo lectura

  • Límites de tamaño de resultados

  • Exclusión de campos identificativos

  • Registro de auditoría

  • Pruebas a nivel de protocolo

  • Conjunto de pruebas de seguridad

El objetivo de diseño es:

No depender del LLM para hacer cumplir políticas de seguridad que puedan aplicarse en la capa de aplicación.

Esto es particularmente importante cuando los modelos de lenguaje están conectados a fuentes de datos sensibles.


Herramientas MCP

El servidor MCP expone actualmente cinco herramientas controladas.

Herramienta

Propósito

get_patient_summary

Recuperar un resumen restringido del paciente

get_conditions

Recuperar condiciones del paciente

get_medications

Recuperar medicamentos

get_lab_trends

Analizar observaciones de laboratorio

get_encounters

Recuperar información de encuentros

Cada herramienta valida sus argumentos antes de acceder a la base de datos.


Integración con LLM

El proyecto está diseñado para funcionar con modelos de lenguaje de código abierto locales mediante Ollama.

Ejemplo:

User:
Find a female patient and summarize her conditions.

        ↓

Open-weight LLM

        ↓

MCP tool selection

        ↓

get_patient_summary(...)

        ↓

Validated database query

        ↓

Structured result

        ↓

LLM-generated response

La arquitectura mantiene la base de datos clínica local en lugar de requerir que los datos de los pacientes se envíen a una API de LLM externa.


Evaluación

El proyecto incluye un marco de evaluación que cubre tanto la seguridad como la usabilidad.

Evaluación de seguridad

El conjunto de pruebas de seguridad verifica si la capa MCP previene correctamente operaciones no autorizadas o inseguras.

Algunos ejemplos incluyen:

  • Parámetros de herramienta no válidos

  • Solicitudes de resultados excesivas

  • Acceso no autorizado a campos

  • Operaciones de base de datos inseguras

  • Violaciones de los límites de las herramientas

  • Comportamiento del registro de auditoría

Estado actual de las pruebas de seguridad:

7 / 7 security tests passing

Evaluación de usabilidad

El marco de evaluación está diseñado para medir:

  • Precisión de las respuestas a preguntas

  • Precisión en la selección de herramientas

  • Latencia de respuesta

  • Finalización exitosa de consultas clínicas

  • Casos de fallo

El objetivo es evaluar no solo si el sistema funciona, sino con qué fiabilidad puede un LLM interactuar con datos clínicos estructurados a través de herramientas restringidas.


Estructura del Proyecto

secure-clinical-llm-mcp/
│
├── agent/
│   ├── __init__.py
│   └── clinical_agent.py
│
├── eval/
│   ├── security_tests.py
│   ├── usability_benchmark.py
│   └── EVALUATION_REPORT.md
│
├── mcp_server/
│   └── server.py
│
├── pipeline/
│   └── ingest.py
│
├── synthea/
│   └── synthea.properties
│
├── requirements.txt
├── README.md
└── .gitignore

Instalación

1. Clonar el repositorio

git clone https://github.com/eyasu11321238a/secure-clinical-llm-mcp.git
cd secure-clinical-llm-mcp

2. Instalar las dependencias de Python

pip install -r requirements.txt

3. Descargar Synthea

Synthea no está incluido en el repositorio.

Descargue la última versión:

cd synthea

curl -L -o synthea-with-dependencies.jar \
  https://github.com/synthetichealth/synthea/releases/download/master-branch-latest/synthea-with-dependencies.jar

Se requiere Java 17 o superior.

4. Generar datos clínicos sintéticos

java -jar synthea-with-dependencies.jar \
  -p 25 \
  -c synthea.properties \
  Massachusetts

5. Construir la base de datos relacional

cd ../pipeline

python ingest.py \
  --csv-dir ../synthea/output/csv \
  --db ../data/clinical.db

6. Iniciar el servidor MCP

cd ../mcp_server

python server.py

7. Ejecutar las pruebas de seguridad

cd ../eval

python security_tests.py

LLM Local

El agente puede conectarse a un modelo de código abierto que se ejecute localmente mediante Ollama.

Por ejemplo:

ollama pull llama3.2:3b

A continuación, ejecute:

python agent/clinical_agent.py \
  "Find a female patient and summarize her conditions"

El agente se comunica con el servidor MCP en lugar de acceder directamente a la base de datos.


Estado Actual

Completado

  • Generación de datos clínicos sintéticos con Synthea

  • Canalización de ingesta de datos clínicos heterogéneos

  • Base de datos clínica relacional SQLite

  • Servidor MCP

  • Cinco herramientas de datos clínicos de alcance limitado

  • Validación de entradas

  • Restricciones de tamaño de resultados

  • Exclusión de campos identificativos

  • Registro de auditoría

  • Pruebas a nivel de protocolo MCP

  • Integración del agente local con Ollama

  • Conjunto de pruebas de seguridad

  • 7/7 pruebas de seguridad superadas

En Progreso

  • Capa de consulta clínica consciente del esquema

  • Punto de referencia ampliado de preguntas clínicas

  • Evaluación de la precisión en la selección de herramientas

  • Evaluación de latencia

  • Evaluación de inyección de indicaciones

  • Análisis de seguridad ampliado

  • Informe de evaluación de la investigación


Trabajo Futuro

Se planean varias extensiones para convertir el prototipo en un marco de investigación más completo.

1. Razonamiento consciente del esquema

Proporcionar al LLM descripciones estructuradas del esquema relacional e investigar con qué eficacia puede seleccionar las herramientas y los parámetros adecuados.

2. Punto de referencia clínico ampliado

Desarrollar un punto de referencia que contenga preguntas clínicas que vayan desde consultas simples hasta consultas analíticas de múltiples tablas.

3. Evaluación de seguridad

Evaluar la robustez frente a:

  • Inyección de indicaciones

  • Texto clínico malicioso

  • Solicitudes de datos no autorizadas

  • Manipulación de herramientas

  • Recuperación excesiva de datos

  • Intentos de eludir los controles de acceso

4. Datos médicos heterogéneos

Ampliar la canalización para admitir representaciones adicionales de datos sanitarios, incluidos los recursos FHIR.

5. Comparación de modelos

Comparar múltiples LLM de código abierto con respecto a:

  • Precisión en la selección de herramientas

  • Precisión de las consultas clínicas

  • Latencia

  • Tasa de fallos

  • Robustez de seguridad


Limitaciones

Este proyecto es un prototipo de investigación y no es un sistema de apoyo a la decisión clínica.

Los datos son completamente sintéticos y, por lo tanto, no representan la complejidad total, el ruido, los valores faltantes ni la distribución de los datos hospitalarios del mundo real.

El sistema no debe utilizarse para diagnóstico médico, decisiones de tratamiento ni atención real a pacientes.

Se requeriría una validación adicional antes de aplicar el enfoque a entornos clínicos reales.


Relevancia para la Investigación

Este proyecto se sitúa en la intersección de:

Large Language Models
        +
Structured Data
        +
Medical Informatics
        +
MCP / Tool Calling
        +
Data Engineering
        +
AI Security
        +
Evaluation

El objetivo central es investigar cómo los modelos de lenguaje pueden proporcionar una interfaz en lenguaje natural para datos clínicos estructurados sin otorgar al modelo acceso sin restricciones a la fuente de datos subyacente.


F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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
    Not graded
    quality
    Not graded
    maintenance
    A production-grade MCP server that enables AI assistants to securely manage healthcare data through clinical tools for patient vitals, lab results, and medication ordering. It prioritizes security and compliance with features like HIPAA-ready audit logging, PII redaction, and role-based access control.

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server exposing US hospital procedure cost data to AI assistants

  • MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.

  • MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.

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/eyasu11321238a/secure-clinical-llm-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server