mcpField
O
Openfda

Openfda

远程服务
pipeworx.io健康医疗02 周前更新

关于 Openfda

Openfda 是面向 Agent 和研究人员的 MCP 服务,可查询 FDA 药品及相关安全数据。它涵盖 FAERS 报告、审批、标签、召回、短缺和警告信,并支持网关或本地 stdio 连接。

主要功能

  1. 01搜索 FAERS 不良事件报告
  2. 02统计反应并分析安全信号
  3. 03查询药品审批和标签
  4. 04查找召回、短缺和警告信

适用场景

  1. 01查看某种药品的事件报告
  2. 02比较反应统计和安全信号
  3. 03核查审批历史或标签内容
  4. 04查询药品召回和短缺情况

MCP 相关

通过 Pipeworx 网关端点或本地 stdio 服务向 MCP 客户端提供 OpenFDA 数据工具。网关连接还包含 Pipeworx 共享元工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://gateway.pipeworx.io/openfda/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

OpenFDA — FDA 药品、器械和食品数据

美国食品药品监督管理局(FDA)的开放数据平台。本工具包涵盖药品相关数据:不良事件报告和安全性信号工具(FAERS 搜索、事件计数、失衡分析/ROR-PRR、反应概况、趋势)、药品和新药审批(Drugs@FDA、按公司查询申请历史)、药品标签、药品和食品召回、药品短缺及短缺变化、完整回应函、警告函,以及跨来源上市后风险概况复合工具。这是查询已向 FDA 报告或由 FDA 发布的信息的官方来源。免费,无需认证(有速率限制)。

属于 Pipeworx — 一个将 AI Agent 连接到 1819+ 个实时数据源的 MCP 网关。这是独立、非官方的集成,与上游提供方无关联,未获其认可,也非由其发布。

为什么这对 AI Agent 很重要

药品安全问题可以在这里找到答案。不良事件数量、标签变更、审批时间线、召回情况——均为结构化数据。要全面了解药品,可搭配 RxNorm(规范 ID)和 ClinicalTrials.gov(临床试验)使用。

常见工作流:

  • 查询某种药品的不良事件。 “Ozempic 的报告” → fda_drug_events({query: "ozempic"}) → 单条安全性报告和计数。
  • 汇总反应类别。 “Ozempic 报告最多的反应” → fda_event_counts({query: "ozempic", count_field: "patient.reaction.reactionmeddrapt.exact"}) → 按 MedDRA 编码的计数。
  • 审批历史。 “Ozempic 何时获批?适用于什么用途?” → fda_drug_approvals({query: "ozempic"})。
  • 召回。 “Ozempic 有召回吗?” → fda_drug_recalls({query: "ozempic"})。
  • 标签内容。 “FDA 标签对禁忌症有何说明?” → fda_drug_labels({query: "ozempic"})。
  • 查询某公司的所有申请。 “Eli Lilly 提交过的所有 Drugs@FDA 申请” → fda_applications_by_cik({cik_or_ticker: "LLY"})。该工具通过 SEC 解析公司,并汇总其以各种 sponsor_name 拼写提交的申请——使用猜测的申办方名称调用 fda_drug_approvals 前,请先查看下方的注意事项。

pharma_drug_profile 和 pharma_safety_report 复合工具使用本工具包。

认证

公开访问,无需密钥。匿名访问限制约为每分钟 240 次请求、每天 1,000 次,按 IP 计算——因此,共享同一出口地址的所有调用方共用每天 1,000 次的额度,而非各自拥有 1,000 次。

api.fda.gov 运行于 api-umbrella,与 api.data.gov 使用相同的技术栈,因此 api.data.gov 密钥可用于认证,并将每日限额提升至 120,000 次。Pipeworx 会注入平台密钥(PLATFORM_DATAGOV_KEY);也可通过 _apiKey 使用自己的密钥,此时调用会占用你的配额。可在 https://open.fda.gov/apis/authentication/ 免费注册。

如果密钥遭拒或被撤销,调用不会失败——由于 openFDA 完全可以在不使用密钥的情况下访问,本工具包会在匿名模式下重试一次。

数据集

数据集端点系列覆盖范围
药品不良事件(FAERS)fda_drug_events1968 年至今,约 2000 多万份报告
药品审批fda_drug_approvals1939 年至今(NDA/BLA/ANDA)
药品标签fda_drug_labels当前 SPL 标签
药品召回fda_drug_recallsI/II/III 类执法行动
器械不良事件(独立工具)MAUDE 数据库
食品召回(独立工具)FSIS + FDA 召回
警告函fda_warning_letters自 2021-01 起在 fda.gov 发布的 3,680 份警告函(非 api.fda.gov);另包括 FDA 的合规行动档案中可追溯至 2010 年的记录,适用于在该时间段内没有警告函的企业

常见注意事项

  • 报告并不等于独立患者。 一次住院可能会产生多份 FAERS 报告。total 字段表示报告数,而不是遭受不良事件的个体数。
  • 这并不意味着存在因果关系。 FAERS 报告将药物与时间上相关的事件关联起来;这并不能证明该药物导致了该事件。措辞请务必谨慎。
  • 品牌名与通用名。 搜索“ozempic”会找到标记为 Ozempic 的报告。搜索“semaglutide”会找到任何司美格鲁肽产品的报告。两者可能不同,应根据用户意图决定搜索哪一个。
  • 查询语法由 FDA 规定,并非我们制定。 OpenFDA 使用按字段查询的 Lucene 风格搜索。Pipeworx 工具说明中列出了语法。引号很重要。
  • 反应名称采用 MedDRA 词序。 自然语言表述可能不同于 FDA 存储的首选术语——ISCHAEMIC OPTIC NEUROPATHY 以 OPTIC ISCHAEMIC NEUROPATHY 归档。按反应筛选的工具会针对两词和三词短语重试其他词序,并在 reaction_resolved 中说明解析出的术语。
  • 反应筛选器只匹配一个完整的首选术语。 它们不进行子串或词元匹配,因此 NEUROPATHY 只会返回归档在该精确术语下的报告(约 1,700 份),而不是所有包含该词的术语(约 117,000 份)。这是有意为之:比例失衡表需要统一的病例定义,而不是临时分组。若要查找 FDA 实际存储的术语,请按 patient.reaction.reactionmeddrapt.exact 计数。
  • 未匹配的术语会明确报告,不会静默归零。 如果没有任何词序匹配,工具会返回 reaction_resolution: "not_a_meddra_preferred_term",并附上提示。应将其视为“筛选条件未匹配”,绝不能视为“不存在报告”。
  • 警告信搜索默认匹配收件方。 fda_warning_letters 基于 fda.gov 的 solr 索引,该索引涵盖每封信的完整正文以及公司列,因此原始全文查询回答的是“提及 X 的信件”,而不是“发给 X 的信件”。对于具名公司,这两者是截然不同的说法,而且这种差异确实出现过:search: "Merck" 恰好返回一封信,收件方是 Elanco Animal Health,信中只是提到了 Merck。现在,search 会筛选信件所针对的公司,每一行都带有 matched_field(company 或 letter_text),而 match: "fulltext" 则用于选择正文搜索。收件方搜索没有结果时,会返回 found: false 以及全文匹配数,因此“没有信件”不会与“我们没有查找”混为一谈。
  • 已发布的警告信列表采用滚动五年窗口,过去曾因此让人误以为“这家公司没有问题”。 fda.gov 的视图包含从 2021-01-05 至今的 3,680 封信,涵盖所有中心——CDER、CFSAN、CTP、CVM 和 Human Foods 均在其中,因此排除条件只有信件年份,而非主题。Hospira 的真实 CGMP 信件日期为 2017-02-14,查询却返回 candidates_scanned: 0,并自信地表示“完全没有与 "Hospira" 匹配的警告信”(fleet #2123)。现在,当收件方搜索在该窗口内没有结果时,工具会查询 FDA Data Dashboard 的合规行动档案,该档案记录了至少可追溯至 2010 年的同类执法事件。这些记录包含公司、地点、产品类型和发布日期,但没有主题行,也没有信件 URL——FDA 不会重新发布这么早的信件正文——因此每条记录和响应本身都会带有 source,档案记录也绝不会与已发布的信件混在一起。即使搜索成功,响应仍会包含 archive_note,因为某家公司有一封 2024 年的信件和十封 2015 年的信件时,本来就只应在这里计为 1 封。若未找到结果,响应会包含 archive_checked,以区分“我们查了两处但都没找到”和“档案无法访问”。
  • 宽泛词语的警告信计数是下限。 收件方匹配会分页读取全文结果集,最多扫描 600 个候选项。超过该数量时,响应会设置 scan_complete: false 并提供 scope_note,而 total_matching 是下限——请缩小搜索词范围以获取精确计数。
  • 事件到报告的延迟。 FAERS 报告往往比事件晚几个月,有时甚至几年。“最近 30 天”视图具有误导性;随着报告陆续提交,近期计数还会继续增长。
  • sponsor_name 没有公司 ID,且采用完全匹配,而非全文匹配。 fda_drug_approvals 中类似 search=sponsor_name:"ELI LILLY AND COMPANY" 的查询只会匹配该字面字符串——Eli Lilly 的实际申请分散在“LILLY”(116 条)、“ELI LILLY AND CO”(22 条)、“ELI LILLY CO”(4 条)和“LILLY RES LABS”(1 条)之下,SEC 注册名称与这些名称都不匹配。请使用 fda_applications_by_cik(输入 CIK 或股票代码,汇总所有 sponsor_name 形式),而不是猜测拼写。

快速开始

添加到你的 MCP 客户端(Claude Desktop、Cursor、Windsurf 等):

{
  "mcpServers": {
    "openfda": {
      "url": "https://gateway.pipeworx.io/openfda/mcp"
    }
  }
}
此端点实际提供的内容

https://gateway.pipeworx.io/openfda/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/fda_drug_events \
  -H 'Content-Type: application/json' \
  -d '{"query":"patient.drug.medicinalproduct:\"OZEMPIC\""}'

首次调用无需账户。检查任意工具:GET https://gateway.pipeworx.io/v1/tools/fda_drug_events。查找工具:使用 {"query":"..."} 向 POST https://gateway.pipeworx.io/v1/tools/search_packs 发送请求。

独立运行(无需网关账户)

此软件包也可作为本地 stdio MCP 服务运行——无需 Pipeworx 账户,也无需经由网关往返:

{
  "mcpServers": {
    "openfda": {
      "command": "npx",
      "args": ["-y", "@pipeworx/mcp-openfda"]
    }
  }
}

也可以直接运行它,确认服务能够启动:

npx -y @pipeworx/mcp-openfda

它通过 stdin/stdout 使用 MCP 通信,并响应 initialize/tools/list/tools/call,但仅限此工具包的工具——不包含上述网关连接提供的任何共享元工具。数据源相同,工具相同,但没有 ask_pipeworx 路由。

使用 ask_pipeworx

你也可以用通俗英语提问,而不是直接调用工具——这既适用于上面的工具包端点,也适用于完整网关:

ask_pipeworx({ question: "your question about Openfda data" })

网关会自动选择合适的工具并填入参数。

更多信息

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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