本项目旨在评估在 Azure Database for PostgreSQL 上部署的 Model Context Protocol (MCP) Server,能否在大规模临床分析中匹配或超越直接 SQL 的性能,同时减少开发人员的工作量。
本项目有以下先决条件:
# 核心库
pip install psycopg[binary] rich click pandas matplotlib
# 基准测试
pip install httpx pytest pytest‑benchmark
# MCP 服务器
pip install mcp[cli] azure-identity azure-mgmt-postgresqlflexibleservers
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
在标准 D4s 上的估计加载时间:约 45 分钟 处理 72 GB(11.7 M 笔记行 + 87 M EMAR 行)。
cd mcp-server
python azure_postgresql_mcp.py
环境变量 (PGHOST, PGUSER, PGPASSWORD, PGDATABASE) 必须设置或通过您的 Windows 桌面 / VS Code 配置提供。
如果需要使用 Microsoft Entra 身份验证而不是密码,请设置:
export AZURE_USE_AAD=True
export AZURE_SUBSCRIPTION_ID=...
export AZURE_RESOURCE_GROUP=...
python benchmarks/run_sql.py --query count_emar_detail
输出类似以下的一行:
count=87,371,064 elapsed=101550.2 ms
python benchmarks/run_mcp.py --query count_emar_detail
示例输出:
count=87,371,064 elapsed=101550.2 ms
本项目提出使用 MCP 服务器来解决大规模临床数据分析中直接使用 SQL 的问题。临床数据集如 MIMIC-IV 包含数千万行和数百个属性,编写和维护原始 SQL 进行如此广泛的数据操作既容易出错又效率低下。通过 MCP 基于的抽象,有望同时提高开发人员生产力,并在运行时效率方面保持(或增强)与传统的仅使用 SQL 的工作流程相比的优势。
.
├── mimic-postgres/ # 创建架构和导入 MIMIC-IV CSV 文件的脚本
├── src/ # Azure PostgreSQL MCP 的分叉,带有环境配置
└── README.md # 该文件
临床数据集如 MIMIC-IV 包含数千万行和数百个属性。编写和维护原始 SQL 进行如此广泛的数据操作既容易出错又效率低下。我们提出以下问题:
是否可以通过 MCP 基于的抽象同时提高开发人员生产力 并 在运行时效率方面保持(或增强)与传统的仅使用 SQL 的工作流程相比?
为了解答这个问题,我们在相同的工作负载上比较了直接 SQL 和 MCP 服务器 → PostgreSQL 的路径——从简单的 COUNT(*) 对 mimiciv_hosp.emar_detail(约 87 M 行)到多表笔记聚合。
项目代码遵循 [MIT License],数据集使用 [MIMIC-IV 使用条款]。如需引用,请参考 [相关文献]。
感谢 Microsoft Azure 提供的计算资源以及 MIMIC-IV 社区的支持。