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).
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 DataArquitectura 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 DBLa 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 → DatabaseEste 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
│
▼
DatabaseCada 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 |
| Recuperar un resumen restringido del paciente |
| Recuperar condiciones del paciente |
| Recuperar medicamentos |
| Analizar observaciones de laboratorio |
| 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 responseLa 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 passingEvaluació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
└── .gitignoreInstalación
1. Clonar el repositorio
git clone https://github.com/eyasu11321238a/secure-clinical-llm-mcp.git
cd secure-clinical-llm-mcp2. Instalar las dependencias de Python
pip install -r requirements.txt3. 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.jarSe requiere Java 17 o superior.
4. Generar datos clínicos sintéticos
java -jar synthea-with-dependencies.jar \
-p 25 \
-c synthea.properties \
Massachusetts5. Construir la base de datos relacional
cd ../pipeline
python ingest.py \
--csv-dir ../synthea/output/csv \
--db ../data/clinical.db6. Iniciar el servidor MCP
cd ../mcp_server
python server.py7. Ejecutar las pruebas de seguridad
cd ../eval
python security_tests.pyLLM Local
El agente puede conectarse a un modelo de código abierto que se ejecute localmente mediante Ollama.
Por ejemplo:
ollama pull llama3.2:3bA 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
+
EvaluationEl 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.
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
- AlicenseNot gradedqualityNot gradedmaintenanceA 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.
- AlicenseNot gradedqualityDmaintenanceAn MCP server that brings AI-powered search and conversation to your FHIR clinical documents.1MIT
- AlicenseAqualityBmaintenanceA Claude-compatible MCP server that exposes health-domain tools over 100% synthetic data, built with security and compliance in mind.4MIT
- FlicenseNot gradedqualityCmaintenanceA healthcare MCP demo server exposing clinical resources, tools, and prompts over SSE with authentication, integrated with Pydantic AI and Gemini for natural language patient record updates.
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.
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/eyasu11321238a/secure-clinical-llm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server