教程演示如何通过 MCP 标准协议连接 Apify Actor,让 Claude 实时查询 FDA 食品召回数据,取代过时训练数据。
AI Agent 擅长推理,但在事实上表现糟糕。问 Claude 某个冷冻产品是否处于有效的 FDA 召回期间,它会根据训练数据给你一个自信的答案,这个答案可能已经过时数月,或者干脆是编造的。在食品安全领域,"可能没问题"就是 Class I 类过敏原最终出现在货架上的原因。
在本指南中,我们修复这个问题。我们将 Claude 连接到官方的 Apify MCP 服务器,公开一个读取 FDA 食品召回和执法报告的 Actor,并将"这个产品是否被召回?"从猜测变成针对权威来源的实时查询。到最后,你将拥有一个工作的召回监控工具,Claude、Cursor 或任何 MCP 客户端都可以在对话中调用,你也会准确理解这个工具在运行的哪个环节触发以及它返回什么。
下面的所有内容都是真实的设置和真实的输出。没有模拟响应。
Model Context Protocol(MCP)是一个开放标准,允许 AI 客户端调用外部工具。Apify MCP 服务器(https://mcp.apify.com)在 Apify 平台上实现了这个标准,这意味着 Apify Store 中成千上万个 Actor 中的每一个都可以成为 Agent 可以调用的工具。
Agent 决定何时获取。 Claude 读取对话,注意到它需要一个不知道的事实,并自己调用该工具。你不需要为每个问题编写粘合代码。
结构化的输入和输出。 MCP 服务器向 Claude 提供 Actor 的输入模式,因此模型可以正确填充参数,并返回一个干净的数据集供其推理。
一个连接,多个工具。 同一个 MCP 端点公开 search-actors、fetch-actor-details 和 call-actor,因此 Agent 可以发现并运行任何 Actor,无需新的配置。
无基础设施。 服务器已托管。你添加几行配置文件,就完成了。
我们将公开 openFDA Food Recall & Enforcement Scraper(美国)。它读取 FDA 的官方食品召回和执法报告,并返回每个事件的完整记录:召回号、危害分类(Class I/II/III)、产品描述、召回原因、召回公司及其地址、产品数量和代码信息、分布模式(哪些州,以及是否全国)和关键日期。
这个字段集正是杂货店采购员、进口商质量保证主管或零售合规团队需要快速回答一个问题所需的:我们库存或即将库存的任何东西是否在召回清单上,以及它的严重程度如何?食品召回是公开的和权威的,没有登录墙,这使它们成为分配给 Agent 的理想第一数据源。

登录 Apify Console,打开 Settings → Integrations,复制你的个人 API token。MCP 服务器使用它来认证并向你的账户计费 Actor 运行。
📌 注意:token 是秘密。仅将其保留在客户端配置中,永远不要在提示或提交的文件中。
打开 Claude Desktop 的配置文件(Settings → Developer → Edit Config,或 macOS 上的 ~/Library/Application Support/Claude/claude_desktop_config.json),并添加 Apify 服务器。tools 查询参数是重要的部分:它告诉服务器要公开哪个 Actor,所以 Claude 获得一个专注的工具而不是整个 Store。
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=scrapers_lat/openfda-food-recalls-scraper",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor 在 .cursor/mcp.json 中使用相同的 JSON。如果你更希望在本地通过 stdio 运行而不是托管端点:
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--tools", "scrapers_lat/openfda-food-recalls-scraper"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}
重启 Claude Desktop,使其读取新的服务器。
重启后,Actor 显示为可调用的工具。如果你列出 Apify 服务器公开的工具,你将看到存储助手加上 Actor 本身,以其 Store 句柄命名:
get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--openfda-food-recalls-scraper
最后一项 scrapers_lat--openfda-food-recalls-scraper 是我们的召回查询工具。Claude 现在知道它存在,它做什么(来自 Actor 的 README),以及它接受什么输入(来自服务器传递的输入模式)。
现在是回报。在一个普通聊天中,提出一个需要基本事实的问题:
"We stock imported frozen Asian groceries. Are there any recent Class I FDA recalls for undeclared allergens we need to pull from our shelves?"
Claude 识别到它无法从记忆中可靠地回答这个问题,选择召回工具,并从你的问题中填充输入。在底层,客户端使用 Actor 的参数发送一个 tools/call:
{
"name": "scrapers_lat--openfda-food-recalls-scraper",
"arguments": {
"searchQuery": "undeclared allergen",
"classification": "Class I",
"dateFrom": "2025-01-01",
"maxRecalls": 10
}
}
Apify MCP 服务器启动 Actor,等待其完成,并返回数据集。这是它生成的真实运行元数据:
{
"runId": "NmLimdVRabbDI9oSk",
"actorName": "scrapers_lat/openfda-food-recalls-scraper",
"status": "SUCCEEDED",
"startedAt": "2026-07-30T17:47:32.578Z",
"finishedAt": "2026-07-30T17:47:35.730Z",
"stats": { "runTimeSecs": 3.0 }
}
三秒,针对 FDA 执法报告的实时查询。
该工具返回的数据集是结构化召回数据。这是运行中的实际记录(修剪到与货架检查有关的字段):
{
"recallNumber": "H-0530-2026",
"classification": "Class I",
"status": "Terminated",
"productDescription": "Fish Ball, Frozen, 40 pieces per pack, 200g Wt. UPC# 810093891338",
"reasonForRecall": "Undeclared allergen ingredient (Wheat and Sesame)",
"recallingFirm": "MIN JIANG FOOD STORE INC DBA KOI KOI TRADING",
"city": "Commerce",
"state": "CA",
"productQuantity": "344 cases",
"codeInfo": "Item# 27010",
"distributionPattern": "Product was distributed to 50 consignees... primarily to restaurants and retail grocery stores.",
"distributionStates": ["CA", "CO", "GA", "HI", "NJ", "OR", "TX", "WA"],
"reportDate": "2026-03-04",
"eventId": "98355"
}
Claude 读取并用简洁语言回答:是的,有一个冷冻鱼丸产品的 Class I 召回,召回号 H-0530-2026,因为它包含未申报的小麦和芝麻(两者都是美国主要过敏原),由加州 Commerce 的 KOI KOI Trading 公司召回,344 箱,分布在八个州的餐厅和零售杂货店。这些事实中的每一个都可以追溯到官方的 FDA 执法报告,而不是模型的记忆。

危害等级是将数据转化为决策的东西。Class I 意味着使用该产品有合理概率导致严重的健康后果或死亡,这是"标记以供下次审查"和"今天隔离"之间的区别。一个浮现分类、UPC 和确切分布州的 Agent 为食品安全主管提供了他们需要采取行动的一切;单独模型不能可靠地提供任何信息。
把这个放在上下文中。杂货链的食品安全部门或进口商的质量保证团队需要持续确认,他们货架上或集装箱中没有任何东西处于有效召回期间。三件事对他们很重要:
没有工具,分析师打开 FDA 召回网站,按产品或公司搜索,读取每个执法报告,并将召回号、等级和州复制到跟踪器中,每个 SKU 一次。通过将工具连接到 Claude,分析师将供应商列表或一批产品名称粘贴到聊天中,并要求 Agent 检查每一个。Claude 按查询调用 Actor,过滤到 Class I 事件,将返回的 distributionStates 与链的足迹进行比较,并使用召回号作为证据生成一个简短的拉动或监控列表。手动查询步骤消失;判断仍与人类保持。
这是每个好的 Agent 工具的形状:它删除机械获取,而不是决策。
召回监控很少止于包装产品。如果你也运行或供应食品服务,你想知道处理这些商品的机构是否有清洁的检查历史。同一个 MCP 连接可以通过扩展 tools 参数公开更多 Actor:
https://mcp.apify.com?tools=scrapers_lat/openfda-food-recalls-scraper,scrapers_lat/usa-restaurant-inspections-scraper
现在 Agent 可以在 FDA 执法报告中找到 Class I 召回,并在同一对话中拉取餐厅或设施的健康检查记录,然后将两者合并成一个风险摘要:这个产品被召回了,这是它到达的出口的检查状态。因为每个 Actor 是一个单独的工具,Agent 自己为每个步骤选择正确的。
🏹 故障排除: 如果工具在 Claude 中没有显示,两个常见原因是 tools 参数中缺少或拼写错误的 Actor 句柄(它必须是 Store URL 中的确切 username/actor-name)以及在 Claude 运行时编辑的配置。修复句柄,保存,完全重启客户端。
📌 注意: 每个工具调用是一个真实的 Actor 运行,向你的 Apify 账户计费(这个 Actor 是按结果付费)。对于偶尔的货架检查,成本是一分钱的一小部分;如果你计划按计划扫描数千个 SKU,通过 Apify API 或计划任务直接运行 Actor 并存储结果,而不是每个聊天消息一个调用。
你现在有一个 AI Agent,可以按需在对话中检查食品产品与官方 FDA 召回和执法报告,具有危害等级和分布细节,这是真正的货架决策所需的。该模式是可重用的:选择一个返回权威结构化数据的 Actor,通过 Apify MCP 服务器用 tools 参数公开它,并让 Agent 决定何时调用它。
用 Actor 的过滤器(分类、州、召回公司、日期范围)缩小查询,使 Agent 只看到与你的足迹有关的事件。
添加餐厅检查、药物标签或设备召回 Actor,构建更广泛的食品和产品安全 Agent。
阅读 Apify MCP 服务器文档以获取 OAuth 设置、资源读取以及让 Agent 发现它未预配置的 Actor 的 search-actors / call-actor 工具。
本指南中使用的 Actor:openFDA Food Recall & Enforcement Scraper(美国)。
如需进一步操作,你可以考虑封禁此人和/或举报滥用