mcpField
P
pp-openfda

pp-openfda

github.com/mvanhorn其他2.1k37 次安装今天更新
代码仓库

关于 pp-openfda

pp-openfda 是用于 OpenFDA 数据的只读命令行 Agent 技能,适合检索药品、医疗器械、食品等监管记录。它涵盖多类 FDA 数据,并支持结构化输出、本地缓存查询和结果投递。

主要功能

  1. 01搜索药品与器械监管记录
  2. 02查询食品及其他不良事件
  3. 03检索召回、短缺和产品标签
  4. 04以 JSON 输出并筛选字段
  5. 05保存配置档案并投递结果

适用场景

  1. 01查找药品副作用报告或说明书
  2. 02检索医疗器械召回与审批记录
  3. 03查询食品或补充剂不良事件
  4. 04将定期查询结果发送到文件或 Webhook

MCP 相关

项目说明可安装 openfda-pp-mcp 并注册为 MCP 服务,供 MCP 客户端使用。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mvanhorn/printing-press-library --skill pp-openfda

安装后在 Claude Code 中输入/pp-openfda确认已加载。

详细介绍

Openfda — Printing Press CLI

前提条件:安装 CLI

此技能使用 openfda-pp-cli 二进制文件。**调用此技能中的任何命令前,必须确认 CLI 已安装。**如果尚未安装,请先安装:

  1. 通过 Printing Press 安装程序进行安装。在 macOS/Linux 上,二进制文件默认安装到 $HOME/.local/bin;在 Windows 上,默认安装到 %LOCALAPPDATA%\Programs\PrintingPress\bin:
    npx -y @mvanhorn/printing-press-library install openfda --cli-only
    
  2. 验证:openfda-pp-cli --version
  3. 确保报告的安装目录位于将调用此技能的 Agent/运行时的 $PATH 中。

如果 npx 安装失败(没有 Node、处于离线状态等),请改用直接通过 Go 安装的方式(需要 Go 1.26.6 或更新版本):

go install github.com/mvanhorn/printing-press-library/library/developer-tools/openfda/cmd/openfda-pp-cli@latest

如果安装后 --version 显示“command not found”,则运行时无法在 $PATH 中找到二进制文件目录。在验证成功前,请勿执行此技能中的命令。

何时不应使用此 CLI

对于需要创建、更新、删除、发布、评论、点赞、邀请、下单、发送消息、预订、购买或更改远程状态的请求,请勿启用此 CLI。此 CLI 仅提供用于检查、导出、同步和分析的只读命令。

命令参考

animal-events — 动物药品和器械不良事件报告。

  • openfda-pp-cli animal-events — 搜索动物不良事件报告

device-510k — 证明具有实质等同性的上市前通知申请。

  • openfda-pp-cli device-510k — 搜索 510(k) 许可记录

device-classification — 医疗器械产品代码、专科领域和监管类别。

  • openfda-pp-cli device-classification — 搜索器械分类

device-covid19 — COVID-19 血清学检测评估数据。

  • openfda-pp-cli device-covid19 — 搜索 COVID-19 血清学检测评估

device-events — 医疗器械不良事件报告(MAUDE/MDR)——伤害、死亡和故障。

  • openfda-pp-cli device-events count — 按字段统计器械事件
  • openfda-pp-cli device-events list — 搜索医疗器械不良事件报告

device-pma — III 类医疗器械上市前批准决定。

  • openfda-pp-cli device-pma — 搜索上市前批准记录

device-recall-detail — 针对缺陷或健康风险的详细器械召回措施。

  • openfda-pp-cli device-recall-detail — 搜索器械召回措施详情

device-recalls — 医疗器械召回执法报告。

  • openfda-pp-cli device-recalls — 搜索器械召回执法报告

device-registration — 医疗器械制造机构注册和产品目录。

  • openfda-pp-cli device-registration — 搜索器械注册信息和目录

device-udi — 全球唯一器械标识数据库(GUDID)。

  • openfda-pp-cli device-udi — 搜索唯一器械标识符

drug-approvals — 自 1939 年以来经 FDA 批准的药品——申请、提交和上市状态。

  • openfda-pp-cli drug-approvals — 搜索获批药品

drug-events — 药物副作用、用药错误和产品质量问题报告(FAERS)。自 2003 年以来已有 490 多万份报告。

  • openfda-pp-cli drug-events count — 按字段统计不良事件
  • openfda-pp-cli drug-events list — 搜索药物不良事件报告

drug-labels — 结构化产品信息,包括处方信息、黑框警告和适应症。

  • openfda-pp-cli drug-labels — 搜索药品标签

drug-ndc — 国家药品代码目录——产品标识符、包装和分类。

  • openfda-pp-cli drug-ndc — 搜索 NDC 目录

drug-recalls — 药品召回执法报告。

  • openfda-pp-cli drug-recalls count — 按字段统计药品召回
  • openfda-pp-cli drug-recalls list — 搜索药品召回执法报告

drug-shortages — 因生产问题、延误和停产造成的当前及历史药品短缺信息。

  • openfda-pp-cli drug-shortages — 搜索药品短缺信息

food-events — CAERS 报告——食品、膳食补充剂和化妆品不良事件。

  • openfda-pp-cli food-events — 搜索食品/补充剂不良事件报告

food-recalls — 食品召回执法报告。

  • openfda-pp-cli food-recalls count — 按字段统计食品召回
  • openfda-pp-cli food-recalls list — 搜索食品召回执法报告

nsde — 非标准化药品实体——无法映射到标准术语的药品名称。

  • openfda-pp-cli nsde — 搜索非标准化药品实体

substance — FDA 物质注册系统中的物质数据。

  • openfda-pp-cli substance — 搜索物质记录

tobacco-problems — 烟草产品问题报告。

  • openfda-pp-cli tobacco-problems — 搜索烟草产品问题报告
查找合适的命令

知道自己想做什么,但不知道该用哪个命令时,可以直接询问 CLI:

openfda-pp-cli which "<capability in your own words>"

which 会根据自然语言能力查询,从此 CLI 精选的功能索引中找出最匹配的命令。退出码 0 表示至少有一个匹配项;退出码 2 表示没有足够可信的匹配项——请改用 --help,或缩小查询范围。

身份验证设置

通过环境变量设置 API 密钥:

export FDA_API_KEY="<your-key>"

或者将其保存到 `` 中。

运行 openfda-pp-cli doctor 验证设置。

Agent 模式

为任何命令添加 --agent。该选项会展开为:--json --compact --no-input --no-color --yes。

  • 可通过管道传递 — JSON 输出到 stdout,错误输出到 stderr

  • 可筛选 — --select 仅保留部分字段。点分路径可深入嵌套结构;数组会逐项遍历。对于输出冗长的 API,这对控制上下文大小至关重要:

    openfda-pp-cli animal-events --agent --select id,name,status
    
  • 可预览 — --dry-run 显示请求,但不会发送

  • 支持离线使用 — 有本地 SQLite 存储时,同步/搜索命令可使用该存储

  • 非交互式 — 不会弹出提示;所有输入都通过标志传入

  • 只读 — 请勿使用此 CLI 执行创建、更新、删除、发布、评论、点赞、邀请、下单、发送或其他会产生变更的请求

响应封装

从本地存储或 API 读取数据的命令,会将输出封装在一个来源信息对象中:

{
  "meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
  "results": <data>
}

解析 .results 获取数据,并查看 .meta.source 判断数据来自实时来源还是本地来源。只有 stdout 连接到终端时,才会将人类可读的 N results (live) 摘要输出到 stderr;通过管道传递的内容/Agent 使用者会在 stdout 上收到纯 JSON。

Agent 反馈

当你(或 Agent)发现此 CLI 有异常之处时,请记录下来:

openfda-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
openfda-pp-cli feedback --stdin < notes.txt
openfda-pp-cli feedback list --json --limit 10

条目会保存在本地的 ~/.openfda-pp-cli/feedback.jsonl 中。除非设置了 OPENFDA_FEEDBACK_ENDPOINT,且传入了 --send 或设置了 OPENFDA_FEEDBACK_AUTO_SEND=true,否则不会通过 POST 发送。默认行为仅保存在本地。

记录让你感到意外的情况,而不是提交错误报告。简短、具体、一行即可:这类反馈会不断累积,发挥更大作用。

输出传递

每个命令都接受 --deliver <sink>。输出会写入指定的目标,并同时输出到 stdout,或替代 stdout 输出,因此 Agent 无需手动通过管道传递命令结果。支持三种目标:

目标效果
stdout默认;仅写入 stdout
file:<path>将输出原子性地写入 <path>(临时文件 + 重命名)
webhook:<url>将输出正文 POST 到 URL(使用 --compact 时为 application/json 或 application/x-ndjson)

不支持的方案会被拒绝,并返回结构化错误,列出支持的方案。Webhook 请求失败时会返回非零状态,并在 stderr 中记录 URL 和 HTTP 状态。

命名配置

配置是保存的一组标志值,可在多次调用中重复使用。当定时运行的 Agent 每次都以相同配置调用同一命令时,可以使用配置——这就是 HeyGen 的 “Beacon” 模式。

openfda-pp-cli profile save briefing --json
openfda-pp-cli --profile briefing animal-events
openfda-pp-cli profile list --json
openfda-pp-cli profile show briefing
openfda-pp-cli profile delete briefing --yes

显式标志的优先级始终高于配置值;配置值的优先级高于默认值。agent-context 会在 available_profiles 下列出所有可用配置,以便 Agent 在运行时发现这些配置。

退出码

代码含义
0成功
2用法错误(参数不正确)
3未找到资源
4需要身份验证
5API 错误(上游问题)
7请求过于频繁(等待后重试)
10配置错误

参数解析

解析 $ARGUMENTS:

  1. 为空、help 或 --help → 显示 openfda-pp-cli --help 的输出
  2. 以 install 开头 → 以 mcp 结尾 → 安装 MCP;否则 → 查看上方的先决条件
  3. 其他任何内容 → 直接使用(作为带有 --agent 的 CLI 命令执行)

MCP 服务安装

从此 CLI 发布的公共库条目或预构建版本安装 MCP 二进制文件,然后注册:

claude mcp add openfda-pp-mcp -- openfda-pp-mcp

验证:claude mcp list

直接使用

  1. 检查是否已安装:which openfda-pp-cli 如果未找到,请提供安装选项(参见此技能顶部的先决条件)。
  2. 根据用户查询,从上方的独特功能和命令参考中选择最合适的命令。
  3. 使用 --agent 标志执行:
    openfda-pp-cli <command> [subcommand] [args] --agent
    
  4. 如果存在歧义,请查看子命令帮助:openfda-pp-cli <command> --help。

评论

支持 Markdown