自动化数据提取服务

Apify MCP服务器通过AI提供对Apify自动化平台的端到端控制,包括运行Actor、管理任务和检索数据集。

  • by AStheTECH
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Curious-Layer/cl-mcp-apify

使用说明

运行web抓取器,自动化数据提取,并通过AI管理Actor管道。

一个模型上下文协议(MCP)服务器,公开Apify的API,用于运行Actors、管理运行和检索抓取的数据集。

概述

Apify MCP服务器通过AI提供对Apify自动化平台的端到端控制:

  • 使用自定义输入和资源限制从您的Apify帐户中发现并运行Actor
  • 监控运行状态并从数据集中检索抓取的输出
  • 浏览和管理预配置的Actor任务

非常适合:

  • 从对话式AI界面触发网络抓取管道
  • 在不离开聊天的情况下轮询运行结果并显示结构化数据集输出
  • 通过自然语言管理Actor任务库和监控运行历史

工具

apify_health_check — Check server readiness

返回一个状态对象,确认服务器正在运行且可访问。

输入: (无)

输出:

{
  "status": "ok",
  "server": "CL Apify MCP Server"
}
apify_list_actors — List Actors in your account

返回Apify帐户中Actor的分页列表,包括ID、名称和用户名。

输入:

- `my_only` (boolean, optional) — Only return Actors owned by you (default: true)
- `limit`   (integer, optional) — Maximum number of Actors to return, 1–1000 (default: 100)
- `offset`  (integer, optional) — Number of Actors to skip for pagination (default: 0)

输出:

{
  "success": true,
  "total": 12,
  "count": 12,
  "actors": [
    { "id": "abc123", "name": "web-scraper", "username": "myuser" }
  ]
}
apify_run_actor — Run an Actor

使用提供的输入和可选资源约束启动Actor运行。返回轮询结果的运行ID和默认数据集ID。

输入:

- `actor_id`      (string, required)  — Actor ID to run (e.g. 'username~actor-name' or Actor ID)
- `input_data`    (string, optional)  — JSON string of input data for the Actor (default: '{}')
- `timeout_secs`  (integer, optional) — Run timeout in seconds
- `memory_mbytes` (integer, optional) — Memory limit in MB (min 128)
- `build`         (string, optional)  — Build tag or number (default: 'latest')

输出:

{
  "success": true,
  "run_id": "run_XXXXXXXXXX",
  "status": "RUNNING",
  "started_at": "2024-01-01T00:00:00.000Z",
  "default_dataset_id": "dataset_XXXXXXXXXX",
  "default_key_value_store_id": "kvs_XXXXXXXXXX"
}
apify_get_run — Get Actor run details

检索特定Actor运行的状态和元数据。可选择等待长达60秒的跑步结束。

输入:

- `run_id`          (string, required)  — Actor run ID
- `wait_for_finish` (integer, optional) — Seconds to wait for run completion, 0–60 (default: 0)

输出:

{
  "success": true,
  "run_id": "run_XXXXXXXXXX",
  "actor_id": "abc123",
  "status": "SUCCEEDED",
  "started_at": "2024-01-01T00:00:00.000Z",
  "finished_at": "2024-01-01T00:01:30.000Z",
  "default_dataset_id": "dataset_XXXXXXXXXX",
  "usage_total_usd": 0.012
}
apify_list_runs — List recent Actor runs

返回您帐户中Actor运行的分页列表,按最新顺序排列。可选择按运行状态进行筛选。

输入:

- `status` (string, optional)  — Filter by status: 'SUCCEEDED', 'FAILED', 'RUNNING', 'ABORTED', etc.
- `limit`  (integer, optional) — Maximum number of runs to return, 1–1000 (default: 100)
- `offset` (integer, optional) — Number of runs to skip for pagination (default: 0)

输出:

{
  "success": true,
  "total": 42,
  "count": 10,
  "runs": [
    {
      "id": "run_XXXXXXXXXX",
      "actor_id": "abc123",
      "status": "SUCCEEDED",
      "started_at": "2024-01-01T00:00:00.000Z",
      "finished_at": "2024-01-01T00:01:30.000Z"
    }
  ]
}
apify_get_dataset_items — Retrieve dataset output

从Actor运行的默认数据集中获取抓取的项目。这是在运行完成后读取Actor输出的主要方式。

输入:

- `dataset_id` (string, required)  — Dataset ID (returned in the Actor run response)
- `limit`      (integer, optional) — Maximum number of items to return, 1–10000 (default: 100)
- `offset`     (integer, optional) — Number of items to skip for pagination (default: 0)
- `clean`      (boolean, optional) — Remove hidden fields starting with '#' (default: true)

输出:

{
  "success": true,
  "count": 25,
  "items": [
    { "url": "https://example.com", "title": "Example Page", "price": 29.99 }
  ]
}
apify_list_tasks — List Actor tasks

返回帐户中Actor任务的分页列表。任务是预先配置的Actor运行,使用已保存的输入。

输入:

- `limit`  (integer, optional) — Maximum number of tasks to return, 1–1000 (default: 100)
- `offset` (integer, optional) — Number of tasks to skip for pagination (default: 0)

输出:

{
  "success": true,
  "total": 5,
  "count": 5,
  "tasks": [
    {
      "id": "task_XXXXXXXXXX",
      "name": "my-scraper-task",
      "actor_id": "abc123",
      "username": "myuser",
      "created_at": "2024-01-01T00:00:00.000Z"
    }
  ]
}

API参数参考

Common Parameters
  • limit --每个请求返回的最大记录数(最大值因端点而异)
  • offset --要跳过的记录数;与...一起使用 limit 用于分页
  • desc --排序顺序;默认情况下,列表端点首先返回最新结果
Resource ID Formats

演员:

{username}~{actor-name}  or  {actorId}
Example: apify~web-scraper  or  BwFbCCmwYxNqHr7TB

跑:

{runId}
Example: HG7ML7M8z78YcAPEB

数据集:

{datasetId}
Example: rHuMdwm6xCFt6WiEz

任务:

{taskId}
Example: KoJgnDhzbtGnuH5md
Run Status Values
  • READY --排队等待开始
  • RUNNING --当前正在执行
  • SUCCEEDED --已成功完成
  • FAILED --因错误终止
  • ABORTING --中止正在进行中
  • ABORTED --已被用户停止或超时
  • TIMED-OUT --超过超时限制

获取Apify API代币

Steps
  1. 去 Apify控制台
  2. 点击您的个人资料头像→ 设置 → 集成
  3. 在...之下 API令牌,单击 +添加新令牌
  4. 为令牌命名并单击 创建 --立即复制令牌值,它只显示一次

个人API令牌具有与您的帐户相同的权限。对于生产集成,创建一个具有所需最小权限的作用域令牌。

故障排除

Missing or Invalid Headers
  • 原因: 请求头中未提供API令牌或格式不正确
  • 解决方案:
    1. 验证 Authorization: Bearer YOUR_API_KEY 和 X-Mewcp-Credential-Id: CREDENTIAL-ID 标题存在
    2. 检查API令牌在您的MewCP帐户中是否处于活动状态
Insufficient Credits
  • 原因: API调用已超出您的请求限制
  • 解决方案:
    1. 在您的Curious Layer仪表板中检查信用使用情况
    2. 升级到付费计划或为更高的限额添加积分
    3. 联系支持部门进行信用调整
Credential Not Connected
  • 原因: 没有链接到您帐户的Apify凭据
  • 解决方案:
    1. 首选 凭证 在您的MewCP仪表板中
    2. 添加Apify API令牌
    3. 使用正确的重试请求 X-Mewcp-Credential-Id 头球
Malformed Request Payload
  • 原因: JSON负载无效或缺少必填字段
  • 解决方案:
    1. 发送前验证JSON语法
    2. 确保包括所有必需的工具参数
    3. 使用时 apify_run_actor,通过 input_data 作为JSON 字符串,不是对象
Server Not Found
  • 原因: API终结点中的服务器名称不正确
  • 解决方案:
    1. 验证端点格式: {server-name}/mcp/{tool-name}
    2. 使用文档中正确的服务器名称
    3. 检查您的Curious Layer帐户中的可用服务器
Apify API Error
  • 原因: 上游Apify API返回错误
  • 解决方案:
    1. 检查Apify服务状态 优化状态页面
    2. 验证您的API令牌是否具有操作所需的权限
    3. 查看错误消息以了解具体细节(例如,未找到Actor、计算单元不足)

Resources