mcpField
M
MCP Server × PostgreSQL on MIMIC‑IV

MCP Server × PostgreSQL on MIMIC‑IV

本地服务
github.com/ambakick数据库179 周前更新

关于 MCP Server × PostgreSQL on MIMIC‑IV

这是一个研究项目,比较直接 SQL 与 MCP 到 PostgreSQL 的路径在 MIMIC-IV 临床分析中的表现。项目包含数据导入脚本和基准测试,用于评估查询性能与实现工作量。

主要功能

  1. 01创建 MIMIC-IV 架构并导入 CSV
  2. 02对比直接 SQL 与 MCP 工作负载
  3. 03多次运行结果汇总为 CSV
  4. 04配置 Azure PostgreSQL

适用场景

  1. 01比较 SQL 与 MCP 的查询耗时
  2. 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. 关键结果(预览)

查询直接 SQLMCP Server变化(毫秒)变化 %
对 emar_detail 执行 COUNT(*)101,550 ms67,560 ms−33,990−33 %
实现工作负载 #1 的代码行数6823−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 工具

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。