这是一个使用PHP 8.4编写的模型上下文协议(MCP)服务器,用于连接AI助手与openEHR REST API。
参考:openEHR REST规范 — https://specifications.openehr.org/releases/ITS-REST/development/overview.html
注意:对于生产级EHR集成,请确保您的AI模型和部署符合组织的数据隐私和合规要求。
CKM(临床知识管理器)
ckm_archetype_list — 列出CKM服务器中的原型ckm_archetype_get — 根据CID标识符获取CKM原型openEHR类型规范
openehr_type_specification_list — 使用名称模式(使用*通配符)和可选关键字(按类型规范内容过滤)列出捆绑的openEHR类型规范。返回类型、描述、目录和相对文件路径openehr_type_specification_get — 根据相对文件路径或openEEHR类型名称检索openEHR类型规范(作为BMM JSON)。注意:这些是BMM类型定义,不是JSON Schema模板定义
openehr_template_list — 列出模板(支持ADL 1.4/ADL2过滤)openehr_template_get — 根据ID获取模板(格式:json|xml)openehr_template_upload — 上传模板(格式:json|xml)openehr_template_example_get — 获取模板示例组合(格式:json|flat|xml)存储查询定义
openehr_stored_query_upload — 上传存储的AQL查询(可选版本)openehr_stored_query_list — 列出存储的查询(名称过滤支持namespace::name)openehr_stored_query_get — 根据名称和版本获取存储查询定义查询执行
openehr_query_adhoc — 执行AQL(支持偏移量/获取)openehr_stored_query_execute — 根据名称/版本和参数执行存储的AQLEHR管理
openehr_ehr_create — 创建EHR(可选主题id/命名空间)openehr_ehr_get — 根据ehr_id获取EHRopenehr_ehr_get_by_subject — 根据主题id/命名空间获取EHRopenehr_ehr_status_get — 获取EHR的状态openehr_ehr_contribution_create — 为EHR创建贡献openehr_ehr_contribution_get — 获取EHR的贡献组合管理
openehr_composition_create — 创建组合(格式:json|flat|xml)openehr_composition_get — 根据UID获取组合(格式:json|flat|xml)openehr_composition_update — 更新组合(使用If-Match与前一版本)openehr_composition_delete — 删除组合(版本删除)openehr_composition_revision_history — 获取组合修订历史可选提示,指导AI助手使用上述工具完成常见的openEHR和CKM工作流程。
vital_sign_capture — 捕获生命体征:获取选定模板的扁平JSON示例,填充值(使用UCUM单位),然后创建COMPOSITION。patient_assessment — 一般临床评估:选择一个模板,可选地获取示例,然后记录观察结果作为COMPOSITION。medication_review — 审查或更新药物列表:选择一个模板,可选地获取示例,然后提交药物更改作为COMPOSITION。aql_query_runner — 编写并执行AQL查询(即时或存储)并管理存储查询。template_management — 管理模板(列表/获取/上传)并获取示例组合。ehr_management — 创建/查找EHR并检查EHR状态;可选地管理贡献。composition_management — 创建、获取、更新、删除COMPOSITION;查看修订历史;在需要时获取模板示例。ckm_archetype_explorer — 通过列表和获取定义(ADL/XML/Mindmap)来探索CKM原型(根据CID)。openehr_type_specification_explorer — 发现并获取openEHR类型规范(作为BMM JSON)使用openehr_type_specification_list和openehr_type_specification_get。stdio:适用于基于进程的MCP客户端streamable-http(默认):端口8242上的HTTP服务器,MCP位于/mcp_openehr启动选项:向server.php传递--transport=stdio或--transport=streamable-http;如果跳过--transport,默认为streamable-http。
前提条件
git clone https://github.com/code24-nl/openehr-mcp-server.git
cd openehr-mcp-server
cp .env.example .env
# 根据需要编辑.env(参见变量部分)
docker compose up -d mcp
服务器监听端口8242,使用流式HTTP传输。
或者,构建MCP服务器镜像并在Clause Desktop中运行(作为stdio)(参见下面的配置):
docker compose build mcp
docker compose --profile ehrbase up -d
EHRbase在http://localhost:8080。
前提条件
docker compose --profile dev up -d mcp-dev
cp .env.example .env
# 根据需要编辑.env(参见变量部分)
docker compose exec mcp-dev composer install
docker compose exec mcp-dev php server.php --transport=stdio
# 或者
docker compose exec mcp-dev php server.php --transport=streamable-http
APP_ENV:应用环境(development/production)。默认:developmentLOG_LEVEL:Monolog级别(debug,info,warning,error等)。默认:infoOPENEHR_API_BASE_URL:您的openEHR REST服务器的基础URL(例如,EHRbase:http://localhost:8080/ehrbase/rest/openehr)。这是如何在EHRbase和其他openEHR服务器之间切换的方法。CKM_API_BASE_URL:openEHR CKM REST API的基础URL。默认:https://ckm.openehr.org/ckm/restHTTP_TIMEOUT:HTTP客户端超时时间(秒)。默认:2.0HTTP_SSL_VERIFY:设置为false以禁用验证或提供CA捆绑包路径。默认:true注意:默认情况下未配置授权头。如果您的openEHR服务器需要认证,请扩展server.php以向Guzzle添加Authorization头。
标准I/O示例(使用Docker)
{
"mcpServers": {
"openehr": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--network=host",
"-e", "OPENEHR_API_BASE_URL=http://localhost:8080/ehrbase/rest/openehr",
"-e", "CKM_API_BASE_URL=https://ckm.openehr.org/ckm/rest",
"code24-nl/openehr-mcp-server:latest",
"php", "server.php", "--transport=stdio"
]
}
}
}
LibreChat.ai MCP示例
docker compose up -d mcp)mcpServers:
openehr-mcp-server:
type: streamable-http
url: http://host.docker.internal:8242/mcp_openehr
docker compose exec mcp-dev composer test(PHPUnit 12)docker compose exec mcp-dev composer test:coveragedocker compose exec mcp-dev composer check:phpstanserver.php:MCP服务器入口点src/
Tools/:MCP工具(定义、EHR、组合、查询)Prompts/:MCP提示Helpers/:内部辅助程序(例如,内容类型和ADL映射)Client/:内部API客户端constants.php:加载环境变量和默认值docker-compose.yml:服务(mcp,mcp-dev,可选的ehrbase堆栈)Dockerfile:多阶段构建(开发,生产)tests/:PHPUnit和PHPStan配置和测试本项目受到启发并感谢以下内容:
我们欢迎贡献!请阅读CONTRIBUTING.md以了解设置环境、编码风格、测试以及如何提出更改的指南。
参见CHANGELOG.md以了解重要变更,并在每次发布时更新它。
MIT许可证 — 详见LICENSE。