关于 mychart
mychart 是连接 Epic MyChart 患者门户的 MCP 服务,供用户查看自己的检验结果并下载 PDF。它通过 Playwright 操作门户网站,登录时由用户在可见浏览器中输入凭据并完成 MFA。
主要功能
- 01设置 MyChart 门户地址
- 02交互式登录并完成 MFA
- 03列出并查看检验结果
- 04将检验结果保存为 PDF
- 05查看自动化浏览器截图
适用场景
- 01查看个人检验结果及参考范围
- 02下载检验结果 PDF
- 03检查保存的登录会话状态
- 04排查门户页面读取问题
MCP 相关
向 MCP 客户端提供门户配置、登录状态、检验结果列表与详情、PDF 下载和截图等工具。用户在浏览器中完成登录和 MFA,凭据不会经由 MCP 工具参数传递。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
8收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| url | string | 是 | 医疗系统 MyChart 站点上的任意 URL,例如 https://mychart.virtua.org/MyChartPRD |
详细介绍
MyChart MCP 服务
一个 MCP(Model Context Protocol)服务,可连接任意 Epic MyChart 患者门户,登录、列出您的检查结果并将其下载为 PDF,帮助 AI 助手解读您自己的化验结果。
Epic 不提供简单的公开登录 API(官方 FHIR 途径要求每个机构分别注册应用),因此此服务使用 Playwright 操作 MyChart 网站:
- 登录过程交互式且私密——会打开一个可见的浏览器窗口;您自行输入用户名和密码并完成 MFA。凭据绝不会经过 AI、MCP 协议或此服务的工具参数。
- 会话会持久保存——登录后,Cookie(包括 MyChart 的会话级身份验证 Cookie)会导出到磁盘,并在每次启动时重新加载,因此后续操作可在无头模式下运行,直到门户端使会话过期。
- 兼容不同版本的 MyChart——抓取时会先尝试现代 SPA 路由(
/app/test-results),再尝试经典路由,并使用宽松的选择器。
工具
| 工具 | 用途 |
|---|---|
mychart_set_provider | 设置您所在医疗系统的 MyChart URL(仅需设置一次)。粘贴其 MyChart 网站上的任意 URL。 |
mychart_login | 打开可见的浏览器窗口;您可在其中登录并完成 MFA。 |
mychart_session_status | 检查服务提供方配置,以及已保存的会话是否仍然有效。 |
mychart_list_test_results | 列出所有检查结果(自动展开“显示更多”),并提供 r1, r2, ... 等 ID。 |
mychart_get_test_result | 获取单项结果的完整可读内容(数值、范围、备注)。 |
mychart_download_test_result | 将结果保存为 PDF 到 ~/.mychart-mcp/downloads。 |
mychart_screenshot | 调试:生成自动化浏览器所见内容的整页 PNG。 |
mychart_close_browser | 关闭浏览器进程(会话仍保存在磁盘上)。 |
安装
npm install -g mychart-mcp-server
npx playwright install chromium
或从源代码安装:
git clone https://github.com/kriskraw80/mychart-mcp-server.git
cd mychart-mcp-server
npm install
npx playwright install chromium
npm run build
注册到 Claude Code / Claude Desktop
{
"mcpServers": {
"mychart": {
"command": "npx",
"args": ["mychart-mcp-server"]
}
}
}
(或者,将 command 指向 node,并将 args 设为 ["<path>/dist/index.js"],用于源码检出。)更改配置后,请重启 MCP 客户端。
可选环境变量
| 变量 | 用途 |
|---|---|
MYCHART_URL | 默认服务提供方 URL(可替代 mychart_set_provider)。 |
MYCHART_USERNAME / MYCHART_PASSWORD | 如果在服务进程中设置,登录表单会预填这些信息(您仍需在窗口中完成 MFA)。可选——默认且最安全的做法是在窗口中输入。 |
典型流程
- 使用您的门户 URL 调用
mychart_set_provider(例如https://mychart.example-health.org/MyChart) - 调用
mychart_login→ 在打开的窗口中登录并完成 MFA(勾选“记住此设备”) - 调用
mychart_list_test_results→ 返回r1, r2, ... - 调用
mychart_get_test_result r1或mychart_download_test_result r1
数据位置
所有文件都位于 ~/.mychart-mcp/ 下——请勿将其放在同步文件夹中(Chromium 配置文件无法适应文件同步):
config.json— 服务提供方 URLbrowser-profile/— 持久化的 Chromium 配置文件storage-state.json— 导出的会话 Cookie(每次启动时重新加载)results-cache.json— 上次列表调用生成的 ID → 结果 URL 映射downloads/— PDF 和截图
备注与限制
- 仅供个人使用,不提供担保。 此工具会自动操作 MyChart Web 门户,以访问你自己的健康记录——这是你依据 HIPAA 享有的权利——但 Epic 并未正式认可抓取门户的做法。请自行决定是否使用。
- MyChart 的 DOM 会因医疗系统和 Epic 版本而异。如果列出内容时没有结果,请使用
mychart_screenshot查看渲染后的页面;可能需要针对你的医疗服务提供方调整选择器。有些系统会在不太明显的域名上托管 MyChart(例如secure.<org>.org,而不是mychart.<org>.org)——直接从浏览器复制 URL。 - 服务会优先使用系统安装的 Chrome(其次是 Edge,然后是 Playwright 自带的 Chromium)——真实 Chrome 的应用级 Cookie 加密要求整个配置文件始终使用同一浏览器品牌,而且有些 Windows 计算机无法运行自带的构建版本。
- PDF 下载会通过无头 Chrome(
page.pdf)渲染结果详情页,不依赖版本,而不是查找各版本对应的“下载”按钮。 - 会话在服务器端闲置一段时间后会过期;只需再次运行
mychart_login。 login-helper.mjs、run-direct.mjs和run-batch.mjs会直接驱动已构建的dist/代码——无需 MCP 客户端介入,即可重新登录或批量获取内容,非常方便。
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。