Skip to main content
Glama
eyasu11321238a

Secure Clinical LLM Access via MCP

Secure Clinical LLM Access via MCP

Model Context Protocol(MCP)과 오픈 가중치 대형 언어 모델을 사용하여 구조화된 임상 데이터에 안전하게 접근하기 위한 연구 중심 프레임워크.

Python MCP Ollama SQLite Synthea

개요

대형 언어 모델은 복잡한 데이터를 탐색하기 위한 직관적인 인터페이스를 제공할 수 있지만, LLM을 임상 데이터베이스에 직접 연결하면 데이터 접근, 보안, 신뢰성, 통제와 관련된 중요한 문제가 발생합니다.

이 프로젝트는 통제된 대안을 연구합니다: Model Context Protocol(MCP)을 사용하는 좁은 범위로 한정되고, 검증되었으며, 감사 가능한 도구 집합을 통해 구조화된 임상 데이터를 LLM에 노출하는 것입니다.

모델이 임의의 SQL을 생성하고 실행하도록 허용하는 대신, 시스템은 임상 정보에 접근하기 위한 목적별 도구를 제공합니다. 이는 언어 모델과 기본 데이터베이스 사이에 명시적인 보안 경계를 만듭니다.

이 프로젝트는 다음을 결합합니다:

  • 오픈 가중치 LLM

  • Model Context Protocol(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으로 구현되며 환자, 진료 기록, 진단, 관찰, 투약 간의 관계를 구축합니다.


직접 SQL 대신 MCP를 사용하는 이유

핵심 설계 결정은 언어 모델에 일반적인 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 서버는 현재 다섯 개의 통제된 도구를 노출합니다.

도구

목적

get_patient_summary

제한된 환자 요약 검색

get_conditions

환자 질환 내역 검색

get_medications

투약 내역 검색

get_lab_trends

검사실 관찰 결과 분석

get_encounters

진료 기록 정보 검색

각 도구는 데이터베이스에 접근하기 전에 인수를 검증합니다.


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

이 아키텍처는 환자 데이터를 외부 LLM API로 보내도록 요구하지 않고 임상 데이터베이스를 로컬로 유지합니다.


평가

이 프로젝트는 보안과 사용성을 모두 다루는 평가 프레임워크를 포함합니다.

보안 평가

보안 테스트 스위트는 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-mcp

2. Python 종속성 설치

pip install -r requirements.txt

3. 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 \
  Massachusetts

5. 관계형 데이터베이스 구축

cd ../pipeline

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

6. MCP 서버 시작

cd ../mcp_server

python server.py

7. 보안 테스트 실행

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

핵심 목표는 언어 모델이 기본 데이터 소스에 대한 무제한 접근을 부여하지 않으면서 구조화된 임상 데이터에 자연어 인터페이스를 제공할 수 있는 방법을 조사하는 것입니다.


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