实战教程:通过 Apify MCP 服务器为 Claude 接入官方 EU 制裁名单,替代模型幻觉为实时准确数据。包含完整代码示例。
AI Agent 擅长推理,却极不擅长掌握事实。问 Claude:“Rosoboronexport 是否出现在欧盟综合制裁名单(EU Consolidated Sanctions List)上?属于哪个制裁计划?从什么时候开始被列入?”它会根据训练数据给出一个看似自信的答案,但这些数据可能已经过时数月甚至数年,也可能完全错误。对于业务涉及欧洲的 AML 或合规团队来说,“可能在名单上”并不足以支持开户或放行付款。漏掉一个匹配项意味着违反欧盟限制性措施;错误地判定无风险,则可能招致执法行动。
本指南将解决这个问题。我们会把 Claude 连接到官方 Apify MCP server,向它开放一个用于根据欧盟综合制裁名单筛查姓名的 Actor,将“该交易方是否受到欧盟制裁?”从一次猜测变成对权威记录来源的实时查询。完成后,你将拥有一个可正常运行的制裁筛查工具,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 已经托管好,只需在配置文件中添加几行内容即可。
我们将开放 EU Consolidated Sanctions List Scraper(Persons & Entities)。它会根据欧盟综合制裁名单筛查某个名称,并返回完整的匹配记录,包括:被列名方的主要名称、主体是个人还是企业、制裁计划及法律依据(实施该措施的欧盟法规)、所有已知别名、欧盟参考编号、指定日期与发布日期、地址、国籍、个人出生信息,以及注册编号或税务标识符。
这些字段正是涉及欧盟业务的 AML、KYC 或付款筛查所需要的信息。欧盟综合制裁名单是记录所有受欧盟金融限制性措施约束主体的权威资料:属于被列名方的任何资金或经济资源都必须被冻结。对该名单进行筛查具有公开性、权威性,同时也是在欧盟境内运营或与欧盟开展业务的受监管机构必须履行的义务。对于同时涉及美国和欧洲业务的机构来说,它自然对应于美国 OFAC 名单。

登录 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 获得一个目标明确的工具,而不是整个 Store。
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=scrapers_lat/eu-sanctions-list-scraper",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor 也使用相同的 JSON,配置文件位于 .cursor/mcp.json。如果你更愿意通过 stdio 在本地运行,而不是使用托管 endpoint,可以使用以下配置:
{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--tools", "scrapers_lat/eu-sanctions-list-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--eu-sanctions-list-scraper
最后一项 scrapers_lat--eu-sanctions-list-scraper 就是我们的筛查工具。现在 Claude 已经知道它的存在、它的用途(来自 Actor 的 README),以及它接受哪些输入(来自 server 一并传递的 input schema)。
现在进入真正发挥作用的环节。在普通聊天中,提出一个需要依据真实数据回答的问题:
“我们正在为一家欧盟供应商办理准入,交易方是 Rosoboronexport。请先根据欧盟综合制裁名单筛查该名称,再决定是否为其开户。”
Claude 会意识到,单凭记忆无法可靠回答这个问题,于是选择欧盟制裁工具,并根据你的问题填写输入参数。在底层,client 会发送一次携带 Actor 参数的 tools/call:
{
"name": "scrapers_lat--eu-sanctions-list-scraper",
"arguments": {
"nameQuery": "Rosoboronexport",
"subjectType": "all",
"maxEntries": 50
}
}
Apify MCP server 会启动 Actor,等待它运行结束,然后返回 dataset。下面是该次真实运行产生的 metadata:
{
"runId": "Ple1v3yZc2MAm5W9A",
"actorName": "scrapers_lat/eu-sanctions-list-scraper",
"status": "SUCCEEDED",
"matchCount": 1
}
实时查询欧盟综合制裁名单后,得到一个匹配项。
工具返回的 dataset 是结构化制裁数据。下面是该次运行返回的一条真实记录,为便于筛查,仅保留了重要字段:
{
"primaryName": "AO Рособоронэкспорт",
"subjectType": "enterprise",
"aliases": ["Rosoboroneksport", "JSC ROSOBORONEXPORT"],
"programme": "UKR",
"regulationType": "amendment",
"regulationNumberTitle": "2023/571 (OJ L75 I)",
"organisationType": "council",
"euReferenceNumber": "EU.7808.66",
"designationDate": "2022-03-15",
"addressCity": "Moscow",
"addressCountry": "RUSSIAN FEDERATION",
"idNumber": "7718852163",
"idType": "National Fiscal Code",
"publicationUrl": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:32023R0571",
"source": "EU Consolidated Financial Sanctions List"
}
Claude 读取这些数据后,会用自然语言回答:该交易方与欧盟名单中的主体正向匹配。被列名方是 AO Рособоронэкспорт,属于企业而非个人;它于 2022-03-15 根据 UKR 计划、通过 Regulation 2023/571(OJ L75 I)被 Council 列入名单。该企业还使用 Rosoboroneksport 和 JSC ROSOBORONEXPORT 等别名,总部位于俄罗斯联邦莫斯科,欧盟参考编号为 EU.7808.66,税务 ID 为 7718852163。Agent 给出的结论是:不要开户。上述每一项事实都能追溯至欧盟官方记录,而不是来自模型记忆;Agent 还可以附上 EUR-Lex 法规地址,作为实施拦截措施的书面法律依据。

反例同样重要。筛查一个普通、无风险的交易方名称时,同一个工具会返回零个匹配项,明确表示可以通过。这个否定结果并非没有答案,而是合规档案所需要的书面证据,用来证明该交易方已在特定日期接受筛查并获准通过。一个能够区分“存在匹配,予以拦截”和“已经筛查,没有命中,可以继续”的 Agent,能同时覆盖这项控制措施的两个方面。仅靠模型自身,无法权威地完成其中任何一个。
把它放到实际业务场景中来看。任何接触欧盟客户或供应商的合规或支付团队,都必须在新交易方准入时进行筛查,并在资金转移前筛查每一位收款人。这项义务是绝对的:如果某个名称与欧盟综合制裁名单匹配,就必须冻结资产并报告该案件。这项工作量大、重复性强,而且容不得任何遗漏;欧洲语言别名或西里尔字母法定名称,恰恰是仓促进行人工搜索时最容易漏掉的匹配项。
没有工具时,分析师需要打开欧盟制裁地图或门户,逐个输入名称、阅读结果、判断模糊匹配的别名是否属于同一主体,然后将结果粘贴到案件文件中。他们每天都要为每个交易方重复这套流程。将工具接入 Claude 后,分析师只需把当天的名单放入聊天,并要求 Agent 逐一筛查。Claude 会为每个交易方调用 Actor;对于每个命中项,它会返回主要名称、制裁计划、作为法律依据的 regulationNumberTitle、别名、参考编号和标识符,然后将该交易方标记为已拦截,并附上相关证据。未命中的名称则会以有记录的通过结果返回。机械式查询消失了,而对边界性匹配结果的升级决策仍由人工负责。
这正是所有优秀 Agent 工具应有的形态:消除机械式的数据获取工作,而不是替代决策。
制裁筛查很少止步于一份名单。同时涉及美国和欧盟业务的机构,必须分别根据美国 OFAC SDN 名单和欧盟综合制裁名单核查交易方,因为同一个主体可能在一个司法辖区被列名,而在另一个司法辖区没有被列名。只需扩展 tools 参数,同一个 MCP 连接就能开放更多 Actor:
https://mcp.apify.com?tools=scrapers_lat/eu-sanctions-list-scraper,scrapers_lat/ofac-sanctions-scraper
现在,Agent 可以在同一次对话中,分别根据欧盟综合制裁名单和美国财政部 OFAC SDN 名单筛查交易方,然后将两个结果整合成一份覆盖两个司法辖区的筛查摘要。由于每个 Actor 都是独立工具,Agent 会在每个步骤选择正确的工具,依次运行两者,并主动报告某个交易方是否在一份名单中没有问题、却在另一份名单中被标记。对于需要履行双司法辖区覆盖义务的 AML 团队来说,只用一个 prompt 就能完成整套核查。
🏹 故障排查:如果 Claude 中没有出现该工具,通常有两个原因。一是 tools 参数中缺少 Actor handle 或存在拼写错误——它必须与 Store URL 中的 username/actor-name 完全一致;二是在 Claude 运行期间修改了配置。修正 handle、保存配置,然后彻底重启 client。
📌 注意:每次工具调用都会真正运行一次 Actor,并从你的 Apify 账户扣费(该 Actor 按结果付费)。单次筛查的成本不到一美分;如果需要定期筛查数千个名称,或在名单更新后重新筛查整个客户组合,应通过 Apify API 或 scheduled task 直接运行 Actor,而不是为每条聊天消息分别调用一次。
至此,你已经拥有了一个 AI Agent:它可以在对话进行过程中按需筛查任何交易方,核对其是否出现在欧盟综合制裁名单中,并返回 AML 决策真正需要的制裁计划、法律依据、别名和证据;如果没有匹配,它也能提供有记录的通过结果。这套模式可以重复使用:选择一个能够返回权威结构化数据的 Actor,通过带有 tools 参数的 Apify MCP server 将它开放给 Agent,再由 Agent 自行决定何时调用。
继续添加美国 OFAC SDN 名单、英国 OFSI 或企业注册信息 Actor,就能构建一个完整的准入与筛查合规 Agent,覆盖业务涉及的每一个司法辖区。
在同一次对话中,不仅筛查交易方,还可以筛查其受益所有人和管理人员。
阅读 Apify MCP server 文档,可以了解 OAuth 配置、resource 读取,以及允许 Agent 发现未预先配置 Actor 的 search-actors / call-actor 工具。
本指南使用的 Actor:EU Consolidated Sanctions List Scraper(Persons & Entities)。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。