关于 rxlocal-mcp
rxlocal-mcp 通过已登录的 RxLocal 浏览器会话读取处方、药房消息和账户信息,并可请求续配或发送消息,面向 RxLocal 患者门户用户。写入操作需先生成预览并经确认;项目说明这些写入接口尚未在真实门户验证。
主要功能
- 01读取处方与续配选项
- 02查看药房消息、账户资料和通知
- 03请求续配或处方续开
- 04向主要药房发送纯文本消息
- 05写入操作预览后确认
- 06复用已登录浏览器会话
适用场景
- 01查看处方剩余续配次数与有效期
- 02确认药房的取药、配送或邮寄选项
- 03向药房发送安全消息
- 04在确认前检查续配请求内容
MCP 相关
MCP 服务通过 ContextMint Bridge 从已登录的浏览器标签页复用会话,提供 RxLocal 读取与写入工具。续配和消息写入受确认门控;文档指出其网络写入行为尚未实测验证。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 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 是否正常运行 |
药房撰写的文本(消息正文、续药免责声明)会放在不可信内容封装中返回:它们是数据,而不是指令。
它如何访问你的数据
桥接程序会从你已登录的标签页读取两项内容:Web 应用持有的短期 bearer,以及标签页的 session-id Cookie。随后,服务会自行调用 API,并添加门户公开的 portalid 标头(Web 应用的 patientPortalID 常量,每次请求都会发送)。处方和消息都需要这三项;缺少标头或 Cookie 时,响应会是 401。早期版本没有发送这两项,因此得出数据无法访问的结论;实际上并非如此(已于 2026-10-29 进行实时只读验证)。
服务会复用标签页的会话,不会自行开启会话:门户每位用户仅保留一个会话,开启新会话会让你的浏览器退出登录。收到 401 后,它会在下一次调用时重新读取标签页,因此只需重新加载标签页即可。
写入操作
| 工具 | 操作 |
|---|---|
rxlocal_request_refill | 为你的一个或多个处方申请续药;对于需要续方的处方,则向处方医生申请续方。你可以选择自取、配送或邮寄;选择自取时,还可以指定时间和日期。预览前会将请求与实时续药列表(每项都必须显示 canRequestRefill)、该地点的选项及自取日历进行核对。一次请求中的所有处方都必须属于你,且位于同一地点。 |
rxlocal_send_message | 向你的主要药房地点发送纯文本安全消息。不支持附件。 |
尚未在线路上验证。 两种发送操作均根据 RxLocal Web 应用的 JavaScript bundle(POST refill/<groupOwnerID>/v1 和 POST Messaging/CreatePatientMessage)推导而来。目前尚未向实时门户发送过。之后会由所有者监督进行实时测试以确认。在此之前,请通过 rxlocal_list_prescriptions(refillRequestStatus)或 rxlocal_list_messages 检查结果。
每项写入操作只会发送一次。遇到 429 时绝不会重试;遇到 401 时会直接失败,不会重新读取 token 或重放请求。如果写入操作已发送,但收到 5xx、超时或连接中断,工具会报告 status: "unknown"。这表示操作可能已经成功,因此请先检查,再尝试重发。
确认门控
每次写入都通过 @chrischall/mcp-utils 的 confirmWrite 进行门控,使用其
defineWrite / registerWrite。首次调用会读取门户以进行验证,不会发送任何内容,并返回预览 + 一个 confirmToken。只有第二次调用携带该令牌时才会发送,而且必须在你批准预览后才会发送。令牌会绑定确切的请求正文和显示的预览,因此,如果预览后参数或门户状态发生变化,请求将被拒绝,并返回 DRAFT_CHANGED。
MCP_CONFIRM_MODE / MCP_CONFIRM_ELICITATION 可调整此行为(参见环境变量表)。
设置
环境中未配置凭据——服务会通过 ContextMint Bridge 浏览器扩展,从已登录的标签页读取短期 Keycloak 令牌。安装扩展,登录 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 身份密钥对的存储位置(默认值为 ~/.fetchproxy/identity/)。 |
MCP_CONFIRM_MODE | 所有写入的确认门控模式(默认值为 ask-user)。ask-user = 预览 + confirmToken 往返;auto 允许具备相应能力的宿主通过一步完成确认;无法识别的值会安全失败(refuse)。 |
MCP_CONFIRM_ELICITATION | on(默认值)允许宿主以交互方式确认写入;off 强制执行 confirmToken 往返。 |
仅使用 Shell 的替代方案
轻量级 fpx 技能位于 skills/rxlocal-fpx/,无需 MCP 进程。
它涵盖读取操作:个人资料、年龄门控、处方、续药选项、
消息和通知。它不会发送任何内容。
开发
npm install
npm run build
npm test # typecheck + vitest, fully mocked, no network
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。