关于 Fl Medical Exclusions
Fl Medical Exclusions 是用于核查佛罗里达州 AHCA Medicaid 制裁最终命令的 MCP 服务,支持按姓名、NPI、执照或 Medicaid 供应商编号匹配。它区分参与资格排除与罚款等其他制裁,并标注姓名匹配仅为候选线索。
主要功能
- 01按多种标识核查供应商
- 02区分排除与其他制裁
- 03返回违规代码及说明
- 04提供制裁数据覆盖概况
适用场景
- 01筛查佛州 Medicaid 供应商
- 02核实 NPI 或执照对应记录
- 03查看制裁类型与违规信息
MCP 相关
向 MCP 客户端提供供应商排除核查和数据覆盖概况工具。可经 Pipeworx 网关连接,或作为本地 stdio MCP 服务运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gateway.pipeworx.io/fl-medical-exclusions/mcpclaude mcp add --transport http pipeworx-io-fl-medical-exclusions https://gateway.pipeworx.io/fl-medical-exclusions/mcp{"mcpServers":{"pipeworx-io-fl-medical-exclusions":{"type":"http","url":"https://gateway.pipeworx.io/fl-medical-exclusions/mcp"}}}在 Cursor 中打开{"servers":{"pipeworx-io-fl-medical-exclusions":{"type":"http","url":"https://gateway.pipeworx.io/fl-medical-exclusions/mcp"}}}在 VS Code 中打开{"mcpServers":{"pipeworx-io-fl-medical-exclusions":{"type":"http","url":"https://gateway.pipeworx.io/fl-medical-exclusions/mcp"}}}{"mcpServers":{"pipeworx-io-fl-medical-exclusions":{"serverUrl":"https://gateway.pipeworx.io/fl-medical-exclusions/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@pipeworx/fl-medical-exclusions
佛罗里达州医疗保健管理局(AHCA)Medicaid 制裁提供者筛查——按姓名、NPI、佛罗里达州执照号码或 Medicaid 提供者编号查询提供者,对照 AHCA 根据 s. 409.913, F.S. / Rule 59G-9.070, F.A.C. 发布的约 7,000 项制裁最终命令。这是联邦 HHS OIG LEIE(leie pack)的州级对应项,也是 ny-omig-exclusions(纽约)、ca-medical-exclusions(加利福尼亚州)和 tx-medical-exclusions(德克萨斯州)的同类工具。
属于 Pipeworx — 一个将 AI Agent 连接到 1819+ 个实时数据源的 MCP 网关。这是一个独立的非官方集成,与上游提供方无关联、未获其认可,也非由其发布。
工具
fl_medical_check_exclusion(name?, npi?, license?, medicaid_provider_number?, limit?)— 对照 AHCA 的 Medicaid 制裁最终命令筛查提供者。NPI、执照号码或 Medicaid 提供者编号匹配属于身份确认;姓名匹配——即便完全一致——也仅为候选线索,因为 AHCA 不公布出生日期。每条匹配记录都包含sanction_class和is_participation_exclusion:只有 SUSPENSION(禁止参与一年)或 TERMINATION(禁止参与二十年)才属于排除;罚款和纠正行动计划虽属制裁,但绝不会报告为排除。匹配记录还包含 Rule 59G-9.070 违规代码及 AHCA 发布的说明、罚款金额、AHCA 案件编号、正式/非正式案件编号,以及推导得出的nominal_preclusion_ends。顶层的identified_participation_exclusion是筛查者所需的单比特答案:是否存在与排除令匹配、且达到身份确认级别的记录。fl_medical_exclusion_coverage()— 制裁命令总数、按sanction_class分类的数量、参与排除命令数及涉及的不同提供者数量、包含 NPI/执照号码/Medicaid 提供者编号的命令数量、带 AHCA 代码说明的违规代码计数、最早/最新制裁日期,以及本 pack 副本的捕获时间。
身份验证
无需密钥。
数据来源
- https://apps.ahca.myflorida.com/dm_web/ — AHCA 的 Public Records 搜索。在 Final Orders 下选择“Medicaid Sanctioned Providers”,并将所有筛选条件留空后搜索,即可返回列表。列表由服务端 SSRS ReportViewer 提供,其 Excel 导出包含完整数据集(提供者、Medicaid 提供者编号、执照号码、NPI 号码、提供者类型、呈现日期、制裁类型、违规代码、罚款金额、制裁日期、AHCA 案件编号、正式/非正式案件编号、文档类型)。参见下文“为何需要四次请求的会话”。
- https://apps.ahca.myflorida.com/dm_web/FinalOrdersInformation.pdf — AHCA 自己的代码说明:违规代码说明(7(A)–8(C))和制裁类型定义(CAP、FINE、SUSPENSION = 禁止参与一年、TERMINATION = 禁止参与二十年),本 pack 原样收录。
为何没有开放数据门户镜像——已核实,并非想当然
佛罗里达州完全没有 Socrata 域名:data.florida.gov、opendata.florida.gov、data.flhealth.gov、open.fl.gov 和 data.myflorida.com 在 api.us.socrata.com/api/catalog/v1 均返回 "Domain not found";在整个目录中搜索 "Florida Medicaid exclusion" / "AHCA sanctioned" 也返回 resultSetSize 0(2026-10-08)。Florida Medicaid Web Portal(portal.flmmis.com)发布了 Provider Master List ZIP,但那是已登记提供者名册,并非制裁名单。AHCA 的 Public Records 搜索是唯一来源。
为什么要进行四次请求,而不是直接访问 URL
搜索应用基于 ASP.NET WebForms,URL 路径中嵌入了会话 ID(/dm_web/(S(<24 chars>))/default.aspx),结果页上还有一个 SSRS ReportViewer。scripts/bake-index.mjs 会重放浏览器的操作:
GET /dm_web/— 重定向到包含会话信息的路径;保留 Cookie(__cf_bm、ASP.NET_SessionId)。POST“Medicaid Sanctioned Providers*” 单选按钮的自动回发(__EVENTTARGET=rdlFOMedState$3)。服务器返回一个回发/重定向/获取(post/redirect/get)302,指向同一 URL;跟随重定向并发起 GET。POST最终命令搜索(btnSearchFO=Continue,筛选条件留空,ddlFOType=ALL)——由doc_results_fo.aspx响应,其中包含已绑定报表的ExportUrlBase,位于客户端 JSON 中。可见的 “Show Sanction Data(...)” 链接只会展开折叠面板;报表已在服务器端渲染完成。- 在同一会话中,
GET ExportUrlBase + "EXCEL"— 获取数据集,格式为旧版 BIFF8.xls(attachment; filename="FOReport.xls",约 2.3 MB)。
两个陷阱,均于 2026-10-08 实测:每个页面自身以 __ 开头的隐藏字段都必须原样转发(default.aspx 会拒绝它未生成的 __VIEWSTATEENCRYPTED,doc_results_fo.aspx 会拒绝缺少该字段的请求,两者都会报错“Validation of viewstate MAC failed”);查看器拒绝 XML、CSV 和 MHTML(“Specified argument was out of the range of valid values. Parameter name: format”)——只有 EXCEL、PDF、WORD 和 IMAGE 可以渲染,因此 Excel 是唯一结构化导出格式。这就是烘焙脚本自带无依赖 BIFF8 读取器的原因(CFB 容器 + LABEL/RK/NUMBER/MULRK 单元格,按数字格式 ID 解析日期);该读取器已逐行验证与使用 xlrd 解析同一文件的结果完全一致(共 7,014 行)。
为什么采用烘焙数据,而不是实时代理
根据根目录 CLAUDE.md 中针对这种规模表格的常规规定,完整列表(采集时有 7,014 条唯一命令,生成的 TypeScript 约 3.5 MB)由 scripts/bake-index.mjs 烘焙到 src/fl-ahca-index-data.ts,在 workers/gateway/src/pack-baked-indexes.json 中注册,部署时上传到 KV,并注入每次调用的 args._bakedIndex 中——绝不使用静态模块级导入(fleet #2754)。如果缺少注入内容或内容格式错误,就会明确抛出错误,而不会回答“未找到”——参见 src/index.test.ts。上游还是一个需要约 20–40 秒的有状态会话,不应该让任何请求等待这么久。
定期重新运行 node mcps/fl-medical-exclusions/scripts/bake-index.mjs 并提交更新;每个响应中的 data_as_of 都会显示烘焙副本有多陈旧。--from <file.xls> 可离线解析已保存的导出文件;--dump-rows <file.json> 会将解析后的行写入文件,以供交叉核对。
此数据包含的内容 — 每行对应一条命令,且并非每条命令都是排除令
AHCA 的列表每行对应一条制裁最终命令,而不是每家提供方(7,108 行导出数据中有 5,313 个不同名称;在打包时会合并 94 行完全重复的数据)。大多数命令并非参与资格排除:截至 2026-10-08,4,570 条命令涉及罚款,255 条涉及纠正行动计划(无论是否伴有罚款)。只有SUSPENSION(832 条命令)和 TERMINATION(1,247 条)会禁止提供方参与 Florida Medicaid——这是 AHCA 自己的定义。每条响应都会说明这一点(exclusion_vs_sanction_caveat),筛查人员应查看每条匹配记录中的 is_participation_exclusion。
Sanction Type 是一个近似固定词表,但存在拼写变体(13 个原始值:FINE / FINES / FINE ONLY、CAP / CAP ONLY / CAP AND FINE、SUSPENSION RESCINDED,等等);打包脚本会将它们归并到固定的 sanction_class 集合中,并对所有未见过的值发出警告,因此词表的变化会显式呈现,而不会悄无声息。相比之下,Violation Code 属于受控词表——即 Rule 59G-9.070 各款的字母代码;此数据包附带 AHCA 发布的代码对照表。实时数据中有两种形式不在该对照表内(7(A.1),以及单独出现的法规引用 409.913(14) / 409.913(16)),系统会原样保留,并将 description 设为 null,而不会编造描述。
无出生日期,无恢复日期
AHCA 两者都不发布。因此,姓名匹配永远无法确认身份,而且也无法像得克萨斯州的 ReinstatedDate 那样通过字段判断“当前是否被排除”。此数据包根据 sanction_date 和 AHCA 声明的期限(暂停 1 年/终止 20 年)推导出 nominal_preclusion_ends,并在每条匹配记录中将其标记为推导值(derived_end_caveat);单独发布的 ... RESCINDED 命令是排除资格提前解除的唯一信号,并作为独立的 sanction_class 显示。AHCA 说明,2009 年 7 月 1 日之前的制裁并非总会产生最终命令,不过数据本身的起始年份是 2006 年。
匹配
npi 仅匹配完全一致的 10 位数字值(7,014 条命令中有 5,267 条带有此值;每个值的格式都正确)。license 匹配时会忽略字母数字字符的大小写;仅当双方都是纯数字时才忽略前导零,因此 11757 无法匹配 DN11757。medicaid_provider_number 的双方值都会补零至 9 位(SSRS 导出会将此列设为数值类型,因此在打包时会恢复前导零;所有实时值均不超过 9 位,并会严格强制执行此规则)。姓名查询会匹配命令中的提供方名称,不区分大小写和标点,且不要求单词顺序一致。在每个匹配层级内,排除命令会排在罚款之前,并按时间从新到旧排序,因此 limit 不会截掉最重要的那条记录。
可访问性
于 2026-10-08,通过笔记本电脑和在生产账户上运行的一次性 wrangler dev --remote Worker(colo SJC)进行了实时验证,重放完全相同的四请求握手:从 Cloudflare 边缘返回完全一致的 200 响应,附件为 2,284,544 字节的 application/vnd.ms-excel 文件(FOReport.xls)。与另外三个先前发布的州级数据包一样,此主机无需 Supabase 出站中继。
快速开始
将其添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):
{
"mcpServers": {
"fl-medical-exclusions": {
"url": "https://gateway.pipeworx.io/fl-medical-exclusions/mcp"
}
}
}
此端点实际提供的内容
https://gateway.pipeworx.io/fl-medical-exclusions/mcp 上的 tools/list 会返回上表中的工具,以及共享的 Pipeworx 元工具——ask_pipeworx、
discover_tools、search_within、remember/recall,以及网关级的其他工具。因此,你看到的工具数量会多于表格中的数量:目前,单个工具包端点除了自身工具包的工具,还会列出约 30 个共享工具。连接的 initialize 响应会说明其确切范围,也是当天情况的权威依据。
这是有意为之,并非意外多路复用。元工具可以让限定范围的连接回答本工具包未涵盖的问题——通过 ask_pipeworx 在整个目录中路由——无需再添加第二个 MCP 服务。目前无法挂载不含这些工具的工具包端点;如果额外的架构定义所占用的上下文比路由带来的价值更大,请连接一次完整网关,而不是连接多个工具包端点。
你也可以连接完整的 Pipeworx 网关,直接列出每个工具包的所有工具,而不只是当前工具包的工具:
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
这两个 URL 都连接到同一个网关和相同的 1819+ 个数据源。唯一的区别是直接列出的工具属于哪个工具包;无论连接哪一个,ask_pipeworx 都可以访问所有工具。
没有 MCP 客户端?通过 HTTP 调用
curl -X POST https://gateway.pipeworx.io/v1/tools/fl_medical_check_exclusion \
-H 'Content-Type: application/json' \
-d '{"npi":"1750409819"}'
首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/fl_medical_check_exclusion。查找工具:使用 {"query":"..."} 向 https://gateway.pipeworx.io/v1/tools/search_packs 发送 POST 请求。
独立运行(无需网关账户)
此软件包也可以作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需通过网关往返:
{
"mcpServers": {
"fl-medical-exclusions": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-fl-medical-exclusions"]
}
}
}
或者直接运行,以确认服务已启动:
npx -y @pipeworx/mcp-fl-medical-exclusions
它通过 stdin/stdout 使用 MCP 通信,并为 仅限 此工具包的工具响应 initialize/tools/list/tools/call——不包含上述网关连接所提供的任何共享元工具。来源相同,工具相同,但不支持 ask_pipeworx 路由。
使用 ask_pipeworx
你可以用通俗易懂的语言提问,而不是直接调用工具——在上述工具包端点和完整网关上都适用:
ask_pipeworx({ question: "your question about Fl Medical Exclusions data" })
网关会选择合适的工具,并自动填入参数。
更多信息
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。