Secure Clinical LLM Access via MCP
通过 MCP 实现安全的临床 LLM 访问
一个面向研究的框架,用于通过开源权重大语言模型和模型上下文协议(MCP)安全访问结构化临床数据。
概述
大语言模型可以为探索复杂数据提供直观的界面,但直接将 LLM 连接到临床数据库会引入围绕数据访问、安全性、可靠性和可控性的重要挑战。
本项目研究一种受控的替代方案:通过一组范围受限、经过验证且可审计的工具,利用模型上下文协议(MCP)向 LLM 暴露结构化临床数据。
系统不允许模型生成并执行任意 SQL,而是提供用于访问临床信息的专用工具。这就在语言模型与底层数据库之间建立了明确的安全边界。
本项目结合了:
开源权重大语言模型
模型上下文协议(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该架构将临床数据库保留在本地,无需将患者数据发送到外部 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-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