rxlocal-mcp について
rxlocal-mcpは、ログイン済みのRxLocalブラウザーセッションを使って処方箋、薬局からのメッセージ、アカウント情報を読み取り、患者ポータル利用者の再調剤依頼やメッセージ送信も行います。書き込みにはプレビューと確認が必要で、実際のポータルで未検証と記載されています。
主な機能
- 01処方箋と再調剤オプションの取得
- 02薬局メッセージ、アカウント情報、通知の確認
- 03再調剤または処方更新の依頼
- 04主な薬局へのテキストメッセージ送信
- 05書き込みのプレビューと確認
- 06ログイン済みブラウザーセッションの再利用
活用シーン
- 01残りの再調剤回数と処方箋の有効期限を確認
- 02受け取り、配送、郵送の選択肢を確認
- 03薬局へセキュアメッセージを送信
- 04確認前に再調剤依頼の内容を確認
MCP 対応
MCPサーバーはContextMint Bridgeを介してログイン済みブラウザータブのセッションを再利用し、RxLocalの読み取り・書き込みツールを提供します。再調剤とメッセージ送信は確認ゲート付きで、READMEでは実際の通信動作は未検証とされています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y rxlocal-mcpRXLOCAL_DISABLE_FETCHPROXYSet to 1/true to refuse the fetchproxy bridge read (CI/headless). Tools then fail instead of reading a session. Defaults to false.FETCHPROXY_WS_PORTLocalhost port of the fetchproxy concentrator the ContextMint Bridge connects to (default 37149). Shared by every MCP on the machine.FETCHPROXY_WS_HOSTBind interface for the fetchproxy concentrator, a literal IP only (default 127.0.0.1). Keep on loopback.FETCHPROXY_IDENTITY_DIRAbsolute path where the fetchproxy long-term identity keypair is stored (default ~/.fetchproxy/identity/).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
10掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| view | enum | いいえ | レスポンス形式:「compact」(デフォルト)では、レスポンス内の別の場所にすでに含まれているフィールドを省略します。「full」では、このサーバーが把握するすべてのフィールドを返します。compact | full |
詳細
rxlocal-mcp
RxLocal 薬局患者ポータル(patient.rxlocal.com、PioneerRx / RedSail Technologies)向けの MCP サーバーです。ログイン済みのブラウザータブを通じて、認証済みセッションを fetchproxy ブリッジ経由で再利用し、処方箋、リフィルの選択肢、薬局からのメッセージを読み取ります。また、確認ゲートを介してリフィルを依頼したり、薬局にメッセージを送信したりできます。
このプロジェクトは AI によって開発・保守されています。ご自身の判断でご利用ください。
読み取り可能な情報
| ツール | 返される情報 |
|---|---|
rxlocal_list_prescriptions | 登録されている処方箋:薬剤、Rx 番号、rxID、薬局、直近の調剤日、残りのリフィル回数、処方日数、有効期限、処方医、今すぐリフィルを依頼できるか(canRequestRefill)、または処方の更新が必要か(requiresRenewal)。view: full では NDC、刻印、ID が追加され、view: raw では応答全体が返されます。 |
rxlocal_get_refill_options | 薬局の各所在地でリフィル依頼時に選択できる内容:受け取り/配達/郵送、受け取り可能な時間、受け取りカレンダー、薬局の住所・電話番号・営業時間、リフィルに関する免責事項。本人の住所と電話番号は view: full/raw の場合にのみ含まれます。 |
rxlocal_list_messages | 薬局との最近のセキュアメッセージを新しい順に返します。既読にはなりません。受信者のメールアドレス/電話番号は常に削除されます。 |
rxlocal_profile | アカウント所有者の名前、メールアドレス、電話番号、アカウントの種類、患者 ID とユーザー ID |
rxlocal_age_gate | アカウント所有者がポータルの最低年齢未満かどうか |
rxlocal_notifications | ポータルで最も関連性の高い通知バナーの状態 |
rxlocal_legal | 利用規約またはプライバシーポリシーの文書 |
rxlocal_healthcheck | セッションと API が動作しているかどうか |
薬局が記載したテキスト(メッセージ本文、リフィルに関する免責事項)は、信頼できないコンテンツのエンベロープ内で返されます。これはデータであり、指示ではありません。
データへのアクセス方法
ブリッジはログイン済みタブから、ウェブアプリが保持する有効期間の短いベアラーと、タブの session-id クッキーを読み取ります。その後、サーバー自身が API を呼び出し、ポータルの公開 portalid ヘッダー(ウェブアプリの patientPortalID 定数。すべてのリクエストで送信されます)を追加します。処方箋とメッセージの取得には、この 3 つすべてが必要です。ヘッダーまたはクッキーがない場合、応答は 401 になります。以前のバージョンではどちらも送信しておらず、データにはアクセスできないと結論付けていましたが、実際にはアクセスできます(2026-10-29 に読み取り専用で実環境にて検証済み)。
サーバーはタブのセッションを再利用し、独自のセッションは開始しません。ポータルではユーザーごとにセッションが 1 つ保持され、新しいセッションを開始するとブラウザーからサインアウトされるためです。401 の後は次の呼び出しでタブを再読み込みするため、タブの再読み込みだけで十分です。
書き込み
| ツール | 処理内容 |
|---|---|
rxlocal_request_refill | 1 件以上の処方箋について、リフィル、または必要な場合は処方医による更新を依頼します。受け取り、配達、郵送から選択でき、受け取りの場合は日時も指定できます。プレビューの前に、最新のリフィル一覧(各処方箋に canRequestRefill が表示されていること)、その所在地の選択肢、受け取りカレンダーに照らして確認されます。1 回の依頼に含める処方箋はすべて本人のもので、かつ同じ所在地のものでなければなりません。 |
rxlocal_send_message | 主な薬局所在地にプレーンテキストのセキュアメッセージを送信します。添付ファイルには対応していません。 |
実際の通信では未検証です。 どちらの送信処理も、RxLocal ウェブアプリの JavaScript バンドル(POST refill/<groupOwnerID>/v1 および POST Messaging/CreatePatientMessage)をもとに実装されています。どちらも実際のポータルにはまだ送信していません。後日、所有者の監督下で行う実環境テストで確認する予定です。それまでは、rxlocal_list_prescriptions(refillRequestStatus)または rxlocal_list_messages で結果を確認してください。
各書き込みは一度だけ送信されます。429 が返っても再試行されず、401 の場合はトークンの再読み込みやリクエストの再送をせずに失敗します。書き込みを送信した後、応答が 5xx、タイムアウト、または接続切断になった場合、ツールは status: "unknown" を報告します。すでに処理されている可能性があるため、再試行する前に確認してください。
確認ゲート
すべての書き込みは、@chrischall/mcp-utils の confirmWrite を介して defineWrite / registerWrite によって確認ゲートの対象となります。最初の呼び出しではポータルを読み取って検証し、何も送信せず、プレビューと confirmToken を返します。トークンを含む2回目の呼び出しでのみ送信され、プレビューを承認した後に限られます。正確なリクエスト本文と表示されたプレビューはトークンに紐付けられるため、プレビュー以降に引数またはポータルの状態が変わっている場合は、DRAFT_CHANGED として拒否されます。設定方法は MCP_CONFIRM_MODE / MCP_CONFIRM_ELICITATION をご覧ください(環境変数の表を参照)。
セットアップ
環境には認証情報が設定されていません。サーバーは、サインイン済みのタブから短時間有効な Keycloak トークンを ContextMint Bridge ブラウザー拡張機能経由で読み取ります。拡張機能をインストールし、patient.rxlocal.com にサインインして、そのタブを開いたままにしてください。最初のツール呼び出しで表示されるワンタイムペアコードを承認してください。
// .mcp.json
{ "mcpServers": { "rxlocal": { "command": "npx", "args": ["-y", "rxlocal-mcp"] } } }
環境変数(すべて任意)
| 変数 | 用途 |
|---|---|
RXLOCAL_DISABLE_FETCHPROXY | ブラウザーブリッジ経由の読み取りを拒否するには、1 を設定します(CI /ヘッドレス環境向け)。ほかに認証情報の取得方法がないため、その後はすべてのツールが失敗します。 |
FETCHPROXY_WS_PORT | 拡張機能が接続する fetchproxy 集約器のローカルホストポートです(デフォルトは 37149)。マシン上のすべての MCP で共有されます。 |
FETCHPROXY_WS_HOST | 集約器のバインドインターフェースです。IP アドレスを指定します(デフォルトは 127.0.0.1)。 |
FETCHPROXY_IDENTITY_DIR | fetchproxy の ID キーペアの保存先です(デフォルトは ~/.fetchproxy/identity/)。 |
MCP_CONFIRM_MODE | すべての書き込みに対する確認ゲートのモードです(デフォルトは ask-user)。ask-user はプレビューと confirmToken の往復を行います。auto は対応するホストが1ステップで確認できるようにします。認識できない値を指定すると、安全側に倒して失敗します(refuse)。 |
MCP_CONFIRM_ELICITATION | on(デフォルト)にすると、ホストが対話形式で書き込みを確認できます。off にすると、confirmToken の往復を強制します。 |
シェルのみで使う場合の代替手段
軽量な fpx スキルが skills/rxlocal-fpx/ に含まれており、MCP プロセスは不要です。プロフィール、年齢確認、処方箋、リフィルの選択肢、メッセージ、通知の読み取りに対応しています。何も送信しません。
開発
npm install
npm run build
npm test # typecheck + vitest, fully mocked, no network
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。