用 Apify MCP 为 Claude 接入实时 OFAC 制裁查询
完整教程展示通过 MCP 标准协议给 Claude 接入 OFAC 官方制裁名单数据源,解决 AI 决策中事实准确性问题。提供生产级工作代码和完整步骤。
完整中文译文
AI 代理擅长推理,却很难掌握事实。问 Claude"Rosoboronexport"是否在美国制裁名单上,它会自信地从训练数据中给出答案,这些数据可能已经过时数月甚至数年,或者根本就是错的。对于支付合规或反洗钱团队来说,"可能没有被制裁"不是你能据以放行电汇的答案。遗漏一个匹配是监管违规;误判清白则是被罚款。
本指南将解决这个问题。我们将 Claude 连接到官方的 Apify MCP 服务器,公开一个能针对美国财政部 OFAC 制裁名单筛选名称的 Actor,将"这个机构被制裁了吗?"从猜测变成对信息源的实时查询。完成本指南后,你将拥有一个可工作的制裁筛选工具,Claude、Cursor 或任何 MCP 客户端都可以在对话中调用它,你也会准确理解工具在运行中的何处触发以及返回了什么。
下面的所有内容都是真实的设置和真实的输出。没有模拟响应。
什么是 Apify MCP 服务器?
Model Context Protocol (MCP) 是一个开放标准,让 AI 客户端可以调用外部工具。Apify MCP 服务器(https://mcp.apify.com)在 Apify 平台之上实现了这个标准,这意味着 Apify Store 中成千上万的 Actor 都可以成为代理可以调用的工具。
为什么要通过 MCP 路由 Actor,而不是硬编码 API 调用?
代理决定何时筛选。 Claude 读取对话,发现必须验证的交易对手名称,自主调用工具。你不需要为每个问题编写胶合代码。
结构化的输入和输出。 MCP 服务器将 Actor 的输入模式提供给 Claude,因此模型可以正确填入参数,并返回一个它可以推理的干净数据集。
一个连接,多个工具。 同一个 MCP 端点公开搜索 Actor、获取 Actor 详情和调用 Actor,所以代理可以发现并运行任何 Actor,无需新的配置。
无需基础设施。 服务器是托管的。你在配置文件中添加几行代码就完成了。
我们将使用的 Actor
我们将公开 OFAC 制裁名单筛选爬虫(SDN)。它针对美国财政部外国资产管制处(OFAC)特别指定国民(SDN)名单筛选名称,并返回完整的匹配记录:被制裁方的规范名称、是自然人还是法人、所属的制裁计划、所有已知别名(AKA)、地址、网站、注册标识和联动备注。
这些字段集正是反洗钱、了解你的客户(KYC)或支付筛选检查所需的。SDN 名单是美国最重要的制裁名单:任何与名单上一方的交易在法律上都被禁止。针对它的筛选是公开的、权威的,对受监管机构是强制的。

第 1 步:获取你的 Apify API 令牌
登录 Apify Console,打开 Settings → Integrations,复制你的个人 API 令牌。MCP 服务器用它来进行身份验证和将 Actor 运行计费到你的账户。
📌 注意:该令牌是一个秘密。只在客户端配置中保存它,永远不要在 prompt 或提交的文件中。
第 2 步:指向 Apify MCP 服务器的 Claude Desktop
打开 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/ofac-sanctions-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/ofac-sanctions-scraper"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}
重启 Claude Desktop 使其获取新服务器。
第 3 步:确认工具已加载
重启后,Actor 显示为可调用工具。如果你列出 Apify 服务器公开的工具,你会看到存储帮助程序加上 Actor 本身,以其 Store 句柄命名:
get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--ofac-sanctions-scraper
最后一项 scrapers_lat--ofac-sanctions-scraper 是我们的筛选工具。Claude 现在知道它存在,知道它做什么(从 Actor 的 README),以及它需要什么输入(从服务器传递的输入模式)。
第 4 步:要求 Claude 筛选交易对手
现在是收获的时刻。在一个正常的聊天中,提出一个需要确凿事实的问题:
"We are about to release a wire to Rosoboronexport. Screen that name against the OFAC SDN list before we proceed."
Claude 认识到它无法从记忆中可靠地回答这个问题,选择 OFAC 工具,并从你的问题中填入输入。在幕后,客户端发送一个带有 Actor 参数的 tools/call:
{
"name": "scrapers_lat--ofac-sanctions-scraper",
"arguments": {
"searchName": "Rosoboronexport",
"maxRecords": 3
}
}
Apify MCP 服务器启动 Actor,等待它完成,并返回数据集。这是它生成的真实运行元数据:
{
"runId": "KE0q52c9btp3W2tMR",
"actorName": "scrapers_lat/ofac-sanctions-scraper",
"status": "SUCCEEDED",
"matchCount": 1
}
一个 SDN 匹配,实时针对 OFAC 名单。
第 5 步:阅读真实输出
工具返回的数据集是结构化的制裁数据。这是来自运行的实际记录:
{
"name": "ROSOBORONEKSPORT OAO",
"type": "entity",
"list": "SDN",
"programs": ["UKRAINE-EO13662", "RUSSIA-EO14024", "IRAN-CON-ARMS-EO"],
"akas": [
"ROSOBORONEXPORT JSC",
"RUSSIAN DEFENSE EXPORT ROSOBORONEXPORT",
"ROSOBORONEKSPORT OJSC"
],
"address": "27 Stromynka Ul., Moscow, 107076, Russia",
"website": "www.roe.ru",
"registrationId": "1117746521452 (Russia)",
"remarks": "Linked To STATE CORPORATION ROSTEC."
}
Claude 读到这里并用普通语言回答:该机构是 SDN 正匹配。被制裁实体是 ROSOBORONEKSPORT OAO,一个法人(而非自然人),列在三个 OFAC 计划下:UKRAINE-EO13662、RUSSIA-EO14024 和 IRAN-CON-ARMS-EO。它还以别名 ROSOBORONEXPORT JSC 和 RUSSIAN DEFENSE EXPORT ROSOBORONEXPORT 进行交易,在俄罗斯注册,注册号为 1117746521452,与 STATE CORPORATION ROSTEC 有联系。代理的结论:不要放行电汇。这些事实中的每一个都可以追溯到官方 OFAC 记录,而不是模型的记忆,代理将计划和证据附加到阻止上。

反面例子同样重要。筛选一个普通的、清白的交易对手名称,同样的工具返回零匹配,明确的通过。该否定结果不是非答案;它是合规文件需要展示的记录证据,证明该方已被筛选且在特定日期清白。一个能够区分"匹配,阻止它"和"已筛选,无命中,继续"的代理为你提供了控制的两个部分。仅靠模型无法以权威方式产生任何一个。
真实用例:用于支付的反洗钱筛选代理
将这个放在语境中。反洗钱或支付合规团队必须在入职时筛选每个新交易对手,在放行电汇前筛选每个收款人。这个义务是绝对的:如果名称匹配 SDN 名单,支付被阻止并报告。工作量大、重复且不容许有任何遗漏。
没有工具的情况下,分析师打开 OFAC 搜索门户,输入每个名称,阅读结果,判断模糊的别名是否是同一方,并将结果粘贴到案件文件中,每个收款人一次,整天都这样做。当工具接入 Claude 后,分析师将当天的收款人列表丢进聊天中,要求代理筛选每个名称。Claude 针对每个交易对手调用 Actor,对于每个命中,它返回规范的 SDN 名称、制裁计划、别名和注册以及联动证据,然后标记支付为阻止并附加该证据。清白的名称返回为记录在案的通过。机械查询消失;对于边界匹配的升级决定仍然由人类做。
这就是每个好工具的形态:它消除机械获取,而不是决策。
进一步:链接第二个工具
制裁筛选很少止于一个名单。具有欧盟敞口的美国机构还必须针对欧盟综合制裁名单进行筛选。同一 MCP 连接可以通过扩展 tools 参数公开更多 Actor:
https://mcp.apify.com?tools=scrapers_lat/ofac-sanctions-scraper,scrapers_lat/eu-sanctions-list-scraper
现在代理可以在同一对话中针对美国 OFAC SDN 名单和欧盟综合制裁名单筛选交易对手,然后将两个结果合并成一个覆盖两个司法管辖区的筛选摘要。由于每个 Actor 是一个独立工具,代理为每个步骤选择正确的工具,自动报告在一个名单上清白但在另一个名单上被标记的方。
🏹 故障排除:如果工具未在 Claude 中出现,通常有两个原因:tools 参数中缺少或拼写错误的 Actor 句柄(必须是 Store URL 中的确切 username/actor-name),以及在 Claude 运行时编辑的配置。修复句柄,保存,并完全重启客户端。
📌 注意:每个工具调用都是一个真实的 Actor 运行,计费到你的 Apify 账户(此 Actor 按结果付费)。对于一次性筛选,成本不足一分钱;如果你需要按计划筛选数千个名称或针对名单更新重新筛选你的整本书,直接通过 Apify API 或计划任务运行 Actor,而不是每个聊天消息一个调用。
你现在拥有一个 AI 代理,可以按需在对话中筛选任何交易对手针对美国 OFAC SDN 名单,并返回反洗钱决策实际需要的制裁计划和证据,加上当没有匹配时的记录在案的清白通过。该模式是可重用的:选择返回权威结构化数据的 Actor,通过 Apify MCP 服务器用 tools 参数公开它,让代理决定何时调用它。
添加欧盟综合名单、英国 OFSI 或公司注册表 Actor 来构建完整的入职和筛选合规代理。
不仅筛选交易对手,还在同一对话中筛选其受益所有人和官员。
查阅 Apify MCP 服务器文档了解 OAuth 设置、资源读取以及让代理发现它没有预先配置的 Actor 的 search-actors / call-actor 工具。
本指南中使用的 Actor:OFAC Sanctions List Screening Scraper (SDN)。