关于 pp-openfda
pp-openfda 是用于 OpenFDA 数据的只读命令行 Agent 技能,适合检索药品、医疗器械、食品等监管记录。它涵盖多类 FDA 数据,并支持结构化输出、本地缓存查询和结果投递。
主要功能
- 01搜索药品与器械监管记录
- 02查询食品及其他不良事件
- 03检索召回、短缺和产品标签
- 04以 JSON 输出并筛选字段
- 05保存配置档案并投递结果
适用场景
- 01查找药品副作用报告或说明书
- 02检索医疗器械召回与审批记录
- 03查询食品或补充剂不良事件
- 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 已安装。**如果尚未安装,请先安装:
- 通过 Printing Press 安装程序进行安装。在 macOS/Linux 上,二进制文件默认安装到
$HOME/.local/bin;在 Windows 上,默认安装到%LOCALAPPDATA%\Programs\PrintingPress\bin:npx -y @mvanhorn/printing-press-library install openfda --cli-only - 验证:
openfda-pp-cli --version - 确保报告的安装目录位于将调用此技能的 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 | 需要身份验证 |
| 5 | API 错误(上游问题) |
| 7 | 请求过于频繁(等待后重试) |
| 10 | 配置错误 |
参数解析
解析 $ARGUMENTS:
- 为空、
help或--help→ 显示openfda-pp-cli --help的输出 - 以
install开头 → 以mcp结尾 → 安装 MCP;否则 → 查看上方的先决条件 - 其他任何内容 → 直接使用(作为带有
--agent的 CLI 命令执行)
MCP 服务安装
从此 CLI 发布的公共库条目或预构建版本安装 MCP 二进制文件,然后注册:
claude mcp add openfda-pp-mcp -- openfda-pp-mcp
验证:claude mcp list
直接使用
- 检查是否已安装:
which openfda-pp-cli如果未找到,请提供安装选项(参见此技能顶部的先决条件)。 - 根据用户查询,从上方的独特功能和命令参考中选择最合适的命令。
- 使用
--agent标志执行:openfda-pp-cli <command> [subcommand] [args] --agent - 如果存在歧义,请查看子命令帮助:
openfda-pp-cli <command> --help。