actors-mcp-server

actors-mcp-server
官方

使用 Apify 提供的 3000 多个预构建的云工具(称为 Actors),从网站、电子商务平台、社交媒体、搜索引擎、地图等提取数据。

浏览器自动化
社交媒体
电子商务与零售
访问服务器

README

Apify 模型上下文协议 (MCP) 服务器

Actors MCP Server smithery badge

所有 Apify Actors 的 MCP 服务器实现。 此服务器支持与一个或多个 Apify Actors 交互,这些 Actors 可以在 MCP 服务器配置中定义。

服务器可以通过两种方式使用:

  • 🇦 MCP 服务器 Actor – 可通过服务器发送事件 (SSE) 访问的 HTTP 服务器,请参阅 指南
  • ⾕ MCP 服务器 Stdio – 可通过标准输入/输出 (stdio) 访问的本地服务器,请参阅 指南

它还可以使用类似聊天的 UI 与 MCP 服务器交互,使用 💬 Tester MCP Client

🎯 Apify MCP 服务器的作用是什么?

MCP 服务器 Actor 允许 AI 助手使用任何 Apify Actor 作为工具来执行特定任务。 例如,它可以:

MCP 客户端

要与 Apify MCP 服务器交互,您可以使用 MCP 客户端,例如:

此外,您可以使用 examples 目录中找到的简单示例客户端。

当您将 Actors 与 MCP 服务器集成后,您可以询问:

  • “搜索网络并总结关于 AI Agents 的最新趋势”
  • “查找旧金山排名前 10 的最佳意大利餐厅”
  • “查找并分析 The Rock 的 Instagram 个人资料”
  • “提供使用模型上下文协议的分步指南,并提供源 URL。”
  • “我可以使用哪些 Apify Actors?”

下图显示了 Apify MCP 服务器如何与 Apify 平台和 AI 客户端交互:

Actors-MCP-server

使用 MCP Tester 客户端,您可以动态加载 Actors,但其他 MCP 客户端尚不支持此功能。 我们还计划添加更多功能,请参阅 路线图 了解更多详细信息。

🔄 什么是模型上下文协议?

模型上下文协议 (MCP) 允许 AI 应用程序(和 AI 代理),例如 Claude Desktop,连接到外部工具和数据源。 MCP 是一种开放协议,可实现 AI 应用程序、AI 代理以及本地或远程资源之间的安全、受控的交互。

有关更多信息,请参阅 模型上下文协议 网站或博客文章 什么是 MCP 以及为什么它很重要?

🤖 MCP 服务器与 AI Agents 有何关系?

Apify MCP 服务器通过 MCP 协议公开 Apify 的 Actors,允许实现 MCP 协议的 AI Agents 或框架访问所有 Apify Actors,作为数据提取、网络搜索和其他任务的工具。

要了解有关 AI Agents 的更多信息,请浏览我们的博客文章:什么是 AI Agents? 并浏览 Apify 精选的 AI Agent 集合。 有兴趣在 Apify 上构建和货币化您自己的 AI 代理吗?查看我们的 分步指南,了解如何在 Apify 平台上创建、发布和货币化 AI 代理。

🧱 组件

工具

Actors

任何 Apify Actor 都可以用作工具。 默认情况下,服务器预配置了下面指定的 Actors,但可以通过提供 Actor 输入来覆盖它。

'apify/instagram-scraper'
'apify/rag-web-browser'
'lukaskrivka/google-maps-with-contact-details'

MCP 服务器加载 Actor 输入模式并创建与 Actors 对应的 MCP 工具。 请参阅 RAG Web Browser 的输入模式示例。

工具名称必须始终是完整的 Actor 名称,例如 apify/rag-web-browser。 MCP 工具的参数表示 Actor 的输入参数。 例如,对于 apify/rag-web-browser Actor,参数为:

{
  "query": "restaurants in San Francisco",
  "maxResults": 3
}

您无需指定输入参数或要调用的 Actor,一切都由 LLM 管理。 当调用工具时,参数会自动传递给 LLM 的 Actor。 您可以参考特定 Actor 的文档以获取可用参数的列表。

辅助工具

服务器提供了一组辅助工具来发现可用的 Actors 并检索其详细信息:

  • get-actor-details:检索有关特定 Actor 的文档、输入模式和详细信息。
  • discover-actors:使用关键字搜索相关的 Actors 并返回其详细信息。

还有一些工具可以管理可用的工具列表。但是,动态添加和删除工具需要 MCP 客户端具有更新工具列表的功能(处理 ToolListChangedNotificationSchema),这通常不受支持。

您可以使用 Apify Tester MCP Client Actor 尝试此功能。 要启用它,请设置 enableActorAutoLoading 参数。

  • add-actor-as-tool:按名称将 Actor 添加到可用的工具列表,而不执行它,需要用户同意稍后运行。
  • remove-actor-from-tool:当不再需要时,按名称从可用的工具列表中删除 Actor。

提示和资源

服务器不提供任何资源和提示。 我们计划在未来添加 Apify 的数据集键值存储 作为资源。

⚙️ 用法

Apify MCP 服务器可以通过两种方式使用:作为在 Apify 平台上运行的 Apify Actor 或作为在您的机器上运行的本地服务器

🇦 MCP 服务器 Actor

备用 Web 服务器

Actor 在 备用模式 下运行,并带有一个接收和处理请求的 HTTP Web 服务器。

使用默认 Actors 启动服务器。要使用一组默认 Actors 的 Apify MCP 服务器,请将带有您的 Apify API 令牌 的 HTTP GET 请求发送到以下 URL。

https://actors-mcp-server.apify.actor?token=<APIFY_TOKEN>

也可以使用不同的 Actors 集启动 MCP 服务器。 为此,请创建一个 任务 并指定您要使用的 Actors 列表。

然后,在备用模式下使用选定的 Actors 运行任务。

https://USERNAME--actors-mcp-server-task.apify.actor?token=<APIFY_TOKEN>

您可以在 Apify Store 中找到所有可用 Actors 的列表。

💬 通过 SSE 与 MCP 服务器交互

服务器运行后,您可以使用服务器发送事件 (SSE) 与服务器交互,以向服务器发送消息并接收响应。 最简单的方法是在 Apify 上使用 Tester MCP Client

大多数 MCP 客户端尚不支持 SSE(截至 2025 年 3 月),但这可能会改变。 Claude Desktop 尚不支持 SEE,但您可以将其与 Stdio 传输一起使用,请参阅 本地主机上的 MCP 服务器 了解更多详细信息。

在客户端设置中,您需要提供服务器配置:

{
    "mcpServers": {
        "apify": {
            "type": "sse",
            "url": "https://actors-mcp-server.apify.actor/sse",
            "env": {
                "APIFY_TOKEN": "your-apify-token"
            }
        }
    }
}

或者,您可以使用简单的 python client_see.py 或使用 curl </> 命令测试服务器。

  1. 通过向以下 URL 发送 GET 请求来启动服务器发送事件 (SSE):

    curl https://actors-mcp-server.apify.actor/sse?token=<APIFY_TOKEN>
    

    服务器将响应一个 sessionId,您可以使用它向服务器发送消息:

    event: endpoint
    data: /message?sessionId=a1b
    
  2. 通过使用 sessionId 发出 POST 请求来向服务器发送消息:

    curl -X POST "https://actors-mcp-server.apify.actor/message?token=<APIFY_TOKEN>&session_id=a1b" -H "Content-Type: application/json" -d '{
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "arguments": { "searchStringsArray": ["restaurants in San Francisco"], "maxCrawledPlacesPerSearch": 3 },
        "name": "lukaskrivka/google-maps-with-contact-details"
      }
    }'
    

    MCP 服务器将使用提供的参数作为输入参数启动 Actor lukaskrivka/google-maps-with-contact-details。 对于此 POST 请求,服务器将响应:

    Accepted
    
  3. 接收响应。服务器将使用提供的查询参数调用指定的 Actor 作为工具,并通过 SSE 将响应流式传输回客户端。 响应将以 JSON 文本形式返回。

    event: message
    data: {"result":{"content":[{"type":"text","text":"{\"searchString\":\"restaurants in San Francisco\",\"rank\":1,\"title\":\"Gary Danko\",\"description\":\"Renowned chef Gary Danko's fixed-price menus of American cuisine ... \",\"price\":\"$100+\"...}}]}}
    

⾕ 本地主机上的 MCP 服务器

您可以通过使用 Claude Desktop 或任何其他 MCP 客户端 配置 Apify MCP 服务器,在您的本地计算机上运行它。 您还可以使用 Smithery 自动安装服务器。

先决条件

  • MacOS 或 Windows
  • 必须安装最新版本的 Claude Desktop(或其他 MCP 客户端)
  • Node.js(v18 或更高版本)
  • Apify API 令牌 (APIFY_TOKEN)

Claude Desktop

要配置 Claude Desktop 以使用 MCP 服务器,请按照以下步骤操作。有关详细指南,请参阅 Claude Desktop 用户指南

  1. 下载 Claude for desktop

    • 适用于 Windows 和 macOS。
    • 对于 Linux 用户,您可以使用此 非官方构建脚本 构建 Debian 包。
  2. 打开 Claude Desktop 应用程序并从左上角的菜单栏启用 开发者模式

  3. 启用后,打开 设置(也从左上角的菜单栏)并导航到 开发者选项,您将在其中找到 编辑配置 按钮

  4. 打开配置文件并编辑以下文件:

    • 在 macOS 上:~/Library/Application\ Support/Claude/claude_desktop_config.json
    • 在 Windows 上:%APPDATA%/Claude/claude_desktop_config.json
    • 在 Linux 上:~/.config/Claude/claude_desktop_config.json
    {
     "mcpServers": {
       "actors-mcp-server": {
         "command": "npx",
         "args": ["-y", "@apify/actors-mcp-server"],
         "env": {
            "APIFY_TOKEN": "your-apify-token"
         }
       }
     }
    }
    

    或者,您可以使用 actors 参数选择一个或多个 Apify Actors:

    {
    "mcpServers": {
      "actors-mcp-server": {
        "command": "npx",
        "args": [
          "-y", "@apify/actors-mcp-server",
          "--actors", "lukaskrivka/google-maps-with-contact-details,apify/instagram-scraper"
        ],
        "env": {
           "APIFY_TOKEN": "your-apify-token"
        }
      }
    }
    }
    
  5. 重新启动 Claude Desktop

    • 完全退出 Claude Desktop(确保它不仅仅是最小化或关闭)。
    • 重新启动 Claude Desktop。
    • 查找 🔌 图标以确认 Exa 服务器已连接。
  6. 打开 Claude Desktop 聊天并询问“我可以使用哪些 Apify Actors?”

    Claude-desktop-with-Actors-MCP-server

  7. 例子

    您可以要求 Claude 执行任务,例如:

    查找并分析关于 LLM 的最新研究论文。
    查找旧金山排名前 10 的最佳意大利餐厅。
    查找并分析 The Rock 的 instagram 个人资料。
    

使用 @modelcontextprotocol/inspector 调试 NPM 包 @apify/actors-mcp-server

要调试服务器,请使用 MCP Inspector 工具:

export APIFY_TOKEN=your-apify-token
npx @modelcontextprotocol/inspector npx -y @apify/actors-mcp-server

通过 Smithery 安装

要通过 Smithery 自动为 Claude Desktop 安装 Apify Actors MCP Server:

npx -y @smithery/cli install @apify/actors-mcp-server --client claude

Stdio 客户端

创建包含以下内容的环境文件 .env

APIFY_TOKEN=your-apify-token
# 仅当您要运行 examples/clientStdioChat.js 时才需要 ANTHROPIC_API_KEY
ANTHROPIC_API_KEY=your-anthropic-api-token

examples 目录中,您可以找到两个通过标准输入/输出 (stdio) 与服务器交互的客户端:

  1. clientStdio.ts 此客户端脚本使用两个指定的 Actors 启动 MCP 服务器。 然后,它使用查询调用 apify/rag-web-browser 工具并打印结果。 它演示了如何连接到 MCP 服务器、列出可用的工具以及使用 stdio 传输调用特定的工具。

    node dist/examples/clientStdio.js
    
  2. clientStdioChat.ts 此客户端脚本也启动 MCP 服务器,但提供了一个交互式命令行聊天界面。 它提示用户与服务器交互,允许动态工具调用和响应。 此示例对于以对话方式测试和调试与 MCP 服务器的交互非常有用。

    node dist/examples/clientStdioChat.js
    

👷🏼 开发

先决条件

  • Node.js(v18 或更高版本)
  • Python 3.9 或更高版本

创建包含以下内容的环境文件 .env

APIFY_TOKEN=your-apify-token
# 仅当您要运行 examples/clientStdioChat.js 时才需要 ANTHROPIC_API_KEY
ANTHROPIC_API_KEY=your-anthropic-api-key

本地客户端 (SSE)

要使用 SSE 传输测试服务器,您可以使用 python 脚本 examples/clientSse.ts: 目前,node.js 客户端不支持建立与带有自定义标头的远程服务器的连接。 您需要在脚本中将 URL 更改为您的本地服务器 URL。

node dist/examples/clientSse.js

调试

由于 MCP 服务器通过标准输入/输出 (stdio) 运行,因此调试可能具有挑战性。 为了获得最佳调试体验,请使用 MCP Inspector

构建 actor-mcp-server 包:

npm run build

您可以使用 npm 使用以下命令启动 MCP Inspector:

export APIFY_TOKEN=your-apify-token
npx @modelcontextprotocol/inspector node ./dist/index.js

启动后,Inspector 将显示一个 URL,您可以在浏览器中访问该 URL 以开始调试。

ⓘ 限制和反馈

处理 Actor 输入模式以使其与大多数 MCP 客户端兼容,同时遵守 JSON Schema 标准。处理包括:

  • 描述 截断为 500 个字符(如 MAX_DESCRIPTION_LENGTH 中定义)。
  • 枚举字段 截断为所有元素的最大组合长度为 200 个字符(如 ACTOR_ENUM_MAX_LENGTH 中定义)。
  • 必需字段 在其描述中显式标记有“REQUIRED”前缀,以便与可能无法正确处理 JSON 模式的框架兼容。
  • 为代理配置和请求列表源等特殊情况构建 嵌套属性,以确保正确的输入结构。
  • 当未在模式中显式定义时,数组项目类型 会被推断,使用优先级顺序:项目中的显式类型 > 预填充类型 > 默认值类型 > 编辑器类型。
  • 枚举值和示例 添加到属性描述中,以确保即使客户端不完全支持 JSON 模式,也能看到它们。

每个 Actor 的内存限制为 4GB。 免费用户有 8GB 的限制,需要为运行 Actors-MCP-Server 分配 128MB。

如果您需要其他功能或有任何反馈,请在 Apify Console 中 提交问题 让我们知道。

🚀 路线图(2025 年 3 月)

  • 添加 Apify 的数据集和键值存储作为资源。
  • 添加诸如 Actor 日志和 Actor 运行之类的工具以进行调试。

📚 了解更多

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
@kazuph/mcp-fetch

@kazuph/mcp-fetch

用于获取网页内容和处理图像的模型上下文协议服务器。这使得 Claude Desktop(或任何 MCP 客户端)能够适当地获取网页内容和处理图像。

精选
本地
JavaScript
DuckDuckGo MCP Server

DuckDuckGo MCP Server

一个模型上下文协议 (MCP) 服务器,通过 DuckDuckGo 提供网页搜索功能,并具有内容获取和解析的附加功能。

精选
Python
YouTube Transcript MCP Server

YouTube Transcript MCP Server

这个服务器用于获取指定 YouTube 视频 URL 的字幕,从而可以与 Goose CLI 或 Goose Desktop 集成,进行字幕提取和处理。

精选
Python
serper-search-scrape-mcp-server

serper-search-scrape-mcp-server

这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置。

精选
TypeScript
The Verge News MCP Server

The Verge News MCP Server

提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。

精选
TypeScript
Tavily MCP Server

Tavily MCP Server

使用 Tavily 的搜索 API 提供 AI 驱动的网络搜索功能,使 LLM 能够执行复杂的网络搜索、获得问题的直接答案以及搜索最近的新闻文章。

精选
Python
mcp-pinterest

mcp-pinterest

用于图像搜索和信息检索的 Pinterest 模型上下文协议 (MCP) 服务器

精选
TypeScript
@wopal/mcp-server-hotnews

@wopal/mcp-server-hotnews

一个模型上下文协议服务器,提供来自中国主要社交平台和新闻网站的实时热点话题。

精选