Secure Clinical LLM Access via MCP
Безопасный доступ к клиническим данным LLM через MCP
Исследовательская платформа для безопасного доступа к структурированным клиническим данным с использованием открытых языковых моделей и протокола контекста модели (MCP).
Обзор
Большие языковые модели могут обеспечить интуитивно понятный интерфейс для изучения сложных данных, но прямое подключение LLM к клинической базе данных создает серьезные проблемы, связанные с доступом к данным, безопасностью, надежностью и контролем.
В этом проекте исследуется контролируемая альтернатива: предоставление структурированных клинических данных LLM через набор узко ограниченных, проверенных и аудируемых инструментов с использованием протокола контекста модели (MCP).
Вместо того чтобы позволять модели генерировать и выполнять произвольные SQL-запросы, система предоставляет специализированные инструменты для доступа к клинической информации. Это создает явную границу безопасности между языковой моделью и базовой базой данных.
Проект объединяет:
Открытые LLM
Протокол контекста модели (MCP)
Структурированные реляционные клинические данные
Конвейеры преобразования данных на Python
Доступ к базе данных с ограниченными инструментами
Проверку входных данных и ограничения размера результатов
Журналирование аудита
Тестирование безопасности
Ответы на клинические вопросы на основе LLM
Все клинические данные, используемые в этом проекте, являются синтетическими. Никакие реальные данные пациентов не хранятся и не обрабатываются.
Related MCP server: atlas_mcp
Мотивация исследования
Проект исследует следующий вопрос:
Как открытые языковые модели могут получать доступ к структурированным клиническим данным и анализировать их, сохраняя при этом контролируемую и аудируемую границу доступа к данным?
Это особенно актуально для сред клинических исследований, где медицинским специалистам может потребоваться доступ к сложным наборам данных на естественном языке без предоставления LLM неограниченного доступа к базовой базе данных.
Поэтому система сосредоточена на интерфейсе между:
Human
│
│ Natural-language question
▼
Open-weight LLM
│
│ Tool selection
▼
MCP Interface
│
│ Validated, scoped request
▼
Clinical Database
│
▼
Synthetic Clinical DataАрхитектура системы
┌──────────────────────────┐
│ 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 │
└──────────────────────────┘Конвейер данных
Клинические данные генерируются с помощью Synthea — генератора синтетических пациентов, предназначенного для создания реалистичных, но не идентифицируемых медицинских записей.
Сгенерированные гетерогенные CSV-файлы преобразуются в связанную реляционную базу данных:
Synthea
│
├── Patients
├── Encounters
├── Conditions
├── Observations
└── Medications
│
▼
Ingestion Pipeline
│
▼
Relational SQLite DBКонвейер загрузки реализован на Python и устанавливает связи между пациентами, посещениями, диагнозами, наблюдениями и лекарствами.
Почему MCP вместо прямого SQL?
Ключевое проектное решение — не предоставлять языковой модели универсальный инструмент выполнения SQL.
Наивная архитектура могла бы выглядеть так:
LLM → Generate SQL → Execute SQL → DatabaseЭтот подход дает модели значительный контроль над базой данных и создает ненужные риски безопасности.
Вместо этого в проекте используется:
LLM
│
▼
MCP Tool
│
├── Validate parameters
├── Restrict operation
├── Limit result size
├── Exclude identifying fields
└── Record audit event
│
▼
DatabaseКаждый инструмент имеет узко определенное назначение.
Например:
get_patient_summary()
get_conditions()
get_medications()
get_lab_trends()
get_encounters()Модель может выбирать и параметризовать эти инструменты, но не может произвольно выполнять SQL.
Это создает границу безопасности на уровне инструментов, которая не зависит от способности модели следовать системным подсказкам.
Модель безопасности
Проект рассматривает LLM как недоверенный компонент.
Поэтому меры безопасности реализуются вне модели, где это возможно.
Реализованные меры контроля
Доступ к базе данных с ограниченными инструментами
Проверка входных данных
Операции только для чтения
Ограничения размера результатов
Исключение идентифицирующих полей
Журналирование аудита
Тестирование на уровне протокола
Набор тестов безопасности
Цель дизайна:
Не полагаться на LLM для обеспечения политик безопасности, которые могут быть реализованы на уровне приложения.
Это особенно важно при подключении языковых моделей к чувствительным источникам данных.
Инструменты MCP
Сервер MCP в настоящее время предоставляет пять контролируемых инструментов.
Инструмент | Назначение |
| Получить ограниченную сводку о пациенте |
| Получить состояния пациента |
| Получить лекарства |
| Проанализировать лабораторные наблюдения |
| Получить информацию о посещениях |
Каждый инструмент проверяет свои аргументы перед обращением к базе данных.
Интеграция LLM
Проект предназначен для работы с локальными открытыми языковыми моделями через Ollama.
Пример:
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Архитектура сохраняет клиническую базу данных локальной, а не требует отправки данных пациентов во внешний API LLM.
Оценка
Проект включает структуру оценки, охватывающую как безопасность, так и удобство использования.
Оценка безопасности
Набор тестов безопасности проверяет, правильно ли уровень MCP предотвращает несанкционированные или небезопасные операции.
Примеры включают:
Недопустимые параметры инструмента
Чрезмерные запросы результатов
Несанкционированный доступ к полям
Небезопасные операции с базой данных
Нарушения границ инструментов
Поведение журналирования аудита
Текущий статус тестов безопасности:
7 / 7 security tests passingОценка удобства использования
Структура оценки предназначена для измерения:
Точность ответов на вопросы
Точность выбора инструментов
Задержка ответа
Успешное выполнение клинических запросов
Случаи сбоев
Цель — оценить не только работает ли система, но и насколько надежно LLM может взаимодействовать со структурированными клиническими данными через ограниченные инструменты.
Структура проекта
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Установка
1. Клонируйте репозиторий
git clone https://github.com/eyasu11321238a/secure-clinical-llm-mcp.git
cd secure-clinical-llm-mcp2. Установите зависимости Python
pip install -r requirements.txt3. Загрузите Synthea
Synthea не включен в репозиторий.
Загрузите последний релиз:
cd synthea
curl -L -o synthea-with-dependencies.jar \
https://github.com/synthetichealth/synthea/releases/download/master-branch-latest/synthea-with-dependencies.jarТребуется Java 17 или новее.
4. Сгенерируйте синтетические клинические данные
java -jar synthea-with-dependencies.jar \
-p 25 \
-c synthea.properties \
Massachusetts5. Создайте реляционную базу данных
cd ../pipeline
python ingest.py \
--csv-dir ../synthea/output/csv \
--db ../data/clinical.db6. Запустите сервер MCP
cd ../mcp_server
python server.py7. Запустите тесты безопасности
cd ../eval
python security_tests.pyЛокальная LLM
Агент может быть подключен к открытой модели, работающей локально через Ollama.
Например:
ollama pull llama3.2:3bЗатем запустите:
python agent/clinical_agent.py \
"Find a female patient and summarize her conditions"Агент общается с сервером MCP, а не обращается к базе данных напрямую.
Текущий статус
Завершено
Генерация синтетических клинических данных с помощью Synthea
Конвейер загрузки гетерогенных клинических данных
Реляционная клиническая база данных SQLite
Сервер MCP
Пять ограниченных инструментов для клинических данных
Проверка входных данных
Ограничения размера результатов
Исключение идентифицирующих полей
Журналирование аудита
Тестирование на уровне протокола MCP
Интеграция локального агента Ollama
Набор тестов безопасности
7/7 тестов безопасности пройдено
В процессе
Слой клинических запросов с учетом схемы
Расширенный бенчмарк клинических вопросов
Оценка точности выбора инструментов
Оценка задержки
Оценка инъекций в промпты
Расширенный анализ безопасности
Отчет об исследовательской оценке
Будущая работа
Запланировано несколько расширений для превращения прототипа в более комплексную исследовательскую платформу.
1. Рассуждение с учетом схемы
Предоставить LLM структурированные описания реляционной схемы и исследовать, насколько эффективно она может выбирать подходящие инструменты и параметры.
2. Расширенный клинический бенчмарк
Разработать бенчмарк, содержащий клинические вопросы от простых поисков до многотабличных аналитических запросов.
3. Оценка безопасности
Оценить устойчивость к:
Инъекциям в промпты
Вредоносному клиническому тексту
Несанкционированным запросам данных
Манипуляциям с инструментами
Чрезмерному извлечению данных
Попыткам обойти контроль доступа
4. Гетерогенные медицинские данные
Расширить конвейер для поддержки дополнительных представлений медицинских данных, включая ресурсы FHIR.
5. Сравнение моделей
Сравнить несколько открытых LLM по следующим параметрам:
Точность выбора инструментов
Точность клинических запросов
Задержка
Частота сбоев
Устойчивость к безопасности
Ограничения
Этот проект является исследовательским прототипом и не является системой поддержки клинических решений.
Данные полностью синтетические и поэтому не отражают полную сложность, шум, пропуски или распределение реальных больничных данных.
Система не должна использоваться для медицинской диагностики, принятия решений о лечении или реального ухода за пациентами.
Для применения подхода в реальных клинических средах потребуется дополнительная валидация.
Актуальность исследования
Этот проект находится на пересечении:
Large Language Models
+
Structured Data
+
Medical Informatics
+
MCP / Tool Calling
+
Data Engineering
+
AI Security
+
EvaluationЦентральная цель — исследовать, как языковые модели могут предоставлять интерфейс на естественном языке к структурированным клиническим данным без предоставления модели неограниченного доступа к базовому источнику данных.
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