
MewCP Apify MCP
from AStheTECH
Hosted, Stateless & Multitenant Apify MCP server enables AI assistants to run actors, collect web data, and automate workflows through Apify.
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
<details> <summary><code>apify_health_check</code> β Check server readiness</summary>Returns a status object confirming the server is running and reachable.
Inputs: (none)
Output:
{
"status": "ok",
"server": "CL Apify MCP Server"
}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" }
]
}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"
}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
}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"
}
]
}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 }
]
}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
<details> <summary><strong>Common Parameters</strong></summary>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
Actors:
{username}~{actor-name} or {actorId}
Example: apify~web-scraper or BwFbCCmwYxNqHr7TBRuns:
{runId}
Example: HG7ML7M8z78YcAPEBDatasets:
{datasetId}
Example: rHuMdwm6xCFt6WiEzTasks:
{taskId}
Example: KoJgnDhzbtGnuH5mdREADYβ 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
<details> <summary><strong>Steps</strong></summary>- 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
</details>Personal API tokens carry the same permissions as your account. For production integrations, create a scoped token with the minimum permissions required.
This tool doesn't publish a standard install command β the repository README on GitHub covers its setup.
Troubleshooting
<details> <summary><strong>Missing or Invalid Headers</strong></summary>- 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
- 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
- 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
- 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
- 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:
- 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)
<details> <summary><strong>Resources</strong></summary>
- 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