展示如何通过 Apify MCP server 将 Claude 与 FDA 官方数据库集成,解决医疗 AI 的事实准确性问题,包含完整的实现代码和输出验证。
AI Agent 擅长推理,却很不擅长处理事实。询问 Claude:处方布洛芬是否带有黑框警告、有哪些禁忌证,以及某个特定版本由哪家公司生产,它会根据训练数据给出一个信心十足的答案——但这个答案可能已经过时,可能混合了不同产品的信息,也可能完全错误。在健康科技、制药和临床场景中,药品标签信息“可能正确”远远不够。
本指南将解决这个问题。我们会把 Claude 连接到官方 Apify MCP server,开放一个从 openFDA 读取美国结构化药品标签的 Actor,让“标签上怎么说?”从模型猜测变成对 FDA 实际批准标签的实时查询。完成后,你将拥有一个可用的药品标签工具,Claude、Cursor 或任何 MCP client 都能在对话过程中调用它;你也会清楚了解这个工具在运行流程的哪个环节触发,以及它会返回什么。
下面展示的全部都是真实配置和真实输出,没有模拟响应。
Model Context Protocol(MCP)是一项开放标准,允许 AI client 调用外部工具。Apify MCP server(https://mcp.apify.com)在 Apify 平台之上实现了这项标准。这意味着 Apify Store 中数以千计的 Actor,都可以成为 Agent 能够调用的工具。
为什么要通过 MCP 调用 Actor,而不是直接硬编码 API 请求?
Agent 自己决定何时获取数据。Claude 会阅读对话内容,发现自己需要一个并不掌握的事实,然后自主调用工具。你不必为每一种问题编写胶水代码。
输入和输出都是结构化的。MCP server 会把 Actor 的输入 schema 提供给 Claude,因此模型能够正确填写参数,并获得一份便于推理的干净 dataset。
一个连接,多种工具。同一个 MCP endpoint 可以开放 search-actors、fetch-actor-details 和 call-actor,因此 Agent 无需添加新配置,就能发现并运行任意 Actor。
无需维护基础设施。server 已经托管完成,你只需在配置文件中添加几行内容即可。
我们将开放 openFDA Drug Labels & Ingredients Scraper。输入药品名称后,它会返回匹配产品的结构化 FDA 标签,包括品牌名和通用名、生产商、产品类型(OTC 或处方药)、给药途径、活性和非活性成分、NDC 和申请编号、药理类别,以及临床医生会阅读的完整标签章节,其中包括适应证、用法用量、黑框警告、禁忌证、警告、不良反应和药物相互作用。
这些字段正是用药安全检查、药品目录工具或临床决策支持原型所需要的。FDA 标签很适合作为第一个数据源,因为它公开、权威,也是某种药物在美国获准用于哪些用途的唯一事实来源。

登录 Apify Console,打开 Settings → Integrations,然后复制你的个人 API token。MCP server 会使用它完成身份验证,并将 Actor 的运行费用计入你的账户。
📌 注意:token 属于机密信息。只应将它保存在 client 配置中,绝不要放进 prompt,也不要提交到版本控制仓库。
打开 Claude Desktop 的配置文件(Settings → Developer → Edit Config;在 macOS 上也可以打开 ~/Library/Application Support/Claude/claude_desktop_config.json),然后添加 Apify server。这里最重要的是 tools 查询参数:它会告诉 server 应该开放哪个 Actor,让 Claude 获得一个目标明确的工具,而不是整个 Apify Store。
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=scrapers_lat/openfda-drug-labels-scraper",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor 在 .cursor/mcp.json 中使用相同的 JSON。如果你更愿意通过 stdio 在本地运行,而不是使用托管 endpoint,可以使用以下配置:
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--tools", "scrapers_lat/openfda-drug-labels-scraper"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}
重启 Claude Desktop,让它加载新的 server。
重启后,这个 Actor 会显示为一个可调用工具。如果列出 Apify server 开放的工具,你会看到存储辅助工具,以及以 Store handle 命名的 Actor 本身:
get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--openfda-drug-labels-scraper
最后一项 scrapers_lat--openfda-drug-labels-scraper 就是我们的药品标签工具。现在,Claude 已经知道它的存在、它能做什么(来自 Actor 的 README),以及它接受哪些输入(来自 server 一并传递的 input schema)。
现在到了见证效果的时候。在普通聊天中,提出一个需要权威事实才能回答的问题:
“对于处方布洛芬,FDA 标签如何描述它的黑框警告和禁忌证?它由谁生产?”
Claude 会意识到自己无法仅凭记忆可靠地回答这个问题,于是选择药品标签工具,并根据你的问题填写输入参数。在底层,client 会使用 Actor 参数发送一次 tools/call:
{
"name": "scrapers_lat--openfda-drug-labels-scraper",
"arguments": {
"query": "ibuprofen",
"maxLabels": 5
}
}
Apify MCP server 会启动 Actor,等待运行完成,然后返回 dataset。以下是这次真实运行产生的 metadata:
{
"runId": "H0JcoVdo3IP456L6o",
"actorName": "scrapers_lat/openfda-drug-labels-scraper",
"status": "SUCCEEDED",
"startedAt": "2026-07-30T17:43:51.221Z",
"finishedAt": "2026-07-30T17:43:55.217Z",
"stats": { "runTimeSecs": 3.9 }
}
不到 4 秒,就完成了对 FDA 标签数据集的实时查询。
这个工具返回的 dataset 是结构化标签数据,每种产品对应一条记录。查询“ibuprofen”会返回多种产品,从 OTC 商店自有品牌片剂到处方制剂都有。对于安全检查来说,其中最值得关注的是处方药记录。以下是这次运行产生的一条真实记录,为便于展示,只保留了相关字段:
{
"brandName": ["Ibuprofen"],
"genericName": ["IBUPROFEN"],
"manufacturerName": ["Aurobindo Pharma Limited"],
"productType": "HUMAN PRESCRIPTION DRUG",
"route": ["ORAL"],
"productNdc": ["59651-360", "59651-361", "59651-362"],
"applicationNumber": ["ANDA213794"],
"pharmClass": [
"Nonsteroidal Anti-inflammatory Drug [EPC]",
"Cyclooxygenase Inhibitors [MoA]"
],
"unii": ["WK2XYI10QM"],
"boxedWarning": "Cardiovascular Thrombotic Events ... NSAIDs cause an increased risk of serious cardiovascular thrombotic events, including myocardial infarction and stroke, which can be fatal. ... contraindicated in the setting of coronary artery bypass graft (CABG) surgery ...",
"indicationsAndUsage": "Ibuprofen tablets are indicated for relief of the signs and symptoms of rheumatoid arthritis and osteoarthritis ...",
"effectiveTime": "2025-02-14"
}

Claude 会读取这些数据,并用自然语言回答:这款处方布洛芬(Aurobindo Pharma,ANDA213794)带有黑框警告,提示存在严重心血管血栓事件和胃肠道出血风险;它禁用于冠状动脉旁路移植术(CABG)场景,以及使用阿司匹林或 NSAID 后会诱发哮喘或荨麻疹的患者;其适应证包括类风湿关节炎和骨关节炎。所有这些事实都能追溯到一份生效日期为 2025-02-14 的标签,而不是来自模型的记忆。
区分不同产品同样重要。相同查询还会返回 OTC 记录,例如某全国性连锁药房销售的自有品牌 200 mg 片剂。它没有黑框警告,适应证只是简单的“暂时缓解轻微疼痛”。安全工具必须能够区分 OTC 片剂和处方强度制剂,因为二者的警告、剂量和获批用途并不相同。Actor 会同时提供这两类产品,并附带 productType、applicationNumber 和相应标签章节,让 Agent 能够选出正确的产品。
把它放到实际场景中来看。一家健康科技团队正在构建一个接诊助手,用来检查患者当前服用的药物是否与新处方存在冲突。在标记任何问题之前,它需要依据权威标签,而不是记忆中模糊的近似信息,确认以下几点:
涉及的药物确实带有被引用的警告;
患者的病情没有被列入禁忌证;
产品类型和规格与实际处方一致。
如果没有工具,分析人员就必须打开 FDA 标签查询页面,搜索药物,阅读黑框警告和禁忌证章节,再把相关内容复制到记录中——每种药物都要重复一次。把工具接入 Claude 后,分析人员只需将药物清单粘贴到聊天中,让 Agent 拉取每种药物的标签。Claude 会针对每种药物调用 Actor,提取 boxedWarning、contraindications 和 drugInteractions 章节,与患者背景进行对比,再生成一份简短的结构化说明,并以 NDC 和申请编号作为证据。机械性的查询工作消失了,临床判断仍然由人类负责。
这正是每个优秀 Agent 工具应有的形态:它替你获取信息,而不是替你做决定。
药品标签会告诉你一种药物获准用于什么用途,以及它对哪些风险发出警告。但它不会告诉你,人们服药后实际报告了哪些情况。只需扩展 tools 参数,同一个 MCP 连接就能开放更多 Actor:
https://mcp.apify.com?tools=scrapers_lat/openfda-drug-labels-scraper,scrapers_lat/openfda-drug-events-scraper
现在,Agent 可以在一次对话中读取官方标签,同时从 FDA 报告系统中拉取同一种药物的真实世界不良事件报告,然后将二者合并成一份安全摘要:标签警告了什么,以及患者和临床医生实际报告了什么。由于每个 Actor 都是独立工具,Agent 会自行在每一步选择正确的工具。
🏹 故障排查:如果工具没有出现在 Claude 中,最常见的两个原因是:tools 参数中的 Actor handle 缺失或拼写错误——它必须与 Store URL 中的 username/actor-name 完全一致;或者你在 Claude 仍处于运行状态时修改了配置。修正 handle,保存配置,然后彻底重启 client。
📌 注意:每次工具调用都会实际运行一次 Actor,费用将计入你的 Apify 账户(这个 Actor 按结果收费)。对于零散查询,单次成本不到一美分;如果你计划定时拉取数千条标签,应该直接通过 Apify API 或 scheduled task 运行 Actor,而不是每条聊天消息调用一次。像“ibuprofen”这样的药品名称可能匹配数十种产品,因此应严格限制 maxLabels,并在需要特定标签时使用 productType、route 或 manufacturer 缩小结果范围。
现在,你已经拥有一个 AI Agent。它可以在对话进行过程中,根据需要实时读取美国药品的实际 FDA 标签,并获得临床或制药检查真正需要的黑框警告、禁忌证、成分和标识符详情。这个模式可以重复使用:选择一个能够返回权威结构化数据的 Actor,通过 Apify MCP server 的 tools 参数开放它,再由 Agent 自行决定何时调用。
使用 productType、route 和 manufacturer 输入缩小查询范围,以锁定某一份具体标签,而不是返回整个药物类别。
添加 adverse-events Actor,把分析范围从“标签警告了什么”扩展到“实际报告了什么”。
阅读 Apify MCP server 文档,了解 OAuth 设置、resource 读取,以及允许 Agent 发现未预先配置 Actor 的 search-actors / call-actor 工具。
本指南使用的 Actor:openFDA Drug Labels & Ingredients Scraper。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。