mychart について
mychart は Epic MyChart の患者ポータルに接続する MCP サーバーで、自分の検査結果の確認や PDF のダウンロードに使えます。Playwright でポータルを操作し、利用者は表示されたブラウザーで認証情報を入力して MFA を完了します。
主な機能
- 01MyChart ポータル URL の設定
- 02対話型ログインと MFA の完了
- 03検査結果の一覧表示と確認
- 04検査結果の PDF 保存
- 05自動化ブラウザーのスクリーンショット確認
活用シーン
- 01個人の検査結果と基準範囲の確認
- 02検査結果 PDF のダウンロード
- 03保存済みセッションの状態確認
- 04ポータルページ読み取りの問題調査
MCP 対応
ポータル設定、ログイン状態、検査結果の一覧と詳細、PDF ダウンロード、スクリーンショットのツールを MCP クライアントに提供します。利用者はブラウザーでログインと MFA を行い、認証情報は MCP ツール引数を通りません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| url | string | はい | 医療システムの MyChart サイト上の任意の URL。例: https://mychart.virtua.org/MyChartPRD |
詳細
MyChart MCP サーバー
Epic MyChartの患者ポータルに接続し、ログインして検査結果を一覧表示し、PDF としてダウンロードする MCP(Model Context Protocol)サーバーです。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 | すべての検査結果を一覧表示します(「さらに表示」を自動で展開)。ID は r1, r2, ... の形式です。 |
mychart_get_test_result | 1 件の検査結果の読みやすい全文(値、基準範囲、コメント)を取得します。 |
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 は引き続きウィンドウでご自身が完了します)。任意です。ウィンドウで直接入力する方法がデフォルトで、最も安全です。 |
基本的な流れ
mychart_set_providerにポータルの URL を指定します(例: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ウェブポータルを自動操作して、HIPAAに基づく権利であるご自身の健康記録にアクセスします。ただし、ポータルのスクレイピングはEpicによって公式に認められていません。ご自身の判断でご利用ください。
- MyChartのDOMは、医療システムやEpicのバージョンによって異なります。一覧を取得しても何も見つからない場合は、
mychart_screenshotを使ってレンダリングされたページを確認してください。プロバイダーによってはセレクターの調整が必要な場合があります。一部のシステムでは、MyChartがわかりにくいドメイン(例:mychart.<org>.orgではなくsecure.<org>.org)でホストされています。ブラウザーからURLをそのまま貼り付けてください。 - サーバーは、システムにインストールされているChrome(次にEdge、その次にPlaywrightに同梱されたChromium)を優先します。実際のChromeではアプリに紐づくCookieの暗号化により、プロファイル全体を同じブラウザーブランドで使い続ける必要があり、一部のWindowsマシンでは同梱ビルドを実行できません。
- PDFのダウンロードでは、バージョンごとの「Download」ボタンを探すのではなく、ヘッドレスChromeで結果の詳細ページをレンダリングします(
page.pdf)。この方法はバージョンに依存しません。 - セッションはアイドル状態が続くとサーバー側で期限切れになります。その場合は、
mychart_loginを再度実行してください。 login-helper.mjs、run-direct.mjs、run-batch.mjsは、ビルド済みのdist/コードを直接実行します。MCPクライアントを介さずに再ログインしたり、データをまとめて取得したりする際に便利です。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。