MEVA Health AI MCP Server
MEVA
医学证据验证代理
功能: MEVA 使用确定性(非 AI)验证器,评估 AI 生成的病历声明是否基于检索到的合成 FHIR 证据——不提供诊断、不提供治疗建议、不涉及真实患者数据。
🧪 在线沙箱
在浏览器中试用 MEVA——无需 Ollama、无需 API 密钥、无需安装。
▶ 打开在线沙箱
仅含合成数据 — 21 个虚构的、由 Synthea 生成的患者
确定性验证器 — 每个结果均来自纯 Python 证据匹配,而非模型的判断
公共沙箱中不运行 AI 模型 — 您自行构建声明,MEVA 会将其与实际记录的(合成)数据进行核对
MEVA 不是医疗聊天机器人、诊断 AI、临床决策支持工具、治疗推荐系统或医疗设备。 它未经临床验证。所有患者数据均为 100% 合成数据。完整声明请参阅下方的范围与安全以及
docs/safety-and-scope.md。
Related MCP server: MediLinkAI
查看 MEVA 的实际效果
来自在线托管沙箱的截图——仅含合成数据,不构成医疗建议,且托管沙箱中不运行 AI 模型(每个结果均来自 MEVA 的确定性验证器,而非模型的判断)。
引导模式

引导模式——选择一个虚构的患者,使用简单的英语工作流来验证声明。
基于证据的验证

MEVA 会将声明与记录的合成 FHIR 证据进行核对,并返回 SUPPORTED、CONTRADICTED、UNSUPPORTED 或 UNVERIFIABLE。
高级模式

高级模式——面向开发者、研究人员和贡献者的技术证据浏览器和结构化声明控件。
为何存在 MEVA
本地 AI 代理可以调用工具、检索真实数据并生成结构化的“答案”——但没有任何机制强制该结构化答案与代理检索到的证据实际匹配。MEVA 直接衡量这一差距,其验证器从不信任模型对自身正确性的自我报告。
架构
flowchart TD
A[Synthetic Synthea FHIR data] --> B[MEVA FHIR layer]
B --> C[MCP tools]
C --> D[Local AI model - via Ollama]
D --> E[Natural-language answer]
E --> F[Claim extraction]
F --> G[Deterministic evidence verifier]
G --> H[Benchmark / report]MEVA 支持两种评估模式,分别报告,绝不合成为一个分数(参见 docs/decoupled-evaluation.md):
END_TO_END —— 被测模型回答一个问题,并在单次运行中将自身的答案编码为 MEVA 的结构化
MedicalClaim模式。DECOUPLED —— 被测模型仅以自然语言作答;一个单独的固定提取器模型将保存的文本转换为结构化声明,并以相同方式进行验证。这便将“模型是否知道正确答案”与“模型是否正确格式化了 JSON”分离开来。
在这两种模式下,最终验证步骤——将声明与实际证据进行匹配——始终是纯粹的、确定性的 Python 代码。任何 LLM 都不会评判自身(或其他模型)的正确性。
快速开始
git clone https://github.com/Tanz2024/meva-health-ai
cd meva-health-ai
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
pytestMEVA 设计为在此仓库的克隆副本内运行(如上所述——先
git clone,再进行可编辑安装),而非作为从其他地方安装的独立软件包。其合成 FHIR 夹具(data/synthetic/synthea/)和基准定义(benchmarks/)是从仓库相对路径读取的,而不是作为可安装的包数据捆绑在一起的——在仓库检出目录之外通过pip install安装构建的 wheel/sdist 将无法获得患者数据。这是当前有意的范围(这是一个研究/工程仓库,而非分发库)——如果将来发生变化,请参阅docs/publishing-checklist.md。
这会运行完整的离线测试套件(无需 AI 模型——参见无 AI 即可运行的内容)。
可选——本地 AI:
ollama pull qwen3:4b
python3 examples/verify_local.py更多可运行脚本请参阅 examples/,有关 MEVA 如何与 Ollama 通信,请参阅 docs/local-ai.md。
无 AI 即可运行的内容(无需 Ollama)
MEVA 的大部分功能在完全不需要 AI 模型的情况下即可运行:
FHIR 解析(
src/meva/fhir/)确定性证据验证(
src/meva/verification/)基准数据集加载与验证(
meva.benchmark.validator)完整的离线测试套件(
pytest)验证器挑战示例(
examples/verify_contradiction_demo.py)——这些示例使用手写的错误声明测试 MEVA 自身的验证逻辑,不涉及实时模型
仅在真正运行本地模型推理(examples/ask_local.py、examples/chat_local.py)或模型辅助声明提取(examples/run_decoupled_pilot.py、run_decoupled_full.py、run_extractor_fidelity.py)时才需要 Ollama。
合成数据
MEVA 的公共患者夹具(data/synthetic/synthea/patient-01.json 至 patient-21.json)由本项目在本地生成,使用获得 Apache-2.0 许可的官方 Synthea 生成器(固定于标签 v3.4.0),并使用固定、有文档记录且可复现的种子。任何位置都不包含真实患者数据。完整的生成细节(确切命令、种子以及每个文件的 SHA-256 哈希值)请参见 data/synthetic/synthea/PROVENANCE.md。完整情况(包括为什么早期一组 18 名患者(用于 Stage 8A)被替换——这组早期患者是从一个未声明许可证的仓库复制的,已不再属于公共数据集)请参阅 docs/synthetic-data.md(另见 docs/historical-sample-data-provenance.md)。
基准测试结果
MEVA 有两个已记录的基准数据集,二者绝不能混为一谈:
公共可复现数据集:benchmark v0.4 ——完全基于上述本地生成的 Apache-2.0 夹具构建(53 个病例,16 位唯一患者;参见 benchmarks/v0.4/manifest.json)。v0.4 模型对比结果待定 ——尚未对 v0.4 进行过 qwen3:4b/llama3.2:3b 运行。
历史开发结果:benchmark v0.3 ——以下是完整的 qwen3:4b 与 llama3.2:3b 对比结果。该结果是在现已移除的旧患者集(见上文)上测得的——它仍然是方法论和研究结论的有效历史开发记录,但不是当前公共 v0.4 数据集上的结果,二者不得直接比较。完整报告:docs/baseline-results-v0.3.md(下表中的数字使用了修正后的 Stage 7C2.1 可验证覆盖率公式——修正历史请参阅该文档;未修正的原始数字也同时予以披露,并未隐藏)。
不宣布获胜者。 请将事实依据分数与可验证覆盖率结合阅读——基于极少数可核查声明计算出的高事实依据分数,看起来会比实际更好。
检索 + END_TO_END 结构化输出指标(v0.3,历史)
qwen3:4b | llama3.2:3b | |
工具召回率 | 1.000 | 0.981 |
工具精确率 | 1.000 | 1.000 |
工具精确匹配 | 1.000 | 0.962 |
证据召回率 | 0.810 | 0.738 |
E2E 结构化有效性 | 0.917 | 0.087 |
E2E 可验证覆盖率 | 0.656 | 0.120 |
E2E 事实依据分数 | 83% | 70% |
DECOUPLED 评估(v0.3,历史;单独的固定 qwen3:4b 提取器)
qwen3:4b | llama3.2:3b | |
DECOUPLED 可验证覆盖率 | 0.990 | 0.987 |
DECOUPLED 事实依据分数 | 89% | 80% |
DECOUPLED 评估使用 qwen3:4b 作为固定的声明提取器,处理两个模型保存的答案,包括 qwen3:4b 自身的——这引入了潜在的提取器特定偏差,该偏差已在 docs/decoupled-evaluation.md 中明确记录。END_TO_END 和 DECOUPLED 回答的是不同的问题,绝不能解读为“模型变得更好了”。
提取器验证——提取器并非完美
开发集(10 个夹具) | 留出集(14 个未见夹具) | |
精确率 | 1.000 | 0.929 |
召回率 | 1.000 | 0.813 |
F1 | 1.000 | 0.867 |
精确声明集匹配 | 1.000 | 0.857 |
阴性声明保留 | 1.000 | 1.000 |
属性准确率 | 1.000 | 0.750 |
不要将上文 ~99% 的 DECOUPLED 覆盖率数字解读为“99% 的提取准确率”。 覆盖率衡量的是验证器能够检查多少提取器的输出;这里的留出集数字则衡量该输出是否真正与源回答所说的匹配。
观察类别相关发现
两个模型在观察类别问题上的得分都异常低:qwen3:4b 为 20%,llama3.2:3b 为 0% 事实依据分数(每组 n=10 个案例)。Stage 7D2.2 使用 MEVA 的真实 FHIR 数据和工具层对每个观察案例进行了独立审计,发现没有任何基础设施或评估缺陷会使这些结果无效——20 个模型-案例对中有 18 个是真实的模型事实依据错误。完整审计:docs/observation-audit.md。这描述的是基准测试行为,而非临床性能。
试用 MEVA(仅确定性验证,无 AI 模型)
探索 MEVA 确定性验证器针对 21 个公共 v0.4 合成患者的四种方式——均不需要 AI 模型:
公共托管沙箱(无需安装): 打开在线沙箱
本地浏览器沙箱:
pip install -e ".[playground]"
streamlit run streamlit_app.py本地 CLI 试验场:
python3 examples/playground.py demo
python3 examples/playground.py list-patients
python3 examples/playground.py verify --patient-id <id> --category allergy --assertion present --value "Peanut"完整的本地 AI 模式(可选,需要 Ollama——请参阅下文无 AI 即可运行的内容)。
这四种方式共享同一个服务层(meva.playground),并调用 MEVA 真实、未修改的验证器——您自行陈述声明(类别/断言/值);MEVA 会将其与实际记录的数据进行核对,并返回 SUPPORTED/CONTRADICTED/UNSUPPORTED/UNVERIFIABLE 及完整的溯源信息。完整细节(包括四种方式的区别):docs/playground.md。
有关托管沙箱的截图(引导模式、验证结果和高级模式),请参阅本 README 顶部的查看 MEVA 的实际效果。
文档
文档 | 内容 |
| MEVA 是什么、不是什么 — 请先阅读 |
| 合成患者数据的来源 |
| MCP 工具层 |
| MEVA 如何与本地 Ollama 模型通信 |
| 确定性验证器 |
| 可复现性设置能/不能保证什么 |
| 基准测试引擎 |
| 数据集构建与验证 |
| 多模型比较方法论 |
| 为什么 END_TO_END 和 DECOUPLED 都存在 |
| 声明提取模式契约 |
| 观察类别合理性审计 |
| 完整基准测试 v0.3 报告(历史) |
| 公共夹具生成来源 |
| 前患者数据集被替换的原因/方式 |
| 公共确定性验证器游乐场(CLI) |
范围与安全性
MEVA 使用仅合成(Synthea 生成)的患者数据 — 不包含也不应贡献任何真实患者数据。它不提供诊断或治疗建议,并且未经临床验证。其指标(Evidence Grounding Score、Verifiable Claim Coverage 等)是工程/研究基准指标 — 它们衡量模型的声明是否与检索到的证据匹配,而非医学正确性、诊断准确性或患者安全。所有 AI 推理均仅限本地,通过 Ollama 进行 — MEVA 从不调用付费或云端 AI API。完整声明:docs/safety-and-scope.md。
贡献
选择一个 issue(或提出一个)
Fork 该仓库
创建一个分支
进行你的修改
运行
pytest打开一个 pull request
完整的设置、测试细节,以及如何添加 FHIR 支持、基准测试用例(仅限合成数据)、验证器测试或模型适配器:CONTRIBUTING.md。另请阅读 CODE_OF_CONDUCT.md。
寻找第一个贡献?
查看开放的 GitHub issues: https://github.com/Tanz2024/meva-health-ai/issues
一个好的起点是标记为 good first issue 或 help wanted 的 issue。
更多建议的贡献领域请参阅 docs/contributor-issues.md,设置和提交指南请参阅 CONTRIBUTING.md。
许可证
MEVA 的源代码和本地生成的合成数据均依据 Apache License 2.0 许可。第三方依赖项和模型拥有各自的许可证 — 请参阅 THIRD_PARTY_NOTICES.md。早期一个关于公开再分发的许可问题(一个从无声明许可证的仓库复制的前患者数据集)已在 Stage 8A.1 中通过将该数据替换为本地生成的 Apache-2.0 夹具而解决 — 完整历史请参阅 docs/historical-sample-data-provenance.md。
引用
关于 MEVA v0.1.0 的引用元数据,请参阅 CITATION.cff。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA clean-room SHARP-on-MCP compliant FHIR R4 MCP server that enables AI agents to interact with any FHIR R4 endpoint using SHARP context headers, without server-side OAuth. It provides clinical tools, lab results, imaging, and interactive MCP-UI dashboards.MIT
- Alicense-qualityDmaintenanceClinical decision-support MCP server that lets AI agents reason over live FHIR patient data for medication review, appointment scheduling, and care gap identification.7,813MIT

Agent-Townofficial
Alicense-qualityCmaintenanceA neutral verification court for AI tools that ranks MCP servers by executing them against ground truth and recording results. Enables agents to consult execution records, contribute verdicts, and challenge claims.Apache 2.0- AlicenseAqualityBmaintenanceA Claude-compatible MCP server that exposes health-domain tools over 100% synthetic data, built with security and compliance in mind.4MIT
Related MCP Connectors
Hosted MCP endpoint with realistic fake data for prototyping agents. 12 tools, no setup.
Deterministic fact verification for AI agents — checksums & curated data, not guesses.
Read-only MCP over an agentic SLR workspace with per-claim citation verification
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Tanz2024/meva-health-ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server