@apify/actors-mcp-server 0.19.6-beta.3 β†’ 0.19.6-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/README.md +318 -452
  2. package/dist/test_kit/tsconfig.tsbuildinfo +1 -1
  3. package/dist/tools/storage/get_dataset.d.ts.map +1 -1
  4. package/dist/tools/storage/get_dataset.js +7 -7
  5. package/dist/tools/storage/get_dataset.js.map +1 -1
  6. package/dist/tools/storage/get_dataset_items.d.ts.map +1 -1
  7. package/dist/tools/storage/get_dataset_items.js +10 -6
  8. package/dist/tools/storage/get_dataset_items.js.map +1 -1
  9. package/dist/tools/storage/get_dataset_schema.d.ts.map +1 -1
  10. package/dist/tools/storage/get_dataset_schema.js +6 -6
  11. package/dist/tools/storage/get_dataset_schema.js.map +1 -1
  12. package/dist/tools/storage/get_key_value_store.d.ts.map +1 -1
  13. package/dist/tools/storage/get_key_value_store.js +7 -7
  14. package/dist/tools/storage/get_key_value_store.js.map +1 -1
  15. package/dist/tools/storage/get_key_value_store_keys.d.ts.map +1 -1
  16. package/dist/tools/storage/get_key_value_store_keys.js +9 -8
  17. package/dist/tools/storage/get_key_value_store_keys.js.map +1 -1
  18. package/dist/tools/storage/get_key_value_store_record.d.ts.map +1 -1
  19. package/dist/tools/storage/get_key_value_store_record.js +15 -9
  20. package/dist/tools/storage/get_key_value_store_record.js.map +1 -1
  21. package/dist/tools/storage/storage_helpers.d.ts +34 -0
  22. package/dist/tools/storage/storage_helpers.d.ts.map +1 -1
  23. package/dist/tools/storage/storage_helpers.js +38 -0
  24. package/dist/tools/storage/storage_helpers.js.map +1 -1
  25. package/dist/tsconfig.tsbuildinfo +1 -1
  26. package/dist/web/dist/actor-run-widget.js +36 -36
  27. package/dist/web/dist/search-actors-widget.js +51 -51
  28. package/package.json +6 -6
package/README.md CHANGED
@@ -1,614 +1,480 @@
1
- <h1 align="center">
1
+ <p align="center">
2
2
  <a href="https://mcp.apify.com">
3
- <picture>
4
- <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/apify/apify-mcp-server/refs/heads/master/docs/apify_mcp_server_dark_background.png">
5
- <img alt="Apify MCP Server" src="https://raw.githubusercontent.com/apify/apify-mcp-server/refs/heads/master/docs/apify_mcp_server_white_background.png" width="500">
6
- </picture>
3
+ <img alt="Apify MCP server" src="docs/apify-mcp-server-header.png" width="100%">
7
4
  </a>
8
- <br>
9
- <small><a href="https://mcp.apify.com">mcp.apify.com</a></small>
10
- </h1>
11
-
12
- <p align=center>
13
- <a href="https://www.npmjs.com/package/@apify/actors-mcp-server" rel="nofollow"><img src="https://img.shields.io/npm/v/@apify/actors-mcp-server.svg" alt="NPM latest version" data-canonical-src="https://img.shields.io/npm/v/@apify/actors-mcp-server.svg" style="max-width: 100%;"></a>
14
- <a href="https://www.npmjs.com/package/@apify/actors-mcp-server" rel="nofollow"><img src="https://img.shields.io/npm/dm/@apify/actors-mcp-server.svg" alt="Downloads" data-canonical-src="https://img.shields.io/npm/dm/@apify/actors-mcp-server.svg" style="max-width: 100%;"></a>
15
- <a href="https://github.com/apify/actors-mcp-server/actions/workflows/check.yaml"><img src="https://github.com/apify/actors-mcp-server/actions/workflows/check.yaml/badge.svg?branch=master" alt="Build Status" style="max-width: 100%;"></a>
16
- <a href="https://smithery.ai/server/@apify/mcp"><img src="https://smithery.ai/badge/@apify/mcp" alt="smithery badge"></a>
5
+ </p>
6
+ <p align="center">
7
+ <a href="https://mcp.apify.com"><img src="https://img.shields.io/badge/Any_MCP_client-Get_config-F86606?style=for-the-badge&logo=modelcontextprotocol&logoColor=white" alt="Get the config for any MCP client" height="32"></a>
8
+ </p>
9
+ <p align="center">
10
+ <a href="https://www.npmjs.com/package/@apify/actors-mcp-server"><img src="https://img.shields.io/npm/v/@apify/actors-mcp-server.svg" alt="npm version"></a>
11
+ <a href="https://www.npmjs.com/package/@apify/actors-mcp-server"><img src="https://img.shields.io/npm/dm/@apify/actors-mcp-server.svg" alt="npm downloads"></a>
12
+ <a href="https://github.com/apify/apify-mcp-server/actions/workflows/on_master.yaml"><img src="https://github.com/apify/apify-mcp-server/actions/workflows/on_master.yaml/badge.svg?branch=master" alt="CI status"></a>
13
+ <a href="./LICENSE.md"><img src="https://img.shields.io/github/license/apify/apify-mcp-server" alt="MIT license"></a>
14
+ </p>
15
+ <p align="center">
16
+ <a href="https://github.com/apify/apify-mcp-server/stargazers"><img src="https://img.shields.io/github/stars/apify/apify-mcp-server?style=social" alt="GitHub stars"></a>
17
+ <a href="https://discord.apify.com"><img src="https://img.shields.io/badge/Discord-Join_the_community-5865F2?logo=discord&logoColor=white" alt="Apify Discord"></a>
17
18
  </p>
18
19
 
20
+ # Apify MCP server
19
21
 
20
- The Apify Model Context Protocol (MCP) server at [**mcp.apify.com**](https://mcp.apify.com) enables your AI agents to extract data from social media, search engines, maps, e-commerce sites, and any other website using thousands of ready-made scrapers, crawlers, and automation tools from [Apify Store](https://apify.com/store). It supports OAuth, allowing you to connect from clients like Claude.ai or Visual Studio Code using just the URL.
21
-
22
- > **πŸš€ Use the hosted Apify MCP Server!**
23
- >
24
- > For the best experience, connect your AI assistant to our hosted server at **[`https://mcp.apify.com`](https://mcp.apify.com)**. The hosted server supports the latest features - including output schema inference for structured Actor results - that are not available when running locally via stdio.
25
-
26
- > ⚠️ **Legacy SSE transport removed.** The `https://mcp.apify.com/sse` endpoint has been removed in favor of Streamable HTTP. Migrate your client to **[`https://mcp.apify.com`](https://mcp.apify.com)** β€” drop the `/sse` suffix from your configuration.
27
-
28
- πŸ’° The server also supports [agentic payments](#-agentic-payments): buy a token from [AGI](#-agi-recommended) to run any Actor, or pay per-request via [direct x402](#-direct-x402) (Pay Per Event Actors only) or [Skyfire](#-skyfire).
29
-
30
- Apify MCP Server is compatible with `Claude Code, Claude.ai, Cursor, VS Code` and any client that adheres to the Model Context Protocol.
31
- Check out the [MCP clients section](#-mcp-clients) for more details or visit the [MCP configuration page](https://mcp.apify.com).
32
-
33
- ![Apify-MCP-server](https://raw.githubusercontent.com/apify/apify-mcp-server/refs/heads/master/docs/apify-mcp-server.png)
34
-
35
- ## Table of Contents
36
- - [🌐 Introducing Apify MCP Server](#-introducing-apify-mcp-server)
37
- - [πŸš€ Quickstart](#-quickstart)
38
- - [πŸ€– MCP clients](#-mcp-clients)
39
- - [πŸͺ„ Try Apify MCP instantly](#-try-apify-mcp-instantly)
40
- - [πŸ’° Agentic payments](#-agentic-payments)
41
- - [How agentic payments work](#how-agentic-payments-work)
42
- - [πŸͺ™ AGI (recommended)](#-agi-recommended)
43
- - [πŸ’Έ Direct x402](#-direct-x402)
44
- - [πŸ”₯ Skyfire](#-skyfire)
45
- - [πŸ› οΈ Tools, resources, and prompts](#%EF%B8%8F-tools-resources-and-prompts)
46
- - [πŸ“Š Telemetry](#-telemetry)
47
- - [πŸ’¬ Usage examples](#-usage-examples)
48
- - [πŸ› Troubleshooting](#-troubleshooting)
49
- - [βš™οΈ Development](#%EF%B8%8F-development)
50
- - [πŸ”’ Privacy policy](#-privacy-policy)
51
- - [🀝 Contributing](#-contributing)
52
- - [πŸ“š Learn more](#-learn-more)
53
-
54
- # 🌐 Introducing Apify MCP Server
55
-
56
- The Apify MCP Server allows an AI assistant to use any [Apify Actor](https://apify.com/store) as a tool to perform a specific task.
57
- For example, it can:
58
- - Use [Facebook Posts Scraper](https://apify.com/apify/facebook-posts-scraper) to extract data from Facebook posts from multiple pages/profiles.
59
- - Use [Google Maps Email Extractor](https://apify.com/lukaskrivka/google-maps-with-contact-details) to extract contact details from Google Maps.
60
- - Use [Google Search Results Scraper](https://apify.com/apify/google-search-scraper) to scrape Google Search Engine Results Pages (SERPs).
61
- - Use [Instagram Scraper](https://apify.com/apify/instagram-scraper) to scrape Instagram posts, profiles, places, photos, and comments.
62
- - Use [RAG Web Browser](https://apify.com/apify/rag-web-browser) to search the web, scrape the top N URLs, and return their content.
63
- - Use [Web Fetch](https://apify.com/apify/web-fetch) to fetch any URL and return its content as Markdown, plain text, HTML, or links β€” with JavaScript rendering and anti-bot protection.
64
-
65
- **Video tutorial: Integrate 8,000+ Apify Actors and Agents with Claude**
66
-
67
- [![Apify MCP Server Tutorial: Integrate 5,000+ Apify Actors and Agents with Claude](https://img.youtube.com/vi/BKu8H91uCTg/hqdefault.jpg)](https://www.youtube.com/watch?v=BKu8H91uCTg)
68
-
69
- # πŸš€ Quickstart
70
-
71
- You can use the Apify MCP Server in two ways:
72
-
73
- **HTTPS Endpoint (mcp.apify.com)**: Connect from your MCP client via OAuth or by including the `Authorization: Bearer <APIFY_TOKEN>` header in your requests. This is the recommended method for most use cases. Because it supports OAuth, you can connect from clients like [Claude.ai](https://claude.ai) or [Visual Studio Code](https://code.visualstudio.com/) using just the URL: `https://mcp.apify.com`.
74
- - `https://mcp.apify.com` streamable transport
75
-
76
- **Standard Input/Output (stdio)**: Ideal for local integrations and command-line tools like the Claude for Desktop client.
77
- - Set the MCP client server command to `npx @apify/actors-mcp-server` and the `APIFY_TOKEN` environment variable to your Apify API token.
78
- - See `npx @apify/actors-mcp-server --help` for more options.
79
-
80
- You can find detailed instructions for setting up the MCP server in the [Apify documentation](https://docs.apify.com/platform/integrations/mcp).
81
-
82
- # πŸ€– MCP clients
83
-
84
- Apify MCP Server is compatible with any MCP client that adheres to the [Model Context Protocol](https://modelcontextprotocol.org/), but the level of support for dynamic tool discovery and other features may vary between clients.
85
- <!--Therefore, the server uses [mcp-client-capabilities](https://github.com/apify/mcp-client-capabilities) to detect client capabilities and adjust its behavior accordingly.-->
22
+ Connect your agent to the largest marketplace of tools for AI.
86
23
 
87
- To interact with the Apify MCP Server, you can use clients such as [Claude Desktop](https://claude.ai/download), [Visual Studio Code](https://code.visualstudio.com/), or [Apify Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client).
24
+ **The official Apify Model Context Protocol (MCP) server gives AI agents web scraping, data extraction, and browser automation through thousands of ready-made Actors from [Apify Store](https://apify.com/store), at [`https://mcp.apify.com`](https://mcp.apify.com).**
88
25
 
89
- Visit [mcp.apify.com](https://mcp.apify.com) to configure the server for your preferred client.
26
+ Apify is the marketplace of ready-to-run tools for AI agents. One connection to the Apify MCP server gives your agent thousands of tools to choose from, for jobs like web fetch, SERP monitoring, lead generation and enrichment, and pulling data from e-commerce sites and social media. The server loads only what each task needs.
90
27
 
91
- ![Apify-MCP-configuration-clients](https://raw.githubusercontent.com/apify/apify-mcp-server/refs/heads/master/docs/mcp-clients.png)
28
+ Your agent searches Apify Store, checks an Actor's input and pricing, runs it, and reads the structured results, so you don't install a separate MCP server for every site. Connect to the hosted server with OAuth, or run it locally over stdio with the [`@apify/actors-mcp-server`](https://www.npmjs.com/package/@apify/actors-mcp-server) npm package.
92
29
 
93
- ### Tested clients
30
+ <img alt="Diagram: AI agents such as Claude, ChatGPT, Cursor, Grok Bot, Hermes Agent, and OpenCode connect to the Apify MCP server, which searches Apify Store, runs Actors like Web Search, Web Fetch, and Google Maps Scraper, and returns structured results" src="docs/apify-mcp-server-diagram.png">
94
31
 
95
- - [Claude Desktop](https://docs.apify.com/platform/integrations/claude-desktop)
96
- - Claude.ai (web)
97
- - [ChatGPT](https://docs.apify.com/platform/integrations/chatgpt)
98
- - VS Code (Genie)
99
- - Cursor
100
- - OpenCode
101
- - [Kiro](https://kiro.dev)
102
- - [Apify Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client) β€” designed for testing Apify MCP servers
32
+ <!-- TODO: add the new setup video here once it is published. The old 2025 Claude tutorial (BKu8H91uCTg) was removed as outdated. -->
103
33
 
34
+ ## Contents
104
35
 
105
- # πŸͺ„ Try Apify MCP instantly
36
+ - [Quickstart](#-quickstart)
37
+ - [Set up your client](#-set-up-your-client)
38
+ - [Remote (hosted) or local MCP server](#remote-hosted-or-local-mcp-server)
39
+ - [How an agent uses Apify Actors](#how-an-agent-uses-apify-actors)
40
+ - [Tools, resources, and prompts](#%EF%B8%8F-tools-resources-and-prompts)
41
+ - [Choose which tools load](#choose-which-tools-load)
42
+ - [UI mode configuration](#ui-mode-configuration)
43
+ - [Example prompts](#-example-prompts)
44
+ - [Pricing and limits](#-pricing-and-limits)
45
+ - [Telemetry](#-telemetry)
46
+ - [Troubleshooting and limitations](#-troubleshooting-and-limitations)
47
+ - [FAQ](#-faq)
48
+ - [Development](#-development)
49
+ - [Contributing](#-contributing)
50
+ - [Privacy and license](#-privacy-and-license)
51
+ - [Learn more](#-learn-more)
106
52
 
107
- Want to try Apify MCP without any setup?
53
+ ## πŸš€ Quickstart
108
54
 
109
- Check out [Apify Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client)
55
+ 1. Open the [MCP configurator](https://mcp.apify.com), pick your client, and choose the tools you want.
56
+ 2. Copy the generated configuration, deeplink, or command into your client.
57
+ 3. Sign in to Apify in the browser window that opens. If you don't have an account, you can create a free one there.
110
58
 
111
- This interactive, chat-like interface provides an easy way to explore the capabilities of Apify MCP without any local setup.
112
- Sign in with your Apify account and start experimenting with web scraping, data extraction, and automation tools!
59
+ The hosted endpoint is `https://mcp.apify.com`. If your client can't use OAuth, send your [Apify API token](https://docs.apify.com/integrations/api#api-token) in an `Authorization: Bearer <APIFY_TOKEN>` header instead. Treat the token like a password and keep it out of repositories.
113
60
 
114
- Or use the MCP bundle file (formerly known as Anthropic Desktop extension file, or DXT) for one-click installation: [Apify MCP Server MCPB file](https://github.com/apify/apify-mcp-server/releases/latest/download/apify-mcp-server.mcpb)
61
+ Using a coding agent such as Claude Code, Codex, Cursor, or GitHub Copilot? An [official Apify plugin](https://docs.apify.com/agents/plugins) installs this MCP server together with [Apify agent skills](https://docs.apify.com/agents/skills) in one step.
115
62
 
63
+ ## πŸ€– Set up your client
116
64
 
117
- # πŸ’° Agentic payments
65
+ The [configurator](https://mcp.apify.com) generates the exact setup for each supported client, including Claude Code, ChatGPT, Cursor, VS Code, GitHub Copilot CLI, Claude, Claude Desktop, Codex, OpenCode, Kiro, and more. The snippets below cover the most common cases.
118
66
 
119
- You can pay for Actor runs without an Apify API token using **AGI**, **direct x402**, or **Skyfire**.
67
+ ![Client setup at mcp.apify.com: tabs for Claude, Claude Code, Claude Desktop, Codex, Cursor, ChatGPT, and more, with the Claude Code install command](docs/mcp-configurator.png)
120
68
 
121
- - **AGI** ([agi.apify.com](https://agi.apify.com)) mints a prepaid Apify API token in exchange for an x402 or MPP payment. Use the token like a normal API token against `mcp.apify.com` and `api.apify.com` β€” works for any Actor, not just Pay Per Event ones. **Recommended** for new integrations; see [AGI (recommended)](#-agi-recommended) below.
122
- - **Direct x402** pays with USDC on [Base](https://base.org) per request and does not require a separate platform account. It is fully supported by [`mcpc`](https://github.com/apify/mcpc) (`brew install apify/tap/mcpc` or `npm install -g @apify/mcpc`). We use `mcpc` because it is one of the few MCP clients that supports the latest features and the x402 protocol natively.
123
- - **Skyfire** pays with PAY tokens and requires a Skyfire account with a funded wallet. It does not require a special MCP client; the entire payment flow is handled directly through the MCP tool call parameters.
69
+ <details>
70
+ <summary><b>Claude Code</b></summary>
124
71
 
125
- > ℹ️ **Scope:** Both direct x402 and Skyfire are limited to Pay Per Event Actors, don't support Standby Actors, and settle per run instead of minting a token.
72
+ ```bash
73
+ claude mcp add apify "https://mcp.apify.com" -t http
74
+ ```
126
75
 
127
- ## How agentic payments work
76
+ Claude Code opens the Apify sign-in page the first time it uses the server. To install the [Apify plugin](https://docs.apify.com/agents/plugins) with Apify agent skills instead, run `/plugin marketplace add apify/apify-claude-code-plugin`, then `/plugin install apify@apify` and `/reload-plugins`.
128
77
 
129
- Actor run costs vary, so both payment methods use a prepaid balance model. The payment flow happens in four steps:
78
+ </details>
130
79
 
131
- 1. **Discovery**: The agent discovers Actors with `search-actors` or `fetch-actor-details`. Those calls are free.
132
- 2. **Prepayment**: Before running a paid Actor tool, the agent funds a prepaid balance.
133
- - **Direct x402**: `mcpc` automatically signs a $1.00 USDC transaction.
134
- - **Skyfire**: The agent creates a PAY token (minimum $5.00) using Skyfire's `create-pay-token` tool.
135
- 3. **Execution**: The agent calls the Actor tool.
136
- - **Direct x402**: Handled automatically by `mcpc` using the prepaid balance.
137
- - **Skyfire**: The agent explicitly passes the PAY token in the `skyfire-pay-id` input property.
138
- 4. **Resolution**: The tool returns the Actor results. Unused funds stay available for later runs.
139
- - **Direct x402**: After 60 minutes of inactivity, the server refunds any unused balance to the wallet on [Base](https://base.org).
140
- - **Skyfire**: Skyfire returns unused funds when the token expires.
80
+ <details>
81
+ <summary><b>ChatGPT</b></summary>
141
82
 
142
- ## πŸͺ™ AGI (recommended)
83
+ 1. Open [ChatGPT Plugins](https://chatgpt.com/plugins), select **+**, then **Add custom MCP server**.
84
+ 2. Name it `Apify`, enter `https://mcp.apify.com` as the server URL, and choose **OAuth** authentication.
85
+ 3. Review the risk warning, select **I understand and want to continue**, then **Create as a plugin**.
86
+ 4. Sign in with Apify, review the tools, and install the plugin. No API token is needed.
87
+ 5. Start a new conversation, type `@`, and select **Apify**.
143
88
 
144
- [AGI](https://agi.apify.com) (Apify Agent General Interface) is the recommended way for autonomous agents to pay for Apify usage without an account. Pay once via x402 or MPP, receive a prepaid, spend-capped Apify API token, and use it directly against `mcp.apify.com` and `api.apify.com` (`Authorization: Bearer <token>`) β€” for any Actor.
89
+ In Business, Enterprise, and Edu workspaces, an admin or owner may need to create or publish the plugin. If the option is missing, ask your workspace admin. When the server's tools change, open the plugin and select **Refresh**.
145
90
 
146
- Full protocol, supported payment methods, and current terms (minimum amount, token lifetime, refund policy) are documented at **[agi.apify.com/AGENTS.md](https://agi.apify.com/AGENTS.md)** β€” treat it as the single source of truth.
91
+ The ChatGPT desktop app uses local MCP configuration shared with Codex instead: go to **Settings** > **MCP servers** > **Add server**, choose Streamable HTTP, and enter `https://mcp.apify.com`. See OpenAI's [custom MCP server guide](https://help.openai.com/en/articles/12584461-connecting-custom-mcp-servers-in-chatgpt).
147
92
 
148
- ## πŸ’Έ Direct x402
93
+ </details>
149
94
 
150
- The [x402 protocol](https://www.x402.org/) enables direct, machine-to-machine payments. Your MCP client can use it to pay for Actor runs with USDC on the [Base blockchain](https://base.org/), completely bypassing the need for an Apify API token.
95
+ <details>
96
+ <summary><b>Cursor</b></summary>
151
97
 
152
- ### Prerequisites
98
+ Use the one-click install link from the [configurator](https://mcp.apify.com), or let the [Apify CLI](https://docs.apify.com/cli) write the configuration, including your API token:
153
99
 
154
- - A wallet with USDC on [Base](https://base.org) mainnet.
100
+ ```bash
101
+ apify mcp install cursor
102
+ ```
155
103
 
156
- ### Setup
104
+ The same command works for `claude-code`, `vscode`, `codex`, `kiro`, and `antigravity`.
157
105
 
158
- Create or import a wallet:
106
+ </details>
159
107
 
160
- ```bash
161
- # Create a new wallet
162
- mcpc x402 init
108
+ <details>
109
+ <summary><b>VS Code and GitHub Copilot</b></summary>
163
110
 
164
- # Import an existing wallet
165
- mcpc x402 import <private-key>
111
+ Use the one-click install link from the [configurator](https://mcp.apify.com), run `apify mcp install vscode`, or add `https://mcp.apify.com` as an HTTP server in your MCP configuration:
166
112
 
167
- # Show the wallet address and a funding QR code, so you can fund it with USDC on Base (https://base.org)
168
- mcpc x402
113
+ ```json
114
+ {
115
+ "servers": {
116
+ "apify": {
117
+ "type": "http",
118
+ "url": "https://mcp.apify.com"
119
+ }
120
+ }
121
+ }
169
122
  ```
170
123
 
171
- Connect to the server with x402 enabled:
124
+ </details>
172
125
 
173
- ```bash
174
- mcpc connect "mcp.apify.com?payment=x402" @apify --x402
175
- ```
126
+ <details>
127
+ <summary><b>Claude</b></summary>
176
128
 
177
- You can now call a paid tool:
129
+ Apify is available as a Claude connector. Open **Settings** > **Connectors**, find **Apify** in the connector directory, and connect it. You can also select **Add custom connector**, name it `Apify`, and enter `https://mcp.apify.com` as the remote MCP server URL. Sign in with Apify when prompted. The same connector works on Claude.ai and in Claude Desktop. See the [Claude guide](https://docs.apify.com/integrations/claude-desktop).
178
130
 
179
- ```bash
180
- mcpc @apify tools-call call-actor actor:="apify/rag-web-browser" input:='{"query": "latest AI news"}'
181
- ```
131
+ </details>
182
132
 
183
- ## πŸ”₯ Skyfire
133
+ <details>
134
+ <summary><b>Any other MCP client (JSON config)</b></summary>
184
135
 
185
- [Skyfire](https://www.skyfire.xyz/) provides managed payment infrastructure for AI agents. Instead of authenticating with an Apify API token, your agent passes a Skyfire payment token to cover the cost of each tool call using PAY tokens.
136
+ Most clients that support remote servers and OAuth accept a configuration like this:
186
137
 
187
- ### Prerequisites
138
+ ```json
139
+ {
140
+ "mcpServers": {
141
+ "apify": {
142
+ "url": "https://mcp.apify.com"
143
+ }
144
+ }
145
+ }
146
+ ```
188
147
 
189
- - A [Skyfire account](https://www.skyfire.xyz/) with a funded wallet.
190
- - An MCP client that supports multiple servers, such as Claude Desktop, OpenCode, or VS Code.
148
+ </details>
191
149
 
192
- ### Setup
150
+ <details>
151
+ <summary><b>Local stdio (npx)</b></summary>
193
152
 
194
- Configure the Skyfire MCP server and the Apify MCP Server in your client. Add `payment=skyfire` to the Apify server URL:
153
+ Requires Node.js 22 or later.
195
154
 
196
155
  ```json
197
156
  {
198
157
  "mcpServers": {
199
- "skyfire": {
200
- "url": "https://api.skyfire.xyz/mcp/sse",
201
- "headers": {
202
- "skyfire-api-key": "<YOUR_SKYFIRE_API_KEY>"
158
+ "actors-mcp-server": {
159
+ "command": "npx",
160
+ "args": ["-y", "@apify/actors-mcp-server"],
161
+ "env": {
162
+ "APIFY_TOKEN": "YOUR_APIFY_TOKEN"
203
163
  }
204
- },
205
- "apify": {
206
- "url": "https://mcp.apify.com?payment=skyfire"
207
164
  }
208
165
  }
209
166
  }
210
167
  ```
211
168
 
212
- See the [Skyfire integration documentation](https://docs.apify.com/platform/integrations/skyfire) for setup details. The [Agentic Payments with Skyfire](https://blog.apify.com/agentic-payments-skyfire/) post provides additional background.
169
+ If you've run `apify login`, the server can also read the token saved by the Apify CLI. Run `npx @apify/actors-mcp-server --help` for all options.
213
170
 
214
- # πŸ› οΈ Tools, resources, and prompts
171
+ </details>
215
172
 
216
- The MCP server provides a set of tools for interacting with Apify Actors.
217
- Since Apify Store is large and growing rapidly, the MCP server provides a way to dynamically discover and use new Actors.
173
+ The server is also listed in the [Docker MCP catalog](https://hub.docker.com/mcp/server/apify-mcp-server/overview), and each [release](https://github.com/apify/apify-mcp-server/releases/latest) ships an MCP bundle file ([`apify-mcp-server.mcpb`](https://github.com/apify/apify-mcp-server/releases/latest/download/apify-mcp-server.mcpb)) for one-click installation in clients that support it.
218
174
 
219
- ### Actors
175
+ ## Remote (hosted) or local MCP server
220
176
 
221
- Any [Apify Actor](https://apify.com/store) can be used as a tool.
222
- By default, the server is pre-configured with two Actors, `apify/rag-web-browser` and `apify/web-fetch`, and several helper tools.
223
- The MCP server loads an Actor's input schema and creates a corresponding MCP tool.
224
- This allows the AI agent to know exactly what arguments to pass to the Actor and what to expect in return.
177
+ The hosted remote MCP server with OAuth is the recommended option. Use the local server when you want to run the MCP process on your own machine; Actors still run and store their results on the Apify platform in both modes. If your client supports only stdio, you can also bridge it to the hosted server with [`mcp-remote`](https://www.npmjs.com/package/mcp-remote): `npx mcp-remote https://mcp.apify.com`.
225
178
 
179
+ | | Hosted (`https://mcp.apify.com`) | Local (`npx @apify/actors-mcp-server`) |
180
+ | :--- | :--- | :--- |
181
+ | Transport | Streamable HTTP | stdio |
182
+ | Authentication | OAuth or Bearer token | `APIFY_TOKEN` environment variable or Apify CLI login |
183
+ | Output schemas inferred for Actor results | Yes | No |
184
+ | Tool selection | `tools` URL parameter | `--tools` flag or `TOOLS` environment variable |
185
+ | Updates | Always the latest server | The npm version you install |
226
186
 
227
- For example, for the `apify/rag-web-browser` Actor, the input parameters are:
187
+ ## How an agent uses Apify Actors
228
188
 
229
- ```json
230
- {
231
- "query": "restaurants in San Francisco",
232
- "maxResults": 3
233
- }
234
- ```
235
- You don't need to manually specify which Actor to call or its input parameters; the LLM handles this automatically.
236
- When a tool is called, the arguments are automatically passed to the Actor by the LLM.
237
- You can refer to the specific Actor's documentation for a list of available arguments.
189
+ [Actors](https://docs.apify.com/actors) are serverless programs on the Apify platform. Each one does a specific job, like scraping Google Maps, crawling a website for RAG, or collecting social media posts. The MCP server turns Actors into tools an agent can find and call without you configuring each one in advance.
238
190
 
239
- ### Helper tools
191
+ A typical task follows four steps:
192
+
193
+ 1. `search-actors` finds candidate Actors in Apify Store for the task.
194
+ 2. `fetch-actor-details` returns the Actor's input schema, README, and pricing, plus its output schema on request.
195
+ 3. `call-actor` starts the run and waits for it to finish, 30 seconds by default and up to 45. It returns the **run status and storage IDs**; the scraped items stay in the run's dataset.
196
+ 4. `get-dataset-items` reads the results from the run's dataset, with `limit` and `offset` for pagination.
240
197
 
241
- One of the most powerful features of using MCP with Apify is dynamic tool discovery.
242
- It allows an AI agent to find new tools (Actors) as needed and incorporate them.
243
- Here are some special MCP operations and how the Apify MCP Server supports them:
198
+ The server adds `get-dataset-items`, `get-key-value-store-record`, `get-actor-run`, and `abort-actor-run` whenever `call-actor` or an Actor tool is loaded, so the agent can always read results and check on long runs that outlast the wait.
244
199
 
245
- - **Apify Actors**: Search for Actors, list the Actors in your account, view their details, use them as tools for the AI, and delete your own Actors.
246
- - **Apify documentation**: Search the Apify documentation and fetch specific documents to provide context to the AI.
247
- - **Actor runs**: Get lists of your Actor runs, inspect their details, and retrieve logs.
248
- - **Apify storage**: Access data from your datasets and key-value stores.
249
- - **Actor tasks**: Create, inspect, and update your saved Actor tasks, and publish or unpublish their public landing pages.
250
- - **Schedules**: Create, inspect, update, and delete schedules that run your Actors and tasks automatically.
251
- - **Builds**: Build an Actor version, list builds, check the status of a build, and retrieve its build log.
252
- - **Actor versions**: Read an Actor version's files with a hash for each file and a revision for the whole set, create an Actor from files, change a version's files with checks that catch changes made since your last read, add a version from files or as a copy of another version, and delete a version.
253
- - **Apify API**: Search the Apify API reference, inspect an operation, and send requests to the API to read or change data.
200
+ You can also expose a specific Actor as its own tool, for example `apify/web-search` or `apify/instagram-scraper`. The server builds the tool's parameters from the Actor's input schema, so the agent knows exactly what to pass.
254
201
 
255
- ### Overview of available tools
202
+ **Actors that run their own MCP server.** Some Actors are MCP servers themselves. `fetch-actor-mcp-tool-list` lists their tools, and `call-actor-mcp-tool` calls one. When such an Actor is loaded as a tool source, its tools are exposed under names in the form `username--actor-name--tool-name`. Apify Store also lists MCP-related Actors from independent creators; those are separate products with their own READMEs and pricing.
256
203
 
257
- Here is an overview list of all the tools provided by the Apify MCP Server.
204
+ ## πŸ› οΈ Tools, resources, and prompts
205
+
206
+ Any [Actor](https://apify.com/store) can be a tool, and agents discover new ones as they work. By default, the server loads the `actors` and `docs` categories, two Actor tools ([RAG Web Browser](https://apify.com/apify/rag-web-browser) and [Web Fetch](https://apify.com/apify/web-fetch)), and `report-problem`. Everything else is opt-in by category or by tool name.
207
+
208
+ ### Helper tools
209
+
210
+ Besides Actor tools, the server provides helper tools for the Apify platform:
211
+
212
+ - **Actors:** search Apify Store, list the Actors in your account, view their details, call tools on Actors that run MCP servers, send requests to Server Actors, and delete your own Actors.
213
+ - **Documentation:** search the Apify and Crawlee docs and fetch pages as context.
214
+ - **Runs and storage:** list runs, inspect them, read their logs, and read datasets and key-value stores.
215
+ - **Tasks and schedules:** manage saved Actor tasks and their public landing pages, and schedules that run Actors and tasks automatically.
216
+ - **Builds and versions:** build Actors, read build logs, and create, read, change, copy, and delete versions from files.
217
+ - **Apify API:** search the API reference, inspect an operation, and send requests to read or change data.
218
+
219
+ ### Available tools
258
220
 
259
221
  Legend for the **Enabled by default** column:
260
- - βœ… β€” in the default tool set.
261
- - ⚑ β€” auto-injected when `call-actor`, an Actor tool, or `get-actor-run` is present (which is true in the default configuration).
262
- - βœ…ΒΉ β€” served by default, but only when telemetry is enabled and the client is not withheld: Anthropic surfaces (Claude.ai / Claude Desktop, including its local agent mode / Claude Code). To disable, pass an explicit `tools=` list that omits it. Explicitly selecting it (`tools=report-problem` or `tools=dev`) serves it regardless of client β€” telemetry still must be enabled.
222
+
223
+ - βœ… In the default tool set.
224
+ - ⚑ Added automatically when `call-actor`, an Actor tool, or `get-actor-run` is loaded, which is true in the default configuration.
225
+ - βœ…ΒΉ Served by default only when telemetry is on and the client name doesn't contain `claude`, `anthropic`, or `local-agent-mode`. Select it explicitly with `tools=report-problem` or `tools=dev` to serve it to any client; telemetry still has to be on.
263
226
 
264
227
  | Tool name | Category | Description | Enabled by default |
265
228
  | :--- | :--- | :--- | :---: |
266
229
  | `search-actors` | actors | Search for Actors in Apify Store. | βœ… |
267
- | `fetch-actor-details` | actors | Retrieve detailed information about a specific Actor, including its input schema, README (summary when available, full otherwise), pricing, Actor output schema, and a Server Actor's HTTP operations. | βœ… |
268
- | `call-actor` | actors | Call an Actor and get its run results. Use fetch-actor-details first to get the Actor's input schema. | βœ… |
269
- | `send-server-actor-request` | none (select by name: `tools=send-server-actor-request`) | Send one HTTP request to a Server Actor's API, the server interface its API schema documents, and return the response. | |
270
- | `fetch-actor-mcp-tool-list` | actors | List an Actor's MCP tools with their schemas, annotations, and metadata. | βœ… |
230
+ | `fetch-actor-details` | actors | Get an Actor's input schema, README (summary when available, full otherwise), pricing, and a Server Actor's HTTP operations. The output schema is opt-in. | βœ… |
231
+ | `call-actor` | actors | Run an Actor and return its run status and storage IDs. Use `fetch-actor-details` first to get the input schema. | βœ… |
232
+ | `fetch-actor-mcp-tool-list` | actors | List the tools of an Actor that runs an MCP server, with their schemas, annotations, and metadata. | βœ… |
271
233
  | `call-actor-mcp-tool` | actors | Call one tool on an Actor's MCP server and return its result. | βœ… |
272
- | `get-actor-run` | runs | Get detailed information about a specific Actor run. | ⚑ |
273
- | `get-dataset-items` | storage | Retrieve items from a dataset with support for filtering and pagination. | ⚑ |
274
- | `get-key-value-store-record`| storage | Get the value associated with a specific key in a key-value store. | ⚑ |
234
+ | `get-actor-run` | runs | Get details about an Actor run. | ⚑ |
235
+ | `get-dataset-items` | storage | Read items from a dataset, with filtering and pagination. | ⚑ |
236
+ | `get-key-value-store-record` | storage | Get the value stored under a key in a key-value store. | ⚑ |
275
237
  | `abort-actor-run` | runs | Abort a running Actor run, optionally gracefully. | ⚑ |
276
- | `delete-actor` | none (select by name: `tools=delete-actor`) | Delete an Actor from your account permanently. Public Actors must be unpublished first. | |
277
- | `search-apify-docs` | docs | Search the Apify documentation for relevant pages. | βœ… |
278
- | `fetch-apify-docs` | docs | Fetch the full content of an Apify documentation page by its URL. | βœ… |
279
- | [`apify--rag-web-browser`](https://apify.com/apify/rag-web-browser) | Actor (see [tool configuration](#tools-configuration)) | An Actor tool to browse the web. | βœ… |
280
- | [`apify--web-fetch`](https://apify.com/apify/web-fetch) | Actor (see [tool configuration](#tools-configuration)) | An Actor tool to fetch a URL and return its content. | βœ… |
238
+ | `search-apify-docs` | docs | Search the Apify and Crawlee documentation for relevant pages. | βœ… |
239
+ | `fetch-apify-docs` | docs | Fetch the full content of a documentation page by its URL. | βœ… |
240
+ | [`apify--rag-web-browser`](https://apify.com/apify/rag-web-browser) | Actor (see [Choose which tools load](#choose-which-tools-load)) | Search the web and return the content of the top results. | βœ… |
241
+ | [`apify--web-fetch`](https://apify.com/apify/web-fetch) | Actor (see [Choose which tools load](#choose-which-tools-load)) | Fetch a URL and return its content as Markdown, text, HTML, or other formats. | βœ… |
281
242
  | `report-problem` | dev | Report a problem with an Apify tool or Actor to the Apify team. | βœ…ΒΉ |
282
- | `get-actor-list` | none (select by name: `tools=get-actor-list`) | List the Actors you own and those shared with you, including private ones. | |
283
- | `get-actor-run-list` | runs | Get a list of Actor runs, filterable by Actor and status. | |
284
- | `get-actor-run-log` | runs | Retrieve the logs for a specific Actor run. | |
285
- | `get-dataset` | storage | Get metadata about a specific dataset. | |
286
- | `get-dataset-schema` | storage | Generate a JSON schema from dataset items. | |
287
- | `get-key-value-store` | storage | Get metadata about a specific key-value store. | |
288
- | `get-key-value-store-keys`| storage | List the keys within a specific key-value store. | |
289
- | `get-dataset-list` | storage | List all available datasets for the user. | |
290
- | `get-key-value-store-list`| storage | List all available key-value stores for the user. | |
291
- | `create-actor-task` | tasks | Create a saved Actor task (a named, reusable Actor configuration). | |
292
- | `get-actor-task` | tasks | Get a saved Actor task, its publication state and public display configuration. | |
293
- | `update-actor-task` | tasks | Update a task's input, run options, or public display configuration. | |
294
- | `publish-actor-task` | tasks | Publish a task on its public landing page. | |
295
- | `unpublish-actor-task` | tasks | Unpublish a task from its public landing page. | |
296
- | `create-schedule` | schedules | Create a schedule that runs Actors or tasks on a cron cadence. | |
297
- | `get-schedule` | schedules | Get a schedule, its cron expression, state, and the actions it runs. | |
298
- | `update-schedule` | schedules | Update a schedule: cron expression, time zone, enabled state, or actions. | |
299
- | `delete-schedule` | schedules | Delete a schedule. | |
300
- | `get-actor-build` | builds | Get an Actor build's status. | |
301
- | `get-actor-build-log` | builds | Retrieve the logs for a specific Actor build. | |
302
- | `get-actor-build-list` | builds | List the account's builds, or one Actor's, in every status, newest first. | |
303
- | `build-actor` | builds | Build an Actor version and wait a bounded time for the build to finish. | |
304
- | `get-actor-version` | versions | Get an Actor version's file listing with hashes and the content of the files you ask for. | |
305
- | `create-actor` | versions | Create a private Actor in your account from files, optionally starting a build. | |
306
- | `update-actor-version` | versions | Write, edit, or delete files of an Actor version in one all-or-nothing write. | |
307
- | `create-actor-version` | versions | Add a version to an Actor, from files or as a copy of another version, optionally starting a build. | |
308
- | `delete-actor-version` | versions | Delete an Actor version; its builds and their tags stay. | |
309
- | `apify-api-search` | api | Search the Apify API reference for operations by keywords. Returns each one's method, path, and docs page. | |
310
- | `apify-api-details` | api | Get the parameters and request body schema of the Apify API operations on a path. | |
311
- | `apify-api-read` | api | Send a GET request to an Apify API path, such as `actor-runs` or `/v2/actor-runs`, like `apify api` in the Apify CLI. Read-only: it refuses the `method` query parameter and a GET to the synchronous run endpoints, which starts a paid run. | |
312
- | `apify-api-write` | api | Send a POST, PUT, PATCH, or DELETE request to any Apify API path, with a JSON body, like `apify api` in the Apify CLI. It refuses the `method` query parameter. | |
313
-
314
- > **Note:**
315
- >
316
- > When `call-actor`, an Actor tool, or `get-actor-run` is present, the server auto-injects `get-actor-run`, `get-dataset-items`, `get-key-value-store-record`, and `abort-actor-run`.
317
- >
318
- > When you call an Actor β€” through `call-actor` or directly via an Actor tool (e.g., `apify--rag-web-browser`) β€” the response contains run metadata, storage IDs, and a `summary` + `nextStep`, but no dataset items. To fetch items, follow `nextStep` and call `get-dataset-items` (auto-injected), passing the `datasetId` returned from the call.
243
+ | `get-actor-list` | none (select by name: `tools=get-actor-list`) | List the Actors you own and those shared with you, including private ones. | |
244
+ | `send-server-actor-request` | none (select by name: `tools=send-server-actor-request`) | Send one HTTP request to a Server Actor's API, as documented by its API schema, and return the response. | |
245
+ | `delete-actor` | none (select by name: `tools=delete-actor`) | Delete an Actor from your account permanently. Public Actors must be unpublished first. | |
246
+ | `get-actor-run-list` | runs | List Actor runs, filtered by Actor and status. | |
247
+ | `get-actor-run-log` | runs | Read the log of an Actor run. | |
248
+ | `get-dataset` | storage | Get metadata about a dataset. | |
249
+ | `get-dataset-schema` | storage | Generate a JSON schema from dataset items. | |
250
+ | `get-dataset-list` | storage | List the datasets in your account. | |
251
+ | `get-key-value-store` | storage | Get metadata about a key-value store. | |
252
+ | `get-key-value-store-keys` | storage | List the keys in a key-value store. | |
253
+ | `get-key-value-store-list` | storage | List the key-value stores in your account. | |
254
+ | `create-actor-task` | tasks | Create a saved Actor task (a named, reusable Actor configuration). | |
255
+ | `get-actor-task` | tasks | Get a saved Actor task, its publication state, and its public display configuration. | |
256
+ | `update-actor-task` | tasks | Update a task's input, run options, or public display configuration. | |
257
+ | `publish-actor-task` | tasks | Publish a task on its public landing page. | |
258
+ | `unpublish-actor-task` | tasks | Unpublish a task from its public landing page. | |
259
+ | `create-schedule` | schedules | Create a schedule that runs Actors or tasks on a cron expression. | |
260
+ | `get-schedule` | schedules | Get a schedule, its cron expression, state, and the actions it runs. | |
261
+ | `update-schedule` | schedules | Update a schedule's cron expression, time zone, enabled state, or actions. | |
262
+ | `delete-schedule` | schedules | Delete a schedule. | |
263
+ | `build-actor` | builds | Build an Actor version and wait a bounded time for the build to finish. | |
264
+ | `get-actor-build` | builds | Get the status of an Actor build. | |
265
+ | `get-actor-build-list` | builds | List the account's builds, or one Actor's, in every status, newest first. | |
266
+ | `get-actor-build-log` | builds | Read the log of an Actor build. | |
267
+ | `get-actor-version` | versions | Get an Actor version's file listing with hashes, plus the content of the files you ask for. | |
268
+ | `create-actor` | versions | Create a private Actor in your account from files, optionally starting a build. | |
269
+ | `update-actor-version` | versions | Write, edit, or delete files of an Actor version in one all-or-nothing write. | |
270
+ | `create-actor-version` | versions | Add a version to an Actor, from files or as a copy of another version, optionally starting a build. | |
271
+ | `delete-actor-version` | versions | Delete an Actor version. Its builds and their tags stay. | |
272
+ | `apify-api-search` | api | Search the Apify API reference by keywords. Returns each operation's method, path, and docs page. | |
273
+ | `apify-api-details` | api | Get the parameters and request body schema of the Apify API operations on a path. | |
274
+ | `apify-api-read` | api | Send a GET request to an Apify API path, like `apify api` in the Apify CLI. It refuses GETs to the synchronous run endpoints, which start a paid run. | |
275
+ | `apify-api-write` | api | Send a POST, PUT, PATCH, or DELETE request with a JSON body to any Apify API path, like `apify api` in the Apify CLI. | |
276
+
277
+ The `tasks` category manages saved [Actor tasks](https://docs.apify.com/actors/running/tasks). It is unrelated to the MCP Tasks protocol. The [tool reference](https://docs.apify.com/mcp#available-tools) has full descriptions of each tool.
319
278
 
320
279
  ### Tool annotations
321
280
 
322
- All tools include metadata annotations to help MCP clients and LLMs understand tool behavior:
281
+ Every tool carries a `title`, a `readOnlyHint`, and an `openWorldHint`. `readOnlyHint` is `true` for tools that only read data. Actor tools get it only for Apify-maintained Actors with limited permissions and no inputs that accept secrets, writable storage, an MCP connector, or code; other Actor tools are marked destructive. `openWorldHint` is `true` for tools that reach outside the Apify platform, such as `call-actor`, and `false` for platform-only tools.
323
282
 
324
- - **`title`**: Short display name for the tool (e.g., "Search Actors", "Call Actor", "apify/rag-web-browser")
325
- - **`readOnlyHint`**: `true` for tools that only read data without modifying state (e.g., `get-dataset`, `fetch-actor-details`). Actor tools get it only for Apify-maintained Actors with limited permissions and no accepted secret, writable storage, MCP connector, or code input (e.g., `apify--web-fetch`). Direct tools can restrict the original Actor inputs: `apify--website-content-crawler` excludes and rejects `pageFunction` and `initialCookies`, so it is read-only. Other Actor tools are marked destructive.
326
- - **`openWorldHint`**: `true` for tools that access external resources outside the Apify platform (e.g., `call-actor` executes external Actors). Tools that interact only with the Apify platform (like `search-actors` or `fetch-apify-docs`) do not have this hint.
283
+ ### Prompts and resources
327
284
 
328
- The direct `apify--website-content-crawler` tool defaults `respectRobotsTxtFile` to `true`; an explicit `false` is preserved. These restrictions and defaults apply only to the direct tool. `call-actor`, `call-actor-widget`, and `fetch-actor-details` retain the original Actor input contract.
285
+ No prompts are registered yet, so `prompts/list` returns an empty list. `resources/read` accepts any Apify API GET URL (`https://api.apify.com/v2/...`) and returns the response body using the session's Apify token, inlined up to 256 KB. Your data isn't enumerated in `resources/list`; `resources/templates/list` lists the common shapes with their paging parameters.
329
286
 
330
- ### Tools configuration
287
+ ## Choose which tools load
331
288
 
332
- The `tools` configuration parameter is used to specify loaded tools – either categories or specific tools directly, and Apify Actors. For example, `tools=storage,runs` loads two categories; `tools=call-actor` loads just one tool.
289
+ The `tools` parameter takes categories, tool names, and Actor names, separated by commas. When you set it, the defaults are dropped and only what you list is loaded, plus the ⚑ run and storage tools whenever the list includes `call-actor` or an Actor. The easiest way to build a selection is the [configurator](https://mcp.apify.com).
333
290
 
334
- When no query parameters are provided, the MCP server loads the following `tools` by default:
291
+ Hosted server:
335
292
 
336
- - `actors`
337
- - `docs`
338
- - `apify/rag-web-browser`
339
- - `apify/web-fetch`
340
-
341
- If the tools parameter is specified, only the listed tools or categories will be enabled – no default tools will be included.
342
-
343
- `report-problem` is served by default (subject to the gating in the footnote above) but lives in the `dev` category, so an explicit `tools=dev` selects it too. To disable it, pass an explicit `tools=` list that omits it (e.g. `tools=actors,docs`).
344
-
345
- > **Easy configuration:**
346
- >
347
- > Use the [UI configurator](https://mcp.apify.com/) to configure your server, then copy the configuration to your client.
348
-
349
- **Configuring the hosted server:**
350
-
351
- The hosted server can be configured using query parameters in the URL. For example, to load the default tools, use:
352
-
353
- ```
354
- https://mcp.apify.com?tools=actors,docs,apify/rag-web-browser,apify/web-fetch
355
- ```
356
-
357
-
358
- For minimal configuration, if you want to use only a single Actor tool - without any discovery or generic calling tools, the server can be configured as follows:
359
-
360
- ```
361
- https://mcp.apify.com?tools=apify/my-actor
293
+ ```text
294
+ https://mcp.apify.com?tools=actors,docs,apify/web-search,apify/web-fetch
362
295
  ```
363
296
 
364
- This setup exposes only the specified Actor (`apify/my-actor`) as a tool. No other tools will be available.
365
-
366
- **Configuring the CLI:**
367
-
368
- The CLI can be configured using command-line flags. For example, to load the same tools as in the hosted server configuration, use:
297
+ Local server:
369
298
 
370
299
  ```bash
371
- npx @apify/actors-mcp-server --tools actors,docs,apify/rag-web-browser,apify/web-fetch
300
+ npx @apify/actors-mcp-server --tools actors,docs,apify/web-search,apify/web-fetch
372
301
  ```
373
302
 
374
- The minimal configuration is similar to the hosted server configuration:
303
+ To give an agent a single Actor, list only that Actor. The agent gets its tool plus the four ⚑ tools it needs to read the results:
375
304
 
376
- ```bash
377
- npx @apify/actors-mcp-server --tools apify/my-actor
305
+ ```text
306
+ https://mcp.apify.com?tools=apify/instagram-scraper
378
307
  ```
379
308
 
380
- As above, this exposes only the specified Actor (`apify/my-actor`) as a tool. No other tools will be available.
309
+ > **Pin your tools in production.** The default tool set can change between versions. Set `tools` explicitly if you need a stable interface.
381
310
 
382
- > **⚠️ Important recommendation**
383
- >
384
- > **The default tools configuration may change in future versions.** When no `tools` parameter is specified, the server currently loads default tools, but this behavior is subject to change.
385
- >
386
- > **For production use and stable interfaces, always explicitly specify the `tools` parameter** to ensure your configuration remains consistent across updates.
311
+ <details>
312
+ <summary><b>Backward compatibility with older configurations</b></summary>
387
313
 
388
- ### UI mode configuration
314
+ - The `actors` URL parameter and `--actors` flag still work. They're merged into `tools`, so `?actors=apify/web-fetch` equals `?tools=apify/web-fetch`.
315
+ - `enableAddingActors`, `enable-adding-actors`, and `enableActorAutoLoading` were removed and are ignored. Dynamic Actor calls come from `call-actor`, which the default `actors` category includes.
316
+ - The selectors `add-actor`, `experimental`, and `preview` are retired and load nothing. Use `call-actor` or the `actors` category.
317
+ - `get-actor-log` was renamed to `get-actor-run-log`, and the `source` category to `versions`. The old names load nothing.
318
+ - `call-actor` no longer calls tools on MCP server Actors: the `actorName:toolName` form is rejected. Use `call-actor-mcp-tool` with `actor`, `tool`, and `arguments`. A selection that names `call-actor` alone needs `call-actor-mcp-tool` added.
319
+ - `fetch-actor-details` no longer lists an MCP server Actor's tools, and `output.mcpTools` is ignored. Use `fetch-actor-mcp-tool-list`, which returns the definitions in `structuredContent.tools`. A selection that names `fetch-actor-details` alone needs `fetch-actor-mcp-tool-list` added.
389
320
 
390
- The `ui` parameter enables [MCP Apps](https://mcp.apify.com/) widget rendering in tool responses. When enabled, tools like `search-actors` return interactive MCP App responses.
321
+ </details>
391
322
 
392
- **Configuring the hosted server:**
323
+ ## UI mode configuration
393
324
 
394
- Enable UI mode using the `ui` query parameter:
325
+ The `ui` parameter controls [MCP Apps](https://github.com/modelcontextprotocol/ext-apps) widget tools. With UI mode on, the server adds `search-actors-widget` and `fetch-actor-details-widget` next to their base tools, which keep returning standard responses. By default (`auto`), UI mode turns on when the client supports MCP Apps.
395
326
 
396
- ```
397
- https://mcp.apify.com?ui=true
398
- ```
327
+ | Value | Behavior |
328
+ | :--- | :--- |
329
+ | `auto` (default) | Widget tools added when the client supports MCP Apps |
330
+ | `true`, `on`, or `apps` | Widget tools always added |
331
+ | `false`, `off`, or `default` | No widget tools |
399
332
 
400
- You can combine it with other parameters:
333
+ Hosted server:
401
334
 
402
- ```
335
+ ```text
403
336
  https://mcp.apify.com?tools=actors,docs&ui=true
404
337
  ```
405
338
 
406
- **Configuring the CLI:**
407
-
408
- The CLI can be configured using command-line flags. For example, to enable UI mode:
339
+ Local server, with a CLI flag or the `UI_MODE` environment variable:
409
340
 
410
341
  ```bash
411
342
  npx @apify/actors-mcp-server --ui true
343
+ UI_MODE=true npx @apify/actors-mcp-server
412
344
  ```
413
345
 
414
- You can also set it via the `UI_MODE` environment variable:
415
-
416
- ```bash
417
- export UI_MODE=true
418
- npx @apify/actors-mcp-server
419
- ```
420
-
421
- ### Backward compatibility
422
-
423
- The v2 configuration preserves backward compatibility with v1 usage. Notes:
424
-
425
- - `actors` param (URL) and `--actors` flag (CLI) are still supported.
426
- - Internally they are merged into `tools` selectors.
427
- - Examples: `?actors=apify/rag-web-browser` ≑ `?tools=apify/rag-web-browser`; `--actors apify/rag-web-browser` ≑ `--tools apify/rag-web-browser`.
428
- - `enableAddingActors` (URL), `enable-adding-actors` (CLI), and the legacy `enableActorAutoLoading` alias have been removed. To call Actors dynamically, use `tools=call-actor` (included by default via the `actors` category). Any lingering raw value is ignored.
429
- - Defaults remain compatible: when no `tools` are specified, the server loads `actors`, `docs`, `apify/rag-web-browser`, and `apify/web-fetch`.
430
- - If any `tools` are specified, the defaults are not added (same as v1 intent for explicit selection).
431
- - `call-actor` is now included by default via the `actors` category (additive change). To exclude it, specify an explicit `tools` list without `actors`.
432
- - `tools=add-actor`, `tools=experimental`, and `tools=preview` are retired: they are ignored and load no tools. Use `tools=call-actor` (or the default `actors` category) instead.
433
- - `tools=get-actor-log` is retired: the tool was renamed to `get-actor-run-log`. The old selector is ignored and loads no tools. Use `tools=get-actor-run-log` (or the `runs` category) instead.
434
- - `tools=source` is retired: the category was renamed to `versions`. The old selector is ignored and loads no tools. Use `tools=versions` instead.
435
- - `call-actor` no longer calls an MCP server Actor's tools: the `"actorName:toolName"` form of `actor` is rejected, and the result with `runId: 'mcp-passthrough'` is gone. Call `call-actor-mcp-tool` with `actor`, `tool`, and `arguments`; it returns the remote tool's result. It is in the `actors` category, so a selection naming `call-actor` alone needs `call-actor-mcp-tool` added.
436
- - `fetch-actor-details` no longer lists an MCP server Actor's tools: `output.mcpTools` and the `mcpTools` field of `structuredContent` are removed, and details never connects to the Actor. Call `fetch-actor-mcp-tool-list` with `actor`; it returns the tool definitions in `structuredContent.tools`. It is in the `actors` category, so a selection naming `fetch-actor-details` alone needs `fetch-actor-mcp-tool-list` added. An `output.mcpTools` sent by an older client is ignored. If it was the only output option, details returns its default sections.
437
-
438
- Existing URLs and commands using `?actors=...` or `--actors` continue to work unchanged.
346
+ ## πŸ’¬ Example prompts
439
347
 
440
- ### Prompts
348
+ Ask in plain language. The agent finds a suitable Actor, checks its input and pricing, runs it, and reads the results. These prompts cover the most common jobs:
441
349
 
442
- The server advertises the `prompts` capability, but no prompts are currently registered β€” `prompts/list` returns an empty list.
350
+ | Use case | Example prompt | Example Actor |
351
+ | :--- | :--- | :--- |
352
+ | Web research | "Find what people on X said about autonomous AI agents this week and summarize the key developments." | [Tweet Scraper V2](https://apify.com/apidojo/tweet-scraper) |
353
+ | Search and read the web | "Compare the current pricing plans of Notion, Coda, and Airtable and tell me which is cheapest for a 10-person team." | [Web Search](https://apify.com/apify/web-search), [Web Fetch](https://apify.com/apify/web-fetch) |
354
+ | Search results (SERP) | "Get the top 20 Google results for 'best CRM for startups' in the US and show who ranks where." | [Google Search Results Scraper](https://apify.com/apify/google-search-scraper) |
355
+ | Lead generation | "Find dentists in Austin, Texas on Google Maps with their phone numbers, websites, and ratings." | [Google Maps Scraper](https://apify.com/compass/crawler-google-places) |
356
+ | LinkedIn profiles | "Get the current job title, company, and work history for these 20 LinkedIn profiles." | [LinkedIn Profile Scraper](https://apify.com/harvestapi/linkedin-profile-scraper) |
357
+ | LinkedIn company posts | "Get the 30 latest posts from Apify's LinkedIn company page with their reaction counts." | [LinkedIn Company Posts Scraper](https://apify.com/harvestapi/linkedin-company-posts) |
358
+ | Review analysis | "Pull the latest 100 Google Maps reviews for this hotel and group the complaints by theme." | [Google Maps Reviews Scraper](https://apify.com/compass/Google-Maps-Reviews-Scraper) |
359
+ | Social media monitoring | "Get the 50 latest posts from @nasa on Instagram with likes and comments." | [Instagram Scraper](https://apify.com/apify/instagram-scraper) |
360
+ | Trend research | "Find the most viewed TikTok videos for #skincare this week." | [TikTok Scraper](https://apify.com/clockworks/tiktok-scraper) |
361
+ | E-commerce | "List the 10 best-rated wireless earbuds on Amazon with prices and review counts." | [Amazon Product Scraper](https://apify.com/junglee/amazon-crawler) |
362
+ | Knowledge base and RAG | "Crawl docs.example.com and turn every page into Markdown I can load into my vector database." | [Website Content Crawler](https://apify.com/apify/website-content-crawler) |
443
363
 
444
- ### Resources
364
+ Follow-ups work too. "Show me the next 10 results from that run" makes the agent call `get-dataset-items` again with a higher `offset`. With the `schedules` category loaded, "Run that Google Maps search every Monday at 9 am" creates a schedule.
445
365
 
446
- Your Apify data is not enumerated in `resources/list` β€” reads are on demand: pass any Apify API GET URL (`https://api.apify.com/v2/...`) to `resources/read` and the server injects the session's Apify token and returns the response body. `resources/templates/list` enumerates the common shapes β€” dataset items, key-value store records and keys, run metadata, run log β€” with their paging parameters. Responses inline up to 256 KB; anything larger returns a short notice with a download URL instead of the body. API reads require an Apify token, so a payment-only session (x402 or Skyfire) gets a JSON-RPC error for them.
366
+ ## πŸ’° Pricing and limits
447
367
 
448
- ## πŸ’¬ Usage examples
368
+ - Connecting to the MCP server is free. Actor runs bill to your Apify account according to each Actor's pricing, which `fetch-actor-details` shows before a run. The [Apify free plan](https://apify.com/pricing) includes $5 of monthly platform usage.
369
+ - To cap what a run can cost, pass `maxTotalChargeUsd` (pay-per-event Actors) or `maxItems` (pay-per-result Actors) in the `callOptions` of `call-actor`. `timeout` and `memory` limit the run's duration and memory, not its price.
370
+ - The hosted server accepts up to 20 requests per second per account.
371
+ - `search-actors` returns only free and pay-per-event Actors that pass the platform's agent-safety filters, so rental and pay-per-result Actors don't appear in search. [Full-permission Actors](https://docs.apify.com/actors/running/permissions#full-permission-actors) need your one-time approval; until then, `call-actor` returns an error with an approval link.
372
+ - Some tools work without an Apify account: `search-actors`, `fetch-actor-details`, `search-apify-docs`, `fetch-apify-docs`, `apify-api-search`, and `apify-api-details`. Select only those, for example `https://mcp.apify.com?tools=search-actors`, and the hosted server accepts the connection without a token.
449
373
 
450
- Below are realistic examples showing how an AI assistant uses the Apify MCP Server tools.
451
-
452
- ### Example 1: Search the web using RAG Web Browser
453
-
454
- **User prompt:**
455
- > Find the latest news about autonomous AI agents and summarize the key developments.
456
-
457
- The AI assistant calls the pre-configured `apify--rag-web-browser` Actor tool to search the web and return content from top results.
458
- The tool returns markdown content from the top 3 search results, which the AI assistant then summarizes for the user.
459
-
460
- ### Example 2: Discover and run an Actor from Apify Store
461
-
462
- **User prompt:**
463
- > Scrape the top 10 restaurants in Prague from Google Maps with their contact details.
464
-
465
- The AI assistant first searches for a suitable Actor, inspects its input schema, and then executes it.
466
- The tool returns a preview of the scraped data including restaurant names, addresses, ratings, phone numbers, and websites.
467
-
468
- ### Example 3: Retrieve and paginate through Actor run results
469
-
470
- **User prompt:**
471
- > Show me the next 10 results from that scraping run.
472
-
473
- The AI assistant uses the dataset ID from the previous Actor run to fetch additional items.
474
- Expected output: The tool returns the next page of structured data items from the Actor's output dataset.
374
+ > πŸͺ™ **Agentic payments (experimental).** Agents can pay for Actor runs without an Apify account. [AGI](https://agi.apify.com) sells a prepaid, spend-capped Apify API token for an x402, MPP, or Skyfire payment. The agent then uses it as a normal Bearer token against `mcp.apify.com`, with any Actor. See the [agentic payments documentation](https://docs.apify.com/agents/payments) for supported methods and limits, and [agi.apify.com/AGENTS.md](https://agi.apify.com/AGENTS.md) for protocol details.
475
375
 
476
376
  ## πŸ“‘ Telemetry
477
377
 
478
- The Apify MCP Server collects telemetry data about tool calls to help Apify understand usage patterns and improve the service.
479
- By default, telemetry is **enabled** for all tool calls.
480
- With telemetry enabled, Actor searches in the Apify Store send the MCP session id as `_traceId`, and tool-call events carry it as `trace_id`.
481
- `search-actors` also takes an optional `useCase`: one sentence, written by the model, on why the user is searching. It is sent with the Store search as `_useCase`, and Apify records it in its Store search analytics to improve search results.
482
- Opting out of telemetry disables all of this.
483
-
484
- The stdio transport also uses [Sentry](https://sentry.io) for error tracking, which helps us identify and fix issues faster.
485
- Sentry is automatically disabled when telemetry is opted out.
486
-
487
- ### Opting out of telemetry
378
+ The Apify MCP server collects telemetry about tool calls to help Apify understand usage patterns and improve the service. Telemetry is **on** by default. With telemetry on, Actor searches in Apify Store send the MCP session ID as `_traceId`, and tool-call events carry it as `trace_id`. `search-actors` also sends `_useCase`, a one-sentence reason for the search written by the model, which Apify uses to improve Store search results. The stdio transport also uses [Sentry](https://sentry.io) for error tracking, which helps the Apify team find and fix issues faster.
488
379
 
489
- You can opt out of telemetry (including Sentry error tracking) by setting the `--telemetry-enabled` CLI flag to `false` or the `TELEMETRY_ENABLED` environment variable to `false`.
490
- CLI flags take precedence over environment variables.
380
+ To opt out, including Sentry, set the `telemetry-enabled` URL parameter or the `--telemetry-enabled` CLI flag to `false`, or set `TELEMETRY_ENABLED=false`. CLI flags take precedence over environment variables.
491
381
 
492
- #### Examples
493
-
494
- **For the remote server (mcp.apify.com)**:
495
382
  ```text
496
- # Disable via URL parameter
497
383
  https://mcp.apify.com?telemetry-enabled=false
498
384
  ```
499
385
 
500
- **For the local stdio server**:
501
386
  ```bash
502
- # Disable via CLI flag
503
387
  npx @apify/actors-mcp-server --telemetry-enabled=false
504
-
505
- # Or set environment variable
506
- export TELEMETRY_ENABLED=false
507
- npx @apify/actors-mcp-server
388
+ TELEMETRY_ENABLED=false npx @apify/actors-mcp-server
508
389
  ```
509
390
 
510
- # βš™οΈ Development
511
-
512
- Please see the [CONTRIBUTING.md](./CONTRIBUTING.md) guide for contribution guidelines and commit message conventions.
391
+ ## πŸ› Troubleshooting and limitations
513
392
 
514
- For detailed development setup, project structure, and local testing instructions, see the [DEVELOPMENT.md](./DEVELOPMENT.md) guide.
393
+ - **The local server won't start.** Check your Node.js version: the package requires Node.js 22 or later.
394
+ - **Authentication fails.** Reconnect so the client repeats the OAuth flow, or switch to a Bearer token. For the local server, check that `APIFY_TOKEN` is set in the client's server configuration, not only in your shell.
395
+ - **Client features vary.** Any MCP client can connect, but support for dynamic tool lists, OAuth, and MCP Apps differs between clients.
396
+ - **Invalid Actor input.** When `call-actor` fails because of invalid input, the error includes the Actor's input schema so the agent can correct the input and retry.
515
397
 
516
- ## Prerequisites
398
+ <details>
399
+ <summary><b>How the server adapts Actor input schemas</b></summary>
517
400
 
518
- - [Node.js](https://nodejs.org/en) (v22 or higher)
401
+ The server adapts Actor input schemas so that more clients and models can use them:
519
402
 
520
- Create an environment file, `.env`, with the following content:
521
- ```text
522
- APIFY_TOKEN="your-apify-token"
523
- ```
524
-
525
- Build the `actors-mcp-server` package:
526
-
527
- ```bash
528
- pnpm run build
529
- ```
403
+ - Descriptions longer than 500 characters are cut at the last complete sentence and marked `[Description truncated]`.
404
+ - Enums are kept in full up to 2,000 combined characters. Larger enums are replaced by a short note with example values.
405
+ - Required fields get a `REQUIRED` prefix in their descriptions for frameworks that ignore the JSON Schema `required` list.
406
+ - Nested properties are built for special inputs such as proxy configuration and request lists.
407
+ - Missing array item types are inferred from the item type, the prefill, the default value, or the editor type, in that order.
408
+ - Prefill and default values are copied into descriptions as examples, for clients that ignore JSON Schema `examples`.
530
409
 
531
- ## Start HTTP streamable MCP server
410
+ </details>
532
411
 
533
- Run using Apify CLI:
412
+ For more help, see the [MCP documentation](https://docs.apify.com/mcp) or [open an issue](https://github.com/apify/apify-mcp-server/issues).
534
413
 
535
- ```bash
536
- export APIFY_TOKEN="your-apify-token"
537
- export APIFY_META_ORIGIN=STANDBY
538
- apify run -p
539
- ```
414
+ ## ❓ FAQ
540
415
 
541
- Once the server is running, you can use the [MCP Inspector](https://github.com/modelcontextprotocol/inspector) to debug the server exposed at `http://localhost:3001`.
416
+ **What is an MCP server?**
417
+ An MCP server exposes tools and data to AI agents through the [Model Context Protocol](https://modelcontextprotocol.io), an open standard supported by clients such as Claude, ChatGPT, and Cursor. The agent connects once and calls the server's tools when a task needs them. The Apify MCP server's tools are the Actors in Apify Store.
542
418
 
543
- ## Start standard input/output (stdio) MCP server
419
+ **What is the Apify MCP server?**
420
+ It's the official [Model Context Protocol](https://modelcontextprotocol.io) server for Apify. It lets AI agents search Apify Store, run Actors for web scraping, data extraction, and browser automation, and read the structured results.
544
421
 
545
- You can launch the MCP Inspector with this command:
422
+ **When is it a good MCP server for web scraping?**
423
+ When an agent needs data from many different sites. A typical case is Google Maps one day, Instagram or an online store the next. The agent picks a ready-made Actor for each site from Apify Store instead of you writing and maintaining a scraper. Each Actor works like a web scraping API for its site, and the Apify platform handles scaling, proxies, and storage of the results.
546
424
 
547
- ```bash
548
- export APIFY_TOKEN="your-apify-token"
549
- npx @modelcontextprotocol/inspector node ./dist/stdio.js
550
- ```
425
+ **How does it compare to Playwright MCP?**
426
+ Playwright MCP drives a browser on your machine step by step, through clicks and page snapshots. The Apify MCP server runs Actors in the Apify cloud. Each Actor handles JavaScript rendering, proxies, and blocking for its site and returns structured results, so the agent asks for the data instead of operating a browser. Many agents use both.
551
427
 
552
- Upon launching, the Inspector will display a URL that you can open in your browser to begin debugging.
428
+ **Can ChatGPT or Claude scrape websites with it?**
429
+ Yes. Connect ChatGPT, Claude, or Claude Code to `https://mcp.apify.com`, then ask in plain language. The model searches for a suitable Actor, runs it, and reads the results.
553
430
 
554
- ## Unauthenticated access
431
+ **Is it free?**
432
+ Connecting is free, and some discovery tools work without an account. Actor runs bill to your Apify account at each Actor's price, and the free plan includes $5 of monthly platform usage.
555
433
 
556
- When the `tools` query parameter includes only tools explicitly enabled for unauthenticated use, the hosted server allows access without an API token.
557
- Currently allowed tools: `search-actors`, `fetch-actor-details`, `search-apify-docs`, `fetch-apify-docs`, `apify-api-search`, `apify-api-details`.
558
- Example: `https://mcp.apify.com?tools=search-actors`.
434
+ **Do I need an API token?**
435
+ Not with the hosted server, because OAuth signs you in through the browser. The local server needs `APIFY_TOKEN` or an Apify CLI login.
559
436
 
560
- ## 🐦 Canary PR releases
437
+ **Can I limit what the agent can do or spend?**
438
+ Yes. Select tools with the `tools` parameter or expose a single Actor. To cap a run's cost, pass `maxTotalChargeUsd` for pay-per-event Actors or `maxItems` for pay-per-result Actors in `call-actor` options.
561
439
 
562
- Apify MCP is split across two repositories: this repository for core MCP logic and the private `apify-mcp-server-internal` for the hosted server.
563
- Changes must be synchronized between both.
440
+ ## πŸ”§ Development
564
441
 
565
- To create a canary release, add the `beta` label to your pull request.
566
- This publishes the package to [pkg.pr.new](https://pkg.pr.new/) for staging and testing before merging.
567
- See [the workflow file](.github/workflows/on_pull_request_label.yaml) for details.
442
+ This repository contains the open-source server package published to npm as [`@apify/actors-mcp-server`](https://www.npmjs.com/package/@apify/actors-mcp-server). The hosted service at mcp.apify.com runs on this core logic from a separate private repository.
568
443
 
569
- ## πŸ‹ Docker Hub integration
570
- The Apify MCP Server is also available on [Docker Hub](https://hub.docker.com/mcp/server/apify-mcp-server/overview), registered via the [mcp-registry](https://github.com/docker/mcp-registry) repository. The entry in `servers/apify-mcp-server/server.yaml` should be deployed automatically by the Docker Hub MCP registry (deployment frequency is unknown). **Before making major changes to the `stdio` server version, test it locally to ensure the Docker build passes.** To test, change the `source.branch` to your PR branch and run `task build -- apify-mcp-server`. For more details, see [CONTRIBUTING.md](https://github.com/docker/mcp-registry/blob/main/CONTRIBUTING.md).
444
+ You need Node.js 22 or later and pnpm.
571
445
 
572
- # πŸ› Troubleshooting
446
+ ```bash
447
+ pnpm install
448
+ pnpm run build
449
+ pnpm run dev # Streamable HTTP server on http://localhost:3001, hot reload for widgets
450
+ pnpm run inspector:stdio # MCP Inspector against the stdio server
451
+ ```
573
452
 
574
- For step-by-step troubleshooting, see the [Claude Desktop integration guide](https://docs.apify.com/platform/integrations/claude-desktop) in the Apify documentation.
453
+ The development HTTP server doesn't read `APIFY_TOKEN` from the environment. Pass your token in an `Authorization: Bearer` header or a `?token=` query parameter, for example from the [MCP Inspector](https://github.com/modelcontextprotocol/inspector).
575
454
 
576
- ## πŸ’‘ Limitations
455
+ To publish a canary build of a pull request to [pkg.pr.new](https://pkg.pr.new/), add the `beta` label to it.
577
456
 
578
- The Actor input schema is processed to be compatible with most MCP clients while adhering to [JSON Schema](https://json-schema.org/) standards. The processing includes:
579
- - **Descriptions** longer than 500 characters (as defined in `ACTOR_MAX_DESCRIPTION_LENGTH`) are cut at the last complete sentence in that window, or the last complete word if there is no sentence break, and marked `[Description truncated]`.
580
- - **Enum fields** that fit within 2000 combined characters (as defined in `ACTOR_ENUM_MAX_LENGTH`) are kept in full; larger enums are omitted, with a short note and a few example values in the description instead.
581
- - **Required fields** are explicitly marked with a `REQUIRED` prefix in their descriptions for compatibility with frameworks that may not handle the JSON schema properly.
582
- - **Nested properties** are built for special cases like proxy configuration and request list sources to ensure the correct input structure.
583
- - **Array item types** are inferred when not explicitly defined in the schema, using a priority order: explicit type in items > prefill type > default value type > editor type.
584
- - **Enum values and examples** are added to property descriptions to ensure visibility, even if the client doesn't fully support the JSON schema.
585
- - **Rental Actors** are only available for use with the hosted MCP server at https://mcp.apify.com. When running the server locally via stdio, you can only access Actors that are already added to your local toolset. To dynamically search for and use any Actor from Apify Storeβ€”including rental Actorsβ€”connect to the hosted endpoint.
457
+ [DEVELOPMENT.md](./DEVELOPMENT.md) covers the project structure, tool loading phases, the Node.js version policy, and testing.
586
458
 
587
- # πŸ”’ Privacy policy
459
+ ## 🀝 Contributing
588
460
 
589
- When you use this server, your requests and Actor inputs are sent to the Apify API for execution.
590
- Data is not shared with third parties beyond what is necessary to run the requested Actors.
591
- For full details on data collection, usage, sharing, and retention, see [Apify Legal](https://docs.apify.com/legal).
461
+ Bug reports, feature requests, and documentation fixes are welcome. [Open an issue](https://github.com/apify/apify-mcp-server/issues) with steps to reproduce a bug, or describe the problem a feature would solve and who runs into it. Send typos, broken links, and wrong commands straight to a pull request. For code, work only on an issue a maintainer has invited you to pick up; unsolicited pull requests are closed.
592
462
 
593
- # 🀝 Contributing
463
+ Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you start, including the rules for [AI-assisted contributions](./CONTRIBUTING.md#ai-assisted-contributions).
594
464
 
595
- We welcome bug reports, feature requests, and documentation fixes. **Send us the problem, not the patch** β€” a precise issue with a reproduction is more useful than a pull request.
465
+ ## πŸ”’ Privacy and license
596
466
 
597
- - **πŸ› Report a bug**: [Open an issue](https://github.com/apify/apify-mcp-server/issues) with a reproduction. The most useful thing you can send us.
598
- - **πŸ’‘ Propose a feature**: [Open an issue](https://github.com/apify/apify-mcp-server/issues) β€” the problem and who hits it, not the implementation.
599
- - **πŸ”§ Code**: Work only on a maintainer-invited issue. An open issue is not an invitation to pick it up; unsolicited pull requests are closed.
600
- - **πŸ“š Documentation**: Typos, broken links, and wrong commands go straight to a PR.
467
+ Requests and Actor inputs go to the Apify API to run the Actors you call. Apify doesn't share them with third parties beyond what running those Actors requires. See [Apify legal documents](https://docs.apify.com/legal) for details on data collection and retention.
601
468
 
602
- Full rules, including [AI-assisted contributions](./CONTRIBUTING.md#ai-assisted-contributions): [CONTRIBUTING.md](./CONTRIBUTING.md).
469
+ The project is licensed under the [MIT license](./LICENSE.md).
603
470
 
604
- # πŸ“š Learn more
471
+ ## πŸ“š Learn more
605
472
 
606
- - [Model Context Protocol](https://modelcontextprotocol.org/)
607
- - [What are AI Agents?](https://blog.apify.com/what-are-ai-agents/)
608
- - [What is MCP and why does it matter?](https://blog.apify.com/what-is-model-context-protocol/)
473
+ - [MCP documentation](https://docs.apify.com/mcp): authentication, tool reference, and advanced configuration
474
+ - [Apify for AI agents](https://docs.apify.com/agents): choosing between MCP, plugins, agent skills, the CLI, and machine-readable docs
475
+ - [Apify agent skills](https://docs.apify.com/agents/skills): guided multi-step workflows, installed with `npx skills add apify/agent-skills`
476
+ - [Apify CLI](https://docs.apify.com/cli): running and building Actors from a terminal
477
+ - [Model Context Protocol](https://modelcontextprotocol.io)
478
+ - [MCP for beginners](https://blog.apify.com/mcp-for-beginners/)
609
479
  - [How to use MCP with Apify Actors](https://blog.apify.com/how-to-use-mcp/)
610
- - [Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client)
611
- - [Webinar: Building and Monetizing MCP Servers on Apify](https://www.youtube.com/watch?v=w3AH3jIrXXo)
612
- - [How to build and monetize an AI agent on Apify](https://blog.apify.com/how-to-build-an-ai-agent/)
613
- - [Connect Apify MCP with Claude Desktop](https://docs.apify.com/platform/integrations/claude-desktop)
614
- - [Connect Apify MCP with ChatGPT](https://docs.apify.com/platform/integrations/chatgpt)
480
+ - [Webinar: Building and monetizing MCP servers on Apify](https://www.youtube.com/watch?v=w3AH3jIrXXo)