@apify/actors-mcp-server 0.19.6-beta.2 β†’ 0.19.6-beta.4

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 (123) hide show
  1. package/README.md +319 -449
  2. package/dist/apify_client.d.ts +6 -0
  3. package/dist/apify_client.d.ts.map +1 -1
  4. package/dist/apify_client.js +12 -1
  5. package/dist/apify_client.js.map +1 -1
  6. package/dist/const.d.ts +2 -0
  7. package/dist/const.d.ts.map +1 -1
  8. package/dist/const.js +2 -0
  9. package/dist/const.js.map +1 -1
  10. package/dist/index_internals.d.ts +2 -0
  11. package/dist/index_internals.d.ts.map +1 -1
  12. package/dist/index_internals_test_kit.d.ts +1 -2
  13. package/dist/index_internals_test_kit.d.ts.map +1 -1
  14. package/dist/index_internals_test_kit.js +1 -2
  15. package/dist/index_internals_test_kit.js.map +1 -1
  16. package/dist/mcp/client.d.ts +6 -1
  17. package/dist/mcp/client.d.ts.map +1 -1
  18. package/dist/mcp/client.js +15 -12
  19. package/dist/mcp/client.js.map +1 -1
  20. package/dist/mcp/remote_tool_call.d.ts +2 -1
  21. package/dist/mcp/remote_tool_call.d.ts.map +1 -1
  22. package/dist/mcp/remote_tool_call.js +6 -6
  23. package/dist/mcp/remote_tool_call.js.map +1 -1
  24. package/dist/mcp/server.d.ts.map +1 -1
  25. package/dist/mcp/server.js +4 -2
  26. package/dist/mcp/server.js.map +1 -1
  27. package/dist/mcp/tool_call_engine.d.ts +4 -1
  28. package/dist/mcp/tool_call_engine.d.ts.map +1 -1
  29. package/dist/mcp/tool_call_engine.js +17 -18
  30. package/dist/mcp/tool_call_engine.js.map +1 -1
  31. package/dist/mcp/tool_dispatch.js +1 -1
  32. package/dist/mcp/tool_dispatch.js.map +1 -1
  33. package/dist/test_kit/cases/actors.cases.d.ts.map +1 -1
  34. package/dist/test_kit/cases/actors.cases.js +15 -78
  35. package/dist/test_kit/cases/actors.cases.js.map +1 -1
  36. package/dist/test_kit/cases/payments.cases.d.ts.map +1 -1
  37. package/dist/test_kit/cases/payments.cases.js +19 -12
  38. package/dist/test_kit/cases/payments.cases.js.map +1 -1
  39. package/dist/test_kit/cases/registration.cases.d.ts.map +1 -1
  40. package/dist/test_kit/cases/registration.cases.js +8 -2
  41. package/dist/test_kit/cases/registration.cases.js.map +1 -1
  42. package/dist/test_kit/cases/tools.cases.d.ts.map +1 -1
  43. package/dist/test_kit/cases/tools.cases.js +23 -29
  44. package/dist/test_kit/cases/tools.cases.js.map +1 -1
  45. package/dist/test_kit/tsconfig.tsbuildinfo +1 -1
  46. package/dist/tools/actors/actor_tools_factory.d.ts +5 -2
  47. package/dist/tools/actors/actor_tools_factory.d.ts.map +1 -1
  48. package/dist/tools/actors/actor_tools_factory.js +10 -6
  49. package/dist/tools/actors/actor_tools_factory.js.map +1 -1
  50. package/dist/tools/actors/call_actor.d.ts +10 -38
  51. package/dist/tools/actors/call_actor.d.ts.map +1 -1
  52. package/dist/tools/actors/call_actor.js +59 -145
  53. package/dist/tools/actors/call_actor.js.map +1 -1
  54. package/dist/tools/actors/call_actor_mcp_tool.d.ts +20 -0
  55. package/dist/tools/actors/call_actor_mcp_tool.d.ts.map +1 -0
  56. package/dist/tools/actors/call_actor_mcp_tool.js +150 -0
  57. package/dist/tools/actors/call_actor_mcp_tool.js.map +1 -0
  58. package/dist/tools/actors/fetch_actor_details.d.ts +2 -9
  59. package/dist/tools/actors/fetch_actor_details.d.ts.map +1 -1
  60. package/dist/tools/actors/fetch_actor_details.js +13 -26
  61. package/dist/tools/actors/fetch_actor_details.js.map +1 -1
  62. package/dist/tools/actors/fetch_actor_mcp_tool_list.d.ts +8 -0
  63. package/dist/tools/actors/fetch_actor_mcp_tool_list.d.ts.map +1 -0
  64. package/dist/tools/actors/fetch_actor_mcp_tool_list.js +83 -0
  65. package/dist/tools/actors/fetch_actor_mcp_tool_list.js.map +1 -0
  66. package/dist/tools/actors/send_server_actor_request.d.ts.map +1 -1
  67. package/dist/tools/actors/send_server_actor_request.js +4 -6
  68. package/dist/tools/actors/send_server_actor_request.js.map +1 -1
  69. package/dist/tools/registry.d.ts.map +1 -1
  70. package/dist/tools/registry.js +3 -1
  71. package/dist/tools/registry.js.map +1 -1
  72. package/dist/tools/storage/get_dataset.d.ts.map +1 -1
  73. package/dist/tools/storage/get_dataset.js +7 -7
  74. package/dist/tools/storage/get_dataset.js.map +1 -1
  75. package/dist/tools/storage/get_dataset_items.d.ts.map +1 -1
  76. package/dist/tools/storage/get_dataset_items.js +10 -6
  77. package/dist/tools/storage/get_dataset_items.js.map +1 -1
  78. package/dist/tools/storage/get_dataset_schema.d.ts.map +1 -1
  79. package/dist/tools/storage/get_dataset_schema.js +6 -6
  80. package/dist/tools/storage/get_dataset_schema.js.map +1 -1
  81. package/dist/tools/storage/get_key_value_store.d.ts.map +1 -1
  82. package/dist/tools/storage/get_key_value_store.js +7 -7
  83. package/dist/tools/storage/get_key_value_store.js.map +1 -1
  84. package/dist/tools/storage/get_key_value_store_keys.d.ts.map +1 -1
  85. package/dist/tools/storage/get_key_value_store_keys.js +9 -8
  86. package/dist/tools/storage/get_key_value_store_keys.js.map +1 -1
  87. package/dist/tools/storage/get_key_value_store_record.d.ts.map +1 -1
  88. package/dist/tools/storage/get_key_value_store_record.js +15 -9
  89. package/dist/tools/storage/get_key_value_store_record.js.map +1 -1
  90. package/dist/tools/storage/storage_helpers.d.ts +34 -0
  91. package/dist/tools/storage/storage_helpers.d.ts.map +1 -1
  92. package/dist/tools/storage/storage_helpers.js +38 -0
  93. package/dist/tools/storage/storage_helpers.js.map +1 -1
  94. package/dist/tools/structured_output_schemas.d.ts +12 -2
  95. package/dist/tools/structured_output_schemas.d.ts.map +1 -1
  96. package/dist/tools/structured_output_schemas.js +12 -4
  97. package/dist/tools/structured_output_schemas.js.map +1 -1
  98. package/dist/tools/versions/source_helpers.d.ts +1 -1
  99. package/dist/tools/widgets/call_actor_widget.d.ts.map +1 -1
  100. package/dist/tools/widgets/call_actor_widget.js +6 -18
  101. package/dist/tools/widgets/call_actor_widget.js.map +1 -1
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/dist/types.d.ts +2 -8
  104. package/dist/types.d.ts.map +1 -1
  105. package/dist/types.js.map +1 -1
  106. package/dist/utils/actor.d.ts +3 -6
  107. package/dist/utils/actor.d.ts.map +1 -1
  108. package/dist/utils/actor.js +10 -23
  109. package/dist/utils/actor.js.map +1 -1
  110. package/dist/utils/actor_details.d.ts +0 -6
  111. package/dist/utils/actor_details.d.ts.map +1 -1
  112. package/dist/utils/actor_details.js +0 -56
  113. package/dist/utils/actor_details.js.map +1 -1
  114. package/dist/utils/apify_errors.d.ts.map +1 -1
  115. package/dist/utils/apify_errors.js +19 -1
  116. package/dist/utils/apify_errors.js.map +1 -1
  117. package/dist/utils/server-instructions/index.d.ts.map +1 -1
  118. package/dist/utils/server-instructions/index.js +0 -1
  119. package/dist/utils/server-instructions/index.js.map +1 -1
  120. package/dist/utils/tools.d.ts.map +1 -1
  121. package/dist/utils/tools.js +1 -3
  122. package/dist/utils/tools.js.map +1 -1
  123. package/package.json +1 -1
package/README.md CHANGED
@@ -1,610 +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.-->
86
-
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).
88
-
89
- Visit [mcp.apify.com](https://mcp.apify.com) to configure the server for your preferred client.
90
-
91
- ![Apify-MCP-configuration-clients](https://raw.githubusercontent.com/apify/apify-mcp-server/refs/heads/master/docs/mcp-clients.png)
22
+ Connect your agent to the largest marketplace of tools for AI.
92
23
 
93
- ### Tested clients
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).**
94
25
 
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
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.
103
27
 
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.
104
29
 
105
- # πŸͺ„ Try Apify MCP instantly
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">
106
31
 
107
- Want to try Apify MCP without any setup?
32
+ <!-- TODO: add the new setup video here once it is published. The old 2025 Claude tutorial (BKu8H91uCTg) was removed as outdated. -->
108
33
 
109
- Check out [Apify Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client)
34
+ ## Contents
110
35
 
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!
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)
113
52
 
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)
53
+ ## πŸš€ Quickstart
115
54
 
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.
116
58
 
117
- # πŸ’° Agentic payments
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.
118
60
 
119
- You can pay for Actor runs without an Apify API token using **AGI**, **direct x402**, or **Skyfire**.
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.
120
62
 
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.
63
+ ## πŸ€– Set up your client
124
64
 
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.
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.
126
66
 
127
- ## How agentic payments work
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)
128
68
 
129
- Actor run costs vary, so both payment methods use a prepaid balance model. The payment flow happens in four steps:
69
+ <details>
70
+ <summary><b>Claude Code</b></summary>
130
71
 
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.
72
+ ```bash
73
+ claude mcp add apify "https://mcp.apify.com" -t http
74
+ ```
141
75
 
142
- ## πŸͺ™ AGI (recommended)
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`.
143
77
 
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.
78
+ </details>
145
79
 
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.
80
+ <details>
81
+ <summary><b>ChatGPT</b></summary>
147
82
 
148
- ## πŸ’Έ Direct x402
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**.
149
88
 
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.
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**.
151
90
 
152
- ### Prerequisites
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).
153
92
 
154
- - A wallet with USDC on [Base](https://base.org) mainnet.
93
+ </details>
155
94
 
156
- ### Setup
95
+ <details>
96
+ <summary><b>Cursor</b></summary>
157
97
 
158
- Create or import a wallet:
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:
159
99
 
160
100
  ```bash
161
- # Create a new wallet
162
- mcpc x402 init
163
-
164
- # Import an existing wallet
165
- mcpc x402 import <private-key>
166
-
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
101
+ apify mcp install cursor
169
102
  ```
170
103
 
171
- Connect to the server with x402 enabled:
104
+ The same command works for `claude-code`, `vscode`, `codex`, `kiro`, and `antigravity`.
172
105
 
173
- ```bash
174
- mcpc connect "mcp.apify.com?payment=x402" @apify --x402
175
- ```
106
+ </details>
176
107
 
177
- You can now call a paid tool:
108
+ <details>
109
+ <summary><b>VS Code and GitHub Copilot</b></summary>
178
110
 
179
- ```bash
180
- mcpc @apify tools-call call-actor actor:="apify/rag-web-browser" input:='{"query": "latest AI news"}'
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:
112
+
113
+ ```json
114
+ {
115
+ "servers": {
116
+ "apify": {
117
+ "type": "http",
118
+ "url": "https://mcp.apify.com"
119
+ }
120
+ }
121
+ }
181
122
  ```
182
123
 
183
- ## πŸ”₯ Skyfire
124
+ </details>
184
125
 
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.
126
+ <details>
127
+ <summary><b>Claude</b></summary>
186
128
 
187
- ### Prerequisites
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).
188
130
 
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.
131
+ </details>
191
132
 
192
- ### Setup
133
+ <details>
134
+ <summary><b>Any other MCP client (JSON config)</b></summary>
193
135
 
194
- Configure the Skyfire MCP server and the Apify MCP Server in your client. Add `payment=skyfire` to the Apify server URL:
136
+ Most clients that support remote servers and OAuth accept a configuration like this:
195
137
 
196
138
  ```json
197
139
  {
198
140
  "mcpServers": {
199
- "skyfire": {
200
- "url": "https://api.skyfire.xyz/mcp/sse",
201
- "headers": {
202
- "skyfire-api-key": "<YOUR_SKYFIRE_API_KEY>"
203
- }
204
- },
205
141
  "apify": {
206
- "url": "https://mcp.apify.com?payment=skyfire"
142
+ "url": "https://mcp.apify.com"
207
143
  }
208
144
  }
209
145
  }
210
146
  ```
211
147
 
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.
213
-
214
- # πŸ› οΈ Tools, resources, and prompts
215
-
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.
148
+ </details>
218
149
 
219
- ### Actors
150
+ <details>
151
+ <summary><b>Local stdio (npx)</b></summary>
220
152
 
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.
225
-
226
-
227
- For example, for the `apify/rag-web-browser` Actor, the input parameters are:
153
+ Requires Node.js 22 or later.
228
154
 
229
155
  ```json
230
156
  {
231
- "query": "restaurants in San Francisco",
232
- "maxResults": 3
157
+ "mcpServers": {
158
+ "actors-mcp-server": {
159
+ "command": "npx",
160
+ "args": ["-y", "@apify/actors-mcp-server"],
161
+ "env": {
162
+ "APIFY_TOKEN": "YOUR_APIFY_TOKEN"
163
+ }
164
+ }
165
+ }
233
166
  }
234
167
  ```
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.
238
-
239
- ### Helper tools
240
-
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:
244
-
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.
254
-
255
- ### Overview of available tools
256
-
257
- Here is an overview list of all the tools provided by the Apify MCP Server.
258
-
259
- 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.
263
-
264
- | Tool name | Category | Description | Enabled by default |
265
- | :--- | :--- | :--- | :---: |
266
- | `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
- | `get-actor-run` | runs | Get detailed information about a specific Actor run. | ⚑ |
271
- | `get-dataset-items` | storage | Retrieve items from a dataset with support for filtering and pagination. | ⚑ |
272
- | `get-key-value-store-record`| storage | Get the value associated with a specific key in a key-value store. | ⚑ |
273
- | `abort-actor-run` | runs | Abort a running Actor run, optionally gracefully. | ⚑ |
274
- | `delete-actor` | none (select by name: `tools=delete-actor`) | Delete an Actor from your account permanently. Public Actors must be unpublished first. | |
275
- | `search-apify-docs` | docs | Search the Apify documentation for relevant pages. | βœ… |
276
- | `fetch-apify-docs` | docs | Fetch the full content of an Apify documentation page by its URL. | βœ… |
277
- | [`apify--rag-web-browser`](https://apify.com/apify/rag-web-browser) | Actor (see [tool configuration](#tools-configuration)) | An Actor tool to browse the web. | βœ… |
278
- | [`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. | βœ… |
279
- | `report-problem` | dev | Report a problem with an Apify tool or Actor to the Apify team. | βœ…ΒΉ |
280
- | `get-actor-list` | none (select by name: `tools=get-actor-list`) | List the Actors you own and those shared with you, including private ones. | |
281
- | `get-actor-run-list` | runs | Get a list of Actor runs, filterable by Actor and status. | |
282
- | `get-actor-run-log` | runs | Retrieve the logs for a specific Actor run. | |
283
- | `get-dataset` | storage | Get metadata about a specific dataset. | |
284
- | `get-dataset-schema` | storage | Generate a JSON schema from dataset items. | |
285
- | `get-key-value-store` | storage | Get metadata about a specific key-value store. | |
286
- | `get-key-value-store-keys`| storage | List the keys within a specific key-value store. | |
287
- | `get-dataset-list` | storage | List all available datasets for the user. | |
288
- | `get-key-value-store-list`| storage | List all available key-value stores for the user. | |
289
- | `create-actor-task` | tasks | Create a saved Actor task (a named, reusable Actor configuration). | |
290
- | `get-actor-task` | tasks | Get a saved Actor task, its publication state and public display configuration. | |
291
- | `update-actor-task` | tasks | Update a task's input, run options, or public display configuration. | |
292
- | `publish-actor-task` | tasks | Publish a task on its public landing page. | |
293
- | `unpublish-actor-task` | tasks | Unpublish a task from its public landing page. | |
294
- | `create-schedule` | schedules | Create a schedule that runs Actors or tasks on a cron cadence. | |
295
- | `get-schedule` | schedules | Get a schedule, its cron expression, state, and the actions it runs. | |
296
- | `update-schedule` | schedules | Update a schedule: cron expression, time zone, enabled state, or actions. | |
297
- | `delete-schedule` | schedules | Delete a schedule. | |
298
- | `get-actor-build` | builds | Get an Actor build's status. | |
299
- | `get-actor-build-log` | builds | Retrieve the logs for a specific Actor build. | |
300
- | `get-actor-build-list` | builds | List the account's builds, or one Actor's, in every status, newest first. | |
301
- | `build-actor` | builds | Build an Actor version and wait a bounded time for the build to finish. | |
302
- | `get-actor-version` | versions | Get an Actor version's file listing with hashes and the content of the files you ask for. | |
303
- | `create-actor` | versions | Create a private Actor in your account from files, optionally starting a build. | |
304
- | `update-actor-version` | versions | Write, edit, or delete files of an Actor version in one all-or-nothing write. | |
305
- | `create-actor-version` | versions | Add a version to an Actor, from files or as a copy of another version, optionally starting a build. | |
306
- | `delete-actor-version` | versions | Delete an Actor version; its builds and their tags stay. | |
307
- | `apify-api-search` | api | Search the Apify API reference for operations by keywords. Returns each one's method, path, and docs page. | |
308
- | `apify-api-details` | api | Get the parameters and request body schema of the Apify API operations on a path. | |
309
- | `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. | |
310
- | `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. | |
311
-
312
- > **Note:**
313
- >
314
- > 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`.
315
- >
316
- > 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.
317
-
318
- ### Tool annotations
319
168
 
320
- All tools include metadata annotations to help MCP clients and LLMs understand tool behavior:
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.
321
170
 
322
- - **`title`**: Short display name for the tool (e.g., "Search Actors", "Call Actor", "apify/rag-web-browser")
323
- - **`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.
324
- - **`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.
171
+ </details>
325
172
 
326
- 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.
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.
327
174
 
328
- ### Tools configuration
175
+ ## Remote (hosted) or local MCP server
329
176
 
330
- 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.
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`.
331
178
 
332
- When no query parameters are provided, the MCP server loads the following `tools` by default:
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 |
333
186
 
334
- - `actors`
335
- - `docs`
336
- - `apify/rag-web-browser`
337
- - `apify/web-fetch`
187
+ ## How an agent uses Apify Actors
338
188
 
339
- If the tools parameter is specified, only the listed tools or categories will be enabled – no default tools will be included.
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.
340
190
 
341
- `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`).
191
+ A typical task follows four steps:
342
192
 
343
- > **Easy configuration:**
344
- >
345
- > Use the [UI configurator](https://mcp.apify.com/) to configure your server, then copy the configuration to your client.
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.
346
197
 
347
- **Configuring the hosted server:**
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.
348
199
 
349
- The hosted server can be configured using query parameters in the URL. For example, to load the default tools, use:
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.
350
201
 
351
- ```
352
- https://mcp.apify.com?tools=actors,docs,apify/rag-web-browser,apify/web-fetch
353
- ```
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.
354
203
 
204
+ ## πŸ› οΈ Tools, resources, and prompts
355
205
 
356
- 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:
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.
357
207
 
358
- ```
359
- https://mcp.apify.com?tools=apify/my-actor
360
- ```
208
+ ### Helper tools
361
209
 
362
- This setup exposes only the specified Actor (`apify/my-actor`) as a tool. No other tools will be available.
210
+ Besides Actor tools, the server provides helper tools for the Apify platform:
363
211
 
364
- **Configuring the CLI:**
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.
365
218
 
366
- The CLI can be configured using command-line flags. For example, to load the same tools as in the hosted server configuration, use:
219
+ ### Available tools
367
220
 
368
- ```bash
369
- npx @apify/actors-mcp-server --tools actors,docs,apify/rag-web-browser,apify/web-fetch
370
- ```
221
+ Legend for the **Enabled by default** column:
371
222
 
372
- The minimal configuration is similar to the hosted server configuration:
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.
373
226
 
374
- ```bash
375
- npx @apify/actors-mcp-server --tools apify/my-actor
376
- ```
377
-
378
- As above, this exposes only the specified Actor (`apify/my-actor`) as a tool. No other tools will be available.
227
+ | Tool name | Category | Description | Enabled by default |
228
+ | :--- | :--- | :--- | :---: |
229
+ | `search-actors` | actors | Search for Actors in Apify Store. | βœ… |
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. | βœ… |
233
+ | `call-actor-mcp-tool` | actors | Call one tool on an Actor's MCP server and return its result. | βœ… |
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. | ⚑ |
237
+ | `abort-actor-run` | runs | Abort a running Actor run, optionally gracefully. | ⚑ |
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. | βœ… |
242
+ | `report-problem` | dev | Report a problem with an Apify tool or Actor to the Apify team. | βœ…ΒΉ |
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.
379
278
 
380
- > **⚠️ Important recommendation**
381
- >
382
- > **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.
383
- >
384
- > **For production use and stable interfaces, always explicitly specify the `tools` parameter** to ensure your configuration remains consistent across updates.
279
+ ### Tool annotations
385
280
 
386
- ### UI mode configuration
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.
387
282
 
388
- 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.
283
+ ### Prompts and resources
389
284
 
390
- **Configuring the hosted server:**
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.
391
286
 
392
- Enable UI mode using the `ui` query parameter:
287
+ ## Choose which tools load
393
288
 
394
- ```
395
- https://mcp.apify.com?ui=true
396
- ```
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).
397
290
 
398
- You can combine it with other parameters:
291
+ Hosted server:
399
292
 
293
+ ```text
294
+ https://mcp.apify.com?tools=actors,docs,apify/web-search,apify/web-fetch
400
295
  ```
401
- https://mcp.apify.com?tools=actors,docs&ui=true
402
- ```
403
-
404
- **Configuring the CLI:**
405
296
 
406
- The CLI can be configured using command-line flags. For example, to enable UI mode:
297
+ Local server:
407
298
 
408
299
  ```bash
409
- npx @apify/actors-mcp-server --ui true
300
+ npx @apify/actors-mcp-server --tools actors,docs,apify/web-search,apify/web-fetch
410
301
  ```
411
302
 
412
- You can also set it via the `UI_MODE` environment variable:
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:
413
304
 
414
- ```bash
415
- export UI_MODE=true
416
- npx @apify/actors-mcp-server
305
+ ```text
306
+ https://mcp.apify.com?tools=apify/instagram-scraper
417
307
  ```
418
308
 
419
- ### Backward compatibility
309
+ > **Pin your tools in production.** The default tool set can change between versions. Set `tools` explicitly if you need a stable interface.
420
310
 
421
- The v2 configuration preserves backward compatibility with v1 usage. Notes:
311
+ <details>
312
+ <summary><b>Backward compatibility with older configurations</b></summary>
422
313
 
423
- - `actors` param (URL) and `--actors` flag (CLI) are still supported.
424
- - Internally they are merged into `tools` selectors.
425
- - Examples: `?actors=apify/rag-web-browser` ≑ `?tools=apify/rag-web-browser`; `--actors apify/rag-web-browser` ≑ `--tools apify/rag-web-browser`.
426
- - `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.
427
- - Defaults remain compatible: when no `tools` are specified, the server loads `actors`, `docs`, `apify/rag-web-browser`, and `apify/web-fetch`.
428
- - If any `tools` are specified, the defaults are not added (same as v1 intent for explicit selection).
429
- - `call-actor` is now included by default via the `actors` category (additive change). To exclude it, specify an explicit `tools` list without `actors`.
430
- - `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.
431
- - `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.
432
- - `tools=source` is retired: the category was renamed to `versions`. The old selector is ignored and loads no tools. Use `tools=versions` instead.
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.
433
320
 
434
- Existing URLs and commands using `?actors=...` or `--actors` continue to work unchanged.
321
+ </details>
435
322
 
436
- ### Prompts
323
+ ## UI mode configuration
437
324
 
438
- The server advertises the `prompts` capability, but no prompts are currently registered β€” `prompts/list` returns an empty list.
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.
439
326
 
440
- ### Resources
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 |
441
332
 
442
- 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.
333
+ Hosted server:
443
334
 
444
- ## πŸ’¬ Usage examples
445
-
446
- Below are realistic examples showing how an AI assistant uses the Apify MCP Server tools.
335
+ ```text
336
+ https://mcp.apify.com?tools=actors,docs&ui=true
337
+ ```
447
338
 
448
- ### Example 1: Search the web using RAG Web Browser
339
+ Local server, with a CLI flag or the `UI_MODE` environment variable:
449
340
 
450
- **User prompt:**
451
- > Find the latest news about autonomous AI agents and summarize the key developments.
341
+ ```bash
342
+ npx @apify/actors-mcp-server --ui true
343
+ UI_MODE=true npx @apify/actors-mcp-server
344
+ ```
452
345
 
453
- The AI assistant calls the pre-configured `apify--rag-web-browser` Actor tool to search the web and return content from top results.
454
- The tool returns markdown content from the top 3 search results, which the AI assistant then summarizes for the user.
346
+ ## πŸ’¬ Example prompts
455
347
 
456
- ### Example 2: Discover and run an Actor from Apify Store
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:
457
349
 
458
- **User prompt:**
459
- > Scrape the top 10 restaurants in Prague from Google Maps with their contact details.
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) |
460
363
 
461
- The AI assistant first searches for a suitable Actor, inspects its input schema, and then executes it.
462
- The tool returns a preview of the scraped data including restaurant names, addresses, ratings, phone numbers, and websites.
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.
463
365
 
464
- ### Example 3: Retrieve and paginate through Actor run results
366
+ ## πŸ’° Pricing and limits
465
367
 
466
- **User prompt:**
467
- > Show me the next 10 results from that scraping run.
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.
468
373
 
469
- The AI assistant uses the dataset ID from the previous Actor run to fetch additional items.
470
- 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.
471
375
 
472
376
  ## πŸ“‘ Telemetry
473
377
 
474
- The Apify MCP Server collects telemetry data about tool calls to help Apify understand usage patterns and improve the service.
475
- By default, telemetry is **enabled** for all tool calls.
476
- 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`.
477
- `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.
478
- Opting out of telemetry disables all of this.
479
-
480
- The stdio transport also uses [Sentry](https://sentry.io) for error tracking, which helps us identify and fix issues faster.
481
- Sentry is automatically disabled when telemetry is opted out.
482
-
483
- ### 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.
484
379
 
485
- 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`.
486
- 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.
487
381
 
488
- #### Examples
489
-
490
- **For the remote server (mcp.apify.com)**:
491
382
  ```text
492
- # Disable via URL parameter
493
383
  https://mcp.apify.com?telemetry-enabled=false
494
384
  ```
495
385
 
496
- **For the local stdio server**:
497
386
  ```bash
498
- # Disable via CLI flag
499
387
  npx @apify/actors-mcp-server --telemetry-enabled=false
500
-
501
- # Or set environment variable
502
- export TELEMETRY_ENABLED=false
503
- npx @apify/actors-mcp-server
388
+ TELEMETRY_ENABLED=false npx @apify/actors-mcp-server
504
389
  ```
505
390
 
506
- # βš™οΈ Development
507
-
508
- Please see the [CONTRIBUTING.md](./CONTRIBUTING.md) guide for contribution guidelines and commit message conventions.
391
+ ## πŸ› Troubleshooting and limitations
509
392
 
510
- 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.
511
397
 
512
- ## Prerequisites
398
+ <details>
399
+ <summary><b>How the server adapts Actor input schemas</b></summary>
513
400
 
514
- - [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:
515
402
 
516
- Create an environment file, `.env`, with the following content:
517
- ```text
518
- APIFY_TOKEN="your-apify-token"
519
- ```
520
-
521
- Build the `actors-mcp-server` package:
522
-
523
- ```bash
524
- pnpm run build
525
- ```
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`.
526
409
 
527
- ## Start HTTP streamable MCP server
410
+ </details>
528
411
 
529
- 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).
530
413
 
531
- ```bash
532
- export APIFY_TOKEN="your-apify-token"
533
- export APIFY_META_ORIGIN=STANDBY
534
- apify run -p
535
- ```
414
+ ## ❓ FAQ
536
415
 
537
- 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.
538
418
 
539
- ## 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.
540
421
 
541
- 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.
542
424
 
543
- ```bash
544
- export APIFY_TOKEN="your-apify-token"
545
- npx @modelcontextprotocol/inspector node ./dist/stdio.js
546
- ```
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.
547
427
 
548
- 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.
549
430
 
550
- ## 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.
551
433
 
552
- When the `tools` query parameter includes only tools explicitly enabled for unauthenticated use, the hosted server allows access without an API token.
553
- Currently allowed tools: `search-actors`, `fetch-actor-details`, `search-apify-docs`, `fetch-apify-docs`, `apify-api-search`, `apify-api-details`.
554
- 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.
555
436
 
556
- ## 🐦 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.
557
439
 
558
- Apify MCP is split across two repositories: this repository for core MCP logic and the private `apify-mcp-server-internal` for the hosted server.
559
- Changes must be synchronized between both.
440
+ ## πŸ”§ Development
560
441
 
561
- To create a canary release, add the `beta` label to your pull request.
562
- This publishes the package to [pkg.pr.new](https://pkg.pr.new/) for staging and testing before merging.
563
- 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.
564
443
 
565
- ## πŸ‹ Docker Hub integration
566
- 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.
567
445
 
568
- # πŸ› 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
+ ```
569
452
 
570
- 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).
571
454
 
572
- ## πŸ’‘ 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.
573
456
 
574
- 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:
575
- - **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]`.
576
- - **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.
577
- - **Required fields** are explicitly marked with a `REQUIRED` prefix in their descriptions for compatibility with frameworks that may not handle the JSON schema properly.
578
- - **Nested properties** are built for special cases like proxy configuration and request list sources to ensure the correct input structure.
579
- - **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.
580
- - **Enum values and examples** are added to property descriptions to ensure visibility, even if the client doesn't fully support the JSON schema.
581
- - **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.
582
458
 
583
- # πŸ”’ Privacy policy
459
+ ## 🀝 Contributing
584
460
 
585
- When you use this server, your requests and Actor inputs are sent to the Apify API for execution.
586
- Data is not shared with third parties beyond what is necessary to run the requested Actors.
587
- 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.
588
462
 
589
- # 🀝 Contributing
463
+ Read [CONTRIBUTING.md](./CONTRIBUTING.md) before you start, including the rules for [AI-assisted contributions](./CONTRIBUTING.md#ai-assisted-contributions).
590
464
 
591
- 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
592
466
 
593
- - **πŸ› 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.
594
- - **πŸ’‘ Propose a feature**: [Open an issue](https://github.com/apify/apify-mcp-server/issues) β€” the problem and who hits it, not the implementation.
595
- - **πŸ”§ Code**: Work only on a maintainer-invited issue. An open issue is not an invitation to pick it up; unsolicited pull requests are closed.
596
- - **πŸ“š 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.
597
468
 
598
- 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).
599
470
 
600
- # πŸ“š Learn more
471
+ ## πŸ“š Learn more
601
472
 
602
- - [Model Context Protocol](https://modelcontextprotocol.org/)
603
- - [What are AI Agents?](https://blog.apify.com/what-are-ai-agents/)
604
- - [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/)
605
479
  - [How to use MCP with Apify Actors](https://blog.apify.com/how-to-use-mcp/)
606
- - [Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client)
607
- - [Webinar: Building and Monetizing MCP Servers on Apify](https://www.youtube.com/watch?v=w3AH3jIrXXo)
608
- - [How to build and monetize an AI agent on Apify](https://blog.apify.com/how-to-build-an-ai-agent/)
609
- - [Connect Apify MCP with Claude Desktop](https://docs.apify.com/platform/integrations/claude-desktop)
610
- - [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)