M4 MCP 服务器端
使用说明(简明易懂的使用指南,便于快速上手)
-
项目简介
M4 MCP 服务器是一个用于 AI 助手查询与分析临床数据的后端服务。它将数据资源、外部工具和提示模板等能力以标准化的 MCP 协议暴露给 LLM 客户端,客户端通过 JSON-RPC 与服务器交互,从而实现对数据的读取、分析和外部功能的调用。后端设计支持会话管理、能力声明,以及多种传输协议(如标准 JSON-RPC over HTTP、标准输入输出等模拟通道、WebSocket 等)的扩展,面向 MIMIC 等大型医疗数据集提供高效且可扩展的上下文服务框架。 -
主要功能点
- 资源托管与数据访问:集中管理和访问各种数据资源与数据集后端,支持 Tabular、Notes 等多模态数据。
- 工具注册与执行:向 LLM 客户端注册可调用的工具(如执行 SQL、查询数据表、Notes 搜索等),LLM 可以通过 MCP 调用这些工具并获取结构化结果。
- Prompt 与交互模板:定义并渲染用于与数据交互的 Prompt 模板,支持可定制的 LLM 交互模式。
- 会话与能力声明:跟踪会话、能力宣告,确保客户端了解当前服务器支持的数据和工具。
- 多传输与安全性扩展:在不同传输协议下工作,具备安全性、权限和审计等扩展点(如 OAuth2、访问控制等实现)。
- 与后端数据源的对接:通过 DuckDB/BigQuery 等后端对接数据,提供统一的工具接口,支持代码执行、查询、派生表等能力。
已在代码中提供了用于单元测试的工具、后端实现、数据集注册与工具注册机制,确保 MCP 客户端可以通过统一接口进行交互。
-
安装步骤
- 安装依赖并获取源码:将仓库代码获取到本地。
- 前置数据准备:根据需要的数据集(如 mimic-iv 全量、demo、eicu 等)准备 DuckDB 数据库或配置 BigQuery,确保数据存在与可访问。
- 启动 MCP 服务器:在项目根目录执行并保持运行,启动命令建议为 python -m m4.mcp_server(服务器端入口)。若你使用自定义启动脚本,请确保入口与参数与客户端一致。
- 配置 MCP 客户端:使用客户端(Claude/Cursor/LibreChat 等)连接服务器。客户端需要的配置通常包含服务器名称、启动命令及参数等,具体请依据 MCP 客户端的使用文档进行设置。
- 测试与接入:在客户端配置好后,重新启动客户端并加载服务器提供的能力、资源和工具描述,开始与数据进行交互。
-
服务器配置(JSON 配置示例说明,不是代码,方便理解)
配置的核心是为 MCP 客户端暴露一个服务器端点,并指向启动服务器的命令与参数。以仓库中测试用例的实现为依据,常见字段如下(具体字段名以你的 MCP 客户端配置界面为准):- serverName:m4
- command:python3
- args:["-m", "m4.mcp_server"]
说明:serverName 指定 MCP 客户端在其 UI 或设置中显示的服务器名称;command 和 args 指定启动 MCP 服务器的命令行,确保客户端能够以相同的启动方式连接到服务器。测试用例中对这类配置有明确断言,确保客户端在连接时能够正确启动并与 MCP 服务握手。
额外的可选字段(用途说明) - env:环境变量字典,可用于传递后端配置(如后端类型、数据集名称、API 密钥等)
- description:对服务器的简短描述
- workingDir:服务器工作目录,便于定位资源与日志
- healthCheckEndpoint:健康检查端点,用于对接客户端的健康监控
-
基本使用方法
- 启动后端服务器:在项目根目录执行启动命令(如 python -m m4.mcp_server)。
- 配置 MCP 客户端:在客户端的 MCP 设置中填写服务器名称、启动命令与参数,确保客户端能够通过 JSON-RPC 与服务器通信。
- 连接与交互:通过客户端发起对资源、工具、Prompt 的读取与调用请求;服务器返回标准化的 JSON-RPC 响应,或发送通知。
- 运行与调试:如遇连接问题,请查看客户端日志与服务器日志,确认服务器是否已正常启动、端口是否开放、以及后端数据源是否可访问。
-
备注
本实现包含大量与数据集、工具、DERIVED 表等相关的单元测试,覆盖了多种数据场景和安全性检查,证明了 MCP 服务器端的核心能力与稳定性。仓库还提供了面向客户端的 Python API(src/m4/api.py)以及 CLI 与 MCP 集成测试,便于本地开发、演示和集成验证。