MewCP Apify MCP Server
Hosted, Stateless & Multitenant Apify MCP server enables AI assistants to run actors, collect web data, and automate workflows through Apify.
Documentation
Run web scrapers, automate data extraction, and manage Actor pipelines through AI.
A Model Context Protocol (MCP) server that exposes Apify's API for running Actors, managing runs, and retrieving scraped datasets.
Overview
The Apify MCP Server provides end-to-end control over Apify's automation platform through AI:
- Discover and run Actors from your Apify account with custom inputs and resource limits
- Monitor run status and retrieve scraped output from datasets
- Browse and manage pre-configured Actor tasks
Perfect for:
- Triggering web scraping pipelines from conversational AI interfaces
- Polling run results and surfacing structured dataset output without leaving the chat
- Managing Actor task libraries and monitoring run history through natural language
Tools
apify_health_check — Check server readiness
Returns a status object confirming the server is running and reachable.
Inputs: (none)
Output:
{
"status": "ok",
"server": "CL Apify MCP Server"
}
apify_list_actors — List Actors in your account
Returns a paginated list of Actors in your Apify account, including ID, name, and username.
Inputs:
- `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)
Output:
{
"success": true,
"total": 12,
"count": 12,
"actors": [
{ "id": "abc123", "name": "web-scraper", "username": "myuser" }
]
}
apify_run_actor — Run an Actor
Starts an Actor run with the provided input and optional resource constraints. Returns the run ID and default dataset ID for polling results.
Inputs:
- `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')
Output:
{
"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
Retrieves the status and metadata of a specific Actor run. Optionally waits up to 60 seconds for the run to finish.
Inputs:
- `run_id` (string, required) — Actor run ID
- `wait_for_finish` (integer, optional) — Seconds to wait for run completion, 0–60 (default: 0)
Output:
{
"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
Returns a paginated list of Actor runs from your account, sorted newest first. Optionally filter by run status.
Inputs:
- `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)
Output:
{
"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
Fetches scraped items from an Actor run's default dataset. This is the primary way to read Actor output after a run completes.
Inputs:
- `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)
Output:
{
"success": true,
"count": 25,
"items": [
{ "url": "https://example.com", "title": "Example Page", "price": 29.99 }
]
}
apify_list_tasks — List Actor tasks
Returns a paginated list of Actor tasks in your account. Tasks are pre-configured Actor runs with saved inputs.
Inputs:
- `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)
Output:
{
"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 Parameters Reference
Common Parameters
limit— Maximum number of records to return per request (max varies by endpoint)offset— Number of records to skip; use withlimitfor paginationdesc— Sort order; list endpoints return results newest-first by default
Resource ID Formats
Actors:
{username}~{actor-name} or {actorId}
Example: apify~web-scraper or BwFbCCmwYxNqHr7TB
Runs:
{runId}
Example: HG7ML7M8z78YcAPEB
Datasets:
{datasetId}
Example: rHuMdwm6xCFt6WiEz
Tasks:
{taskId}
Example: KoJgnDhzbtGnuH5md
Run Status Values
READY— Queued and waiting to startRUNNING— Currently executingSUCCEEDED— Completed successfullyFAILED— Terminated with an errorABORTING— Abort in progressABORTED— Stopped by user or timeoutTIMED-OUT— Exceeded the timeout limit
Getting Your Apify API Token
Steps
- Go to the Apify Console
- Click your profile avatar → Settings → Integrations
- Under API tokens, click + Add new token
- Give the token a name and click Create — copy the token value immediately, it is only shown once
Personal API tokens carry the same permissions as your account. For production integrations, create a scoped token with the minimum permissions required.
Troubleshooting
Missing or Invalid Headers
- Cause: API token not provided in request headers or incorrect format
- Solution:
- Verify
Authorization: Bearer YOUR_API_KEYandX-Mewcp-Credential-Id: CREDENTIAL-IDheaders are present - Check API token is active in your MewCP account
- Verify
Insufficient Credits
- Cause: API calls have exceeded your request limits
- Solution:
- Check credit usage in your Curious Layer dashboard
- Upgrade to a paid plan or add credits for higher limits
- Contact support for credit adjustments
Credential Not Connected
- Cause: No Apify credential linked to your account
- Solution:
- Go to Credentials in your MewCP dashboard
- Add your Apify API token
- Retry the request with the correct
X-Mewcp-Credential-Idheader
Malformed Request Payload
- Cause: JSON payload is invalid or missing required fields
- Solution:
- Validate JSON syntax before sending
- Ensure all required tool parameters are included
- When using
apify_run_actor, passinput_dataas a JSON string, not an object
Server Not Found
- Cause: Incorrect server name in the API endpoint
- Solution:
- Verify endpoint format:
{server-name}/mcp/{tool-name} - Use correct server name from documentation
- Check available servers in your Curious Layer account
- Verify endpoint format:
Apify API Error
- Cause: Upstream Apify API returned an error
- Solution:
- Check Apify service status at Apify Status Page
- Verify your API token has the required permissions for the operation
- Review the error message for specific details (e.g. Actor not found, insufficient compute units)
Resources
- Apify API Documentation — Official API reference
- Apify Console — Manage Actors, runs, and datasets
- FastMCP Docs — FastMCP specification
- FastMCP Credentials — FastMCP Credentials package for credential handling