FHIR MCP Server:让智能体读写任意 FHIR 医疗数据
WSO2 出品,把任意 FHIR 服务器包装成 MCP:搜索、读取、增改删资源,支持 SMART-on-FHIR 授权和 FHIRPath 字段过滤。
项目与安装文档
查看项目https://github.com/wso2/fhir-mcp-server
医院和医疗软件之间交换数据,主流标准是 FHIR:病人、检验、用药都是标准化的资源,通过 REST API 读写。WSO2 的 FHIR MCP Server 把这套接口直接交给智能体,不管后面是开源的 HAPI FHIR 还是 Epic 这样的电子病历系统,智能体都按同一组工具操作。它由集成软件公司 WSO2 维护,截至 2026-10-06 约 140 star。
能做什么
- 探查能力:
get_capabilities返回某个资源类型支持的检索参数和自定义操作,智能体先看清楚再查询。 - 检索和读取:
search按 FHIR 检索参数查找,read按 ID 读取,也能调用$everything这类扩展操作。 - 写入:
create、update、delete对应 FHIR 的增改删操作。 - 只取需要的字段:
response_filter_fhirpaths用 FHIRPath 表达式过滤返回内容,比如只要Patient.name和Patient.birthDate,省上下文。 - 授权:支持 SMART-on-FHIR 的 OAuth 2.0 授权码流程,README 有接 Epic 沙箱的演示视频;
get_user返回当前登录用户对应的病人资料。
适合谁
- 医疗信息化团队,想在测试环境里让智能体按自然语言查询病历数据。
- 做临床 AI 应用的开发者,需要一个标准接口连多个 FHIR 后端。
接入方式
需要 Python 3.8 以上、uv,以及一个可访问的 FHIR 服务器。设置 FHIR_SERVER_BASE_URL(以及授权用的 client ID、secret、scopes,或设 FHIR_SERVER_DISABLE_AUTHORIZATION=True)后启动,默认监听 http://localhost:8000:
uvx fhir-mcp-server
客户端连 Streamable HTTP 端点即可:
"servers": {
"fhir": {
"type": "http",
"url": "http://localhost:8000/mcp"
}
}
仓库里的 docker-compose.yml 能一次拉起 HAPI FHIR 和 PostgreSQL,适合先在本地试。
编辑点评
FHIR 类 MCP 里,这个是通用性最好的一个:不绑定某家厂商,工具直接映射 FHIR 的标准操作,FHIRPath 过滤解决了 FHIR 返回体太大的老问题。最需要小心的是写权限,update 和 delete 作用在真实的临床记录上,接生产系统前应只给只读 scope,并在客户端开启调用确认。病历属于敏感个人信息,部署要符合当地的隐私法规;智能体的回答也不能当作医疗建议。许可证为 Apache-2.0。