mcpField
R
rxlocal-mcp

rxlocal-mcp

本地服务
github.com/chrischall健康医疗01 周前更新

关于 rxlocal-mcp

rxlocal-mcp 通过已登录的 RxLocal 浏览器会话读取处方、药房消息和账户信息,并可请求续配或发送消息,面向 RxLocal 患者门户用户。写入操作需先生成预览并经确认;项目说明这些写入接口尚未在真实门户验证。

主要功能

  1. 01读取处方与续配选项
  2. 02查看药房消息、账户资料和通知
  3. 03请求续配或处方续开
  4. 04向主要药房发送纯文本消息
  5. 05写入操作预览后确认
  6. 06复用已登录浏览器会话

适用场景

  1. 01查看处方剩余续配次数与有效期
  2. 02确认药房的取药、配送或邮寄选项
  3. 03向药房发送安全消息
  4. 04在确认前检查续配请求内容

MCP 相关

MCP 服务通过 ContextMint Bridge 从已登录的浏览器标签页复用会话,提供 RxLocal 读取与写入工具。续配和消息写入受确认门控;文档指出其网络写入行为尚未实测验证。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chrischall-rxlocal": {
"command": "npx",
"args": [
"-y",
"rxlocal-mcp"
],
"env": {
"RXLOCAL_DISABLE_FETCHPROXY": "<RXLOCAL_DISABLE_FETCHPROXY>",
"FETCHPROXY_WS_PORT": "<FETCHPROXY_WS_PORT>",
"FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
"FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
}
}
}
}
启动命令npx -y rxlocal-mcp
需要配置的环境变量
RXLOCAL_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmrxlocal-mcp0.3.1

工具

10

收录的工具列表 · 更新于 1 周前

参数类型必填说明
viewenum否响应结构:“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_DIRfetchproxy 身份密钥对的存储位置(默认值为 ~/.fetchproxy/identity/)。
MCP_CONFIRM_MODE所有写入的确认门控模式(默认值为 ask-user)。ask-user = 预览 + confirmToken 往返;auto 允许具备相应能力的宿主通过一步完成确认;无法识别的值会安全失败(refuse)。
MCP_CONFIRM_ELICITATIONon(默认值)允许宿主以交互方式确认写入;off 强制执行 confirmToken 往返。

仅使用 Shell 的替代方案

轻量级 fpx 技能位于 skills/rxlocal-fpx/,无需 MCP 进程。 它涵盖读取操作:个人资料、年龄门控、处方、续药选项、 消息和通知。它不会发送任何内容。

开发

npm install
npm run build
npm test        # typecheck + vitest, fully mocked, no network

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。