关于 MCP Server × PostgreSQL on MIMIC‑IV
这是一个研究项目,比较直接 SQL 与 MCP 到 PostgreSQL 的路径在 MIMIC-IV 临床分析中的表现。项目包含数据导入脚本和基准测试,用于评估查询性能与实现工作量。
主要功能
- 01创建 MIMIC-IV 架构并导入 CSV
- 02对比直接 SQL 与 MCP 工作负载
- 03多次运行结果汇总为 CSV
- 04配置 Azure PostgreSQL
适用场景
- 01比较 SQL 与 MCP 的查询耗时
- 02衡量临床分析工作负载的实现成本
MCP 相关
MCP 服务连接 Azure Database for PostgreSQL,并针对相同工作负载与直接 SQL 进行基准比较。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MIMIC‑IV 上的 MCP Server × PostgreSQL
**项目目标:**评估构建在 Azure Database for PostgreSQL 之上的 Model Context Protocol(MCP)Server,能否达到或超越直接 SQL 的性能,同时降低大规模临床分析的开发工作量。
1. 问题陈述
MIMIC‑IV 等临床数据集包含数千万行和数百个属性。针对如此庞大的数据编写和维护原始 SQL 容易出错且速度缓慢。我们提出以下问题:
基于 MCP 的抽象能否同时提高开发者的工作效率,并在与传统的纯 SQL 工作流相比时,维持(或提升)运行效率?
为回答这个问题,我们在相同的工作负载下比较直接 SQL 与 MCP Server → Postgres 路径,范围从对 mimiciv_hosp.emar_detail(约 8,700 万行)执行简单的 COUNT(*),到多表笔记聚合。
2. 仓库布局
.
├── mimic-postgres/ # Scripts to create schemas & ingest MIMIC‑IV CSVs
├── src/ # Fork of azure_postgresql_mcp with env configs
└── README.md # This file
3. 先决条件
- Python 3.10+
- Node 18+(可选,用于其他 MCP 工具)
- Azure Database for PostgreSQL – Flexible Server(Standard_D4s v5 或更高规格)
- MIMIC‑IV 凭证和数据下载权限
# core libs
pip install psycopg[binary] rich click pandas matplotlib
# benchmarking
pip install httpx pytest pytest‑benchmark
# MCP server
pip install mcp[cli] azure-identity azure-mgmt-postgresqlflexibleservers
4. 加载数据集
cd data-loading
psql "$PGURI" -f 00_create_mimiciv_note_schema.sql
psql "$PGURI" -f 01_create_emar_tables.sql
python 02_bulk_copy.py --csv-root /path/to/mimic-iv
在 Standard_D4s 上,预计数据导入时间为 约 45 分钟,数据量为 72 GB(1,170 万行笔记 + 8,700 万行 EMAR)。
5. 启动 MCP Server
cd mcp-server
python azure_postgresql_mcp.py
必须设置环境变量(PGHOST、PGUSER、PGPASSWORD、PGDATABASE),或在 Claude Desktop / VS Code 配置中提供这些变量。
若要使用 Microsoft Entra 身份验证而非密码,请设置:
export AZURE_USE_AAD=True
export AZURE_SUBSCRIPTION_ID=...
export AZURE_RESOURCE_GROUP=...
6. 运行基准测试
6.1 直接 SQL
python benchmarks/run_sql.py --query count_emar_detail
输出一行类似以下内容:
count=87,371,064 elapsed=101550.2 ms
6.2 MCP Server
python benchmarks/run_mcp.py --query count_emar_detail
示例输出:
count=87,371,064 elapsed=67560.1 ms
多次运行(默认 = 30)的结果会汇总为 CSV,存放在 benchmarks/results/ 下。
7. 关键结果(预览)
| 查询 | 直接 SQL | MCP Server | 变化(毫秒) | 变化 % |
|---|---|---|---|---|
对 emar_detail 执行 COUNT(*) | 101,550 ms | 67,560 ms | −33,990 | −33 % |
| 实现工作负载 #1 的代码行数 | 68 | 23 | −45 | −66 % |
8. 后续工作
- 启用 Entra ID + RBAC,并重新测试连接延迟。
- 通过自定义 MCP 工具添加 pgvector 语义搜索基准测试。
- 开展临床医生用户体验试验,对比 MCP+Claude 与 SQL IDE。
9. 许可证与引用
MIT License — 详见 LICENSE。
如果您使用了此代码或结果,请引用:
Menon S.K., N. (2025). MCP Server × PostgreSQL on MIMIC‑IV: productivity and performance comparison. Georgia Tech CS 6423 Final Project Report.
10. 致谢
- 感谢 PhysioNet 提供 MIMIC‑IV 数据集访问权限
- Azure Database for PostgreSQL
- 感谢 Anthropic 提供 MCP 规范和 Claude Desktop 工具
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。