MIMIC-IV上的MCP服务器×PostgreSQL
项目目标: 评估在Azure Database for PostgreSQL上分层的模型上下文协议(MCP)服务器是否可以匹配或优于直接SQL,同时减少开发人员进行大规模临床分析的工作量。
______________________________________________________________________
1.问题陈述
MIMIC-IV等临床数据集包含数千万行和数百个属性。针对这种广度编写和维护原始SQL容易出错且速度较慢。我们要求:
_基于MCP的抽象能否同时提高开发人员的生产力 和 与传统的仅使用SQL的工作流相比,保持(或提高)运行时效率?_
为了回答这个问题,我们将直接SQL与 MCP服务器→ Postgres 相同工作负载上的路径——从简单的 COUNT(*) 在…上 mimiciv_hosp.emar_detail (≈8700万行)转换为多表注释聚合。
______________________________________________________________________
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+
- 节点18+(可选,用于额外的MCP工具)
- PostgreSQL Azure数据库–灵活的服务器 (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-ivStandard_D4s上的估计摄取时间: ~45分钟 72 GB(1170万个钞票行+87万个EMAR行)。
______________________________________________________________________
5.启动MCP服务器
cd mcp-server
python azure_postgresql_mcp.py环境变量(PGHOST, PGUSER, PGPASSWORD, PGDATABASE)必须在Claude Desktop/VS Code配置中设置或提供。
使用 微软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 ms6.2 MCP服务器
python benchmarks/run_mcp.py --query count_emar_detail样本输出:
count=87,371,064 elapsed=67560.1 ms多个运行(默认值=30)被聚合到CSV中 benchmarks/results/.
______________________________________________________________________
7.主要结果(预览)
| 查询 | 直接SQL | MCP服务器 | Δ(ms) | Δ% |
|---|---|---|---|---|
COUNT(*) 在…上 emar_detail | 101550毫秒 | 67560毫秒 | −33,990 | −33 % |
| LOC实施工作负载#1 | 68 | 23 | −45 | −66 % |
______________________________________________________________________
8.今后的工作
- 启用Entra ID+RBAC并重新基准测试连接延迟。
- 通过自定义MCP工具添加pgvector语义搜索基准。
- 运行临床医生用户体验试验,比较MCP+Claude与SQL IDE。
______________________________________________________________________
9.许可证和引用
MIT许可证——见 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数据集
- PostgreSQL的Azure数据库
- MCP规范和Claude Desktop工具的拟人化
