-
Notifications
You must be signed in to change notification settings - Fork 135
docs: update mcp.md #1583
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
docs: update mcp.md #1583
Changes from 14 commits
Commits
Show all changes
39 commits
Select commit
Hold shift + click to select a range
b03e5ca
Update mcp.md
vystrcild be76c13
Update sources/platform/integrations/ai/mcp.md
vystrcild 92217c7
Update sources/platform/integrations/ai/mcp.md
vystrcild be821af
Update sources/platform/integrations/ai/mcp.md
vystrcild a99eb47
Update sources/platform/integrations/ai/mcp.md
vystrcild 1207230
Update sources/platform/integrations/ai/mcp.md
vystrcild 672d703
Update sources/platform/integrations/ai/mcp.md
vystrcild 4d3d304
Update sources/platform/integrations/ai/mcp.md
vystrcild 36d3624
Update sources/platform/integrations/ai/mcp.md
vystrcild 8a834b0
Update sources/platform/integrations/ai/mcp.md
vystrcild 0340669
Update sources/platform/integrations/ai/mcp.md
vystrcild 0ce013f
Update mcp.md
vystrcild 9540863
Added images to MCP docs
d061f36
Added info about SSE
f17955b
fix: lint
jirispilka 3ee3b25
Update mcp.md
vystrcild 9e7c370
Update mcp.md
vystrcild 75ef6f9
Update sources/platform/integrations/ai/mcp.md
vystrcild adcb648
Update mcp.md
vystrcild 9426d97
Update sources/platform/integrations/ai/mcp.md
vystrcild e78dcbd
Update mcp.md
vystrcild 56cf225
Update mcp.md
vystrcild a10461f
Update mcp.md
vystrcild 11a5425
Update mcp.md
vystrcild b374ff6
Update mcp.md
vystrcild e3b68bf
Update mcp.md
vystrcild a69a0c0
Update mcp.md
vystrcild aea0a5c
Update mcp.md
vystrcild 52f0647
Update mcp.md
vystrcild 2e17507
Update mcp.md
vystrcild b1c05b9
Update mcp.md
vystrcild d6b5c77
Update mcp.md
vystrcild d02475e
Update mcp.md
vystrcild 75d2d51
Update mcp.md
vystrcild d758259
Update mcp.md
vystrcild 6310733
Update sources/platform/integrations/ai/mcp.md
vystrcild 1ec3534
Update sources/platform/integrations/ai/mcp.md
vystrcild 5fd1ee1
Update sources/platform/integrations/ai/mcp.md
vystrcild 34d3a18
Update sources/platform/integrations/ai/mcp.md
vystrcild File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -8,33 +8,35 @@ slug: /integrations/mcp | |||||
|
|
||||||
| <!-- markdownlint-disable MD024 --> | ||||||
|
|
||||||
| The _Apify Model Context Protocol (MCP) Server_ allows AI agents and frameworks to tap into Apify’s extensive library of Actors as tools. It acts as a bridge between AI systems (like Anthropic’s Claude or other MCP-compatible clients) and Apify Actors, enabling agents to perform web scraping, data extraction, or other automation tasks using Actors in real time. | ||||||
| The _Apify Model Context Protocol (MCP) Server_ allows AI applications to connect to Apify’s extensive library of Actors as tools to perform web scraping, data extraction, or other automation tasks in real time. | ||||||
|
|
||||||
|  | ||||||
|
|
||||||
| ## How to use | ||||||
| ## Quickstart | ||||||
|
|
||||||
| You can use the Apify MCP Server in three ways: | ||||||
| You can use the Apify MCP Server in two ways: | ||||||
|
|
||||||
| - Standard Input/Output (stdio) which is useful for local integrations and command-line tools (e.g. Claude desktop) | ||||||
| - Use [mcp.apify.com](https://mcp.apify.com) by connecting your MCP client with `Authorization: Bearer <APIFY_TOKEN>` header | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
|
|
||||||
| _(You could also use legacy option by running [Apify Actors MCP Server](https://apify.com/apify/actors-mcp-server) as Actor.)_ | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
|
|
||||||
| - Local STDIO transport with desktop client (e.g. Claude Desktop) | ||||||
| - Run [Apify Actors MCP Server](https://apify.com/apify/actors-mcp-server) as Actor | ||||||
| - Use [mcp.apify.com](https://mcp.apify.com) with both legacy SSE on `/sse` and streamable transport in `/` | ||||||
|
|
||||||
| ## Prerequisites | ||||||
|
|
||||||
| Before you start, make sure you have the following: | ||||||
|
|
||||||
| 1. _An Apify account:_ Sign up for a free Apify account if you don’t have one. | ||||||
| 1. _Apify API Token:_ Get your personal API token from the **Integrations** section in [Apify Console](https://console.apify.com/account#/integrations). This token will be used to authorize the MCP server to run Actors on your behalf. | ||||||
| 1. _MCP Client:_ You will also need an AI agent or client that supports MCP. This could be Anthropic Claude (Desktop edition), a VS Code extension with MCP support, Apify’s web-based Tester MCP Client, or any custom client implementation. See supported MCP clients in [official documentation](https://modelcontextprotocol.io/clients). | ||||||
| 1. _MCP client:_ You will also need an AI agent or client that supports MCP. This could be Anthropic Claude desktop, a VS Code extension with MCP support, Apify’s web-based Tester MCP Client, or any custom client implementation. See supported MCP clients in [official documentation](https://modelcontextprotocol.io/clients). | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
|
|
||||||
| ## Example Usage (Local STDIO with Claude Desktop) | ||||||
| ## Example usage (local stdio with Claude desktop) | ||||||
|
|
||||||
| While you can interact with the MCP server using raw API calls or cURL, in practice you’ll often use an AI assistant interface. Let’s walk through an example of using Claude Desktop with the Apify MCP Server: | ||||||
| Let’s walk through an example of using Claude desktop with the Apify MCP Server: | ||||||
|
|
||||||
| 1. _Configure Claude Desktop:_ Claude Desktop supports MCP servers via the **Developer Mode** configuration. You need to add an entry for the Apify MCP server. For instance, in Claude’s config file, under `mcpServers`, add an entry like: | ||||||
| 1. _Configure Claude desktop:_ Claude desktop supports MCP servers via the **Developer settings**. You need to add an entry for the Apify MCP server. For instance, in Claude’s config file, under `mcpServers`, add an entry like: | ||||||
|
|
||||||
| ```json | ||||||
| ```json | ||||||
| { | ||||||
| "mcpServers": { | ||||||
| "actors-mcp-server": { | ||||||
|
|
@@ -46,21 +48,15 @@ While you can interact with the MCP server using raw API calls or cURL, in pract | |||||
| } | ||||||
| } | ||||||
| } | ||||||
| ``` | ||||||
|
|
||||||
| This tells Claude to spawn the Apify MCP Server (via the NPM package) with your API token. (On first run, it will download the package automatically.) | ||||||
| ``` | ||||||
|
|
||||||
| 1. _Launch Claude and connect:_ After updating the config, restart Claude Desktop. If successful, Claude will show a “plugin” (often indicated by a plug icon 🔌) signifying it connected to the Apify Actors MCP server. | ||||||
| This tells Claude to spawn the Apify MCP Server (via the [Actors MCP Server](https://www.npmjs.com/package/@apify/actors-mcp-server) NPM package with your API token (on the first run, it will download the package automatically). | ||||||
|
|
||||||
| 1. _Use the Actors in conversation:_ Now you can chat with Claude and ask it to use Apify Actors. For example, you might ask: _“What Apify Actors can I use?”_ Claude (through the MCP server) will list tools (Actors) available. If none are pre-loaded beyond the defaults, it might show a few default ones or instruct how to discover more. You can then ask something like: _“Use the Instagram Scraper to get the latest posts from NASA’s profile.”_ Claude will internally call the `apify/instagram-scraper` Actor via the MCP server and stream the results back to you, perhaps summarizing the output. | ||||||
| 1. _Launch Claude and connect:_ After updating the config, restart Claude desktop. If successful, Claude will show a “plugin” (often indicated by a plug icon 🔌) signifying it connected to the Apify Actors MCP server. | ||||||
|
|
||||||
| Behind the scenes, Claude didn’t need to know the details of Apify’s API or Actors — it relied on the MCP server to handle tool execution. You, as the user, just see the answer or result in the chat. | ||||||
| 1. _Use the Actors in conversation:_ You can chat with Claude and ask it to use Apify Actors. For example: _“What Apify Actors can I use?”_ Claude will list available tools via the MCP server. If none are pre-loaded, it may show defaults or guide you to find more. Then you can say: _“Use the Instagram Scraper to get NASA’s latest posts,”_ and Claude will run the apify/instagram-scraper Actor and return the results. | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
|
|
||||||
| 1. **Dynamic tool loading:** If you ask for something that requires a tool not initially present, Claude can invoke the discovery mechanism. For instance, _“Find an Actor that scrapes Google Search and use it to search for ‘climate change news’.”_ Claude can call `search-actors` (to find a Google Search scraper), then `add-actor` (to add it), and then call it — all within one conversation. The result will then be presented. | ||||||
|
|
||||||
| This example shows how an AI assistant can leverage Apify Actors through MCP in a conversational way. The key is that once the client (Claude) is configured, you can use natural language to trigger complex workflows on Apify. | ||||||
|
|
||||||
| _(If you prefer not to set up Claude Desktop, you can achieve a similar result using [Apify’s Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client), which provides a web UI to test the MCP server.)_ | ||||||
| _(If you prefer not to set up Claude desktop, you can achieve a similar result using [Apify’s Tester MCP Client](https://apify.com/jiri.spilka/tester-mcp-client), which provides a web UI to test the MCP server.)_ | ||||||
|
|
||||||
|  | ||||||
|
|
||||||
|
|
@@ -86,11 +82,10 @@ In the client settings, you need to provide server configuration: | |||||
|
|
||||||
| ## Adding Multiple Actors | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||
|
|
||||||
| By default, the main Actors MCP Server starts with a **default set of Actors** (currently a few popular ones like Instagram Scraper, RAG Web Browser, etc.). However, you can customize which Actors are available: | ||||||
| By default, the main Actors MCP Server starts with a single default Actor: [RAG Web Browser](https://apify.com/apify/rag-web-browser). However, you can fully customize which Actors are available: | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
|
|
||||||
| - **Via Actor Task (on Apify platform):** If you are running the MCP server as an Apify Actor (instead of via NPM), you can create a Task for the `apify/actors-mcp-server` Actor with a custom input specifying the Actors you want. This input would include an array of actor IDs or names. Running that Task (in Standby mode) will launch the MCP server with your chosen Actors instead of the defaults. This is useful if you always want a certain subset of tools and don’t need full dynamic discovery. | ||||||
| - **Dynamic adding during a session:** If your client supports it, the agent itself can add Actors dynamically by name (using the `add-actor` operation) at runtime. For example, after using `search-actors` to find an Actor’s name, calling `add-actor` with that name will load it. Note that not all MCP client frameworks allow dynamic tool addition at runtime, but Apify’s own tester client does (when `enableActorAutoLoading` in Actors MCP Server is true). | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| - **Via config file (for Claude Desktop):** When using Claude Desktop, you can specify which Actors should be immediately available by configuring your `mcpServers` settings. Add the Actors as a comma-separated list in the `--actors` parameter, as shown in the example below. This pre-loads your selected tools without requiring discovery during conversations, ideal for workflows with predictable tool needs. | ||||||
| - **Via config file (for Claude desktop):** When using Claude desktop, you can specify which Actors should be immediately available by configuring your `mcpServers` settings. Add the Actors as a comma-separated list in the `--actors` parameter, as shown in the example below. This pre-loads your selected tools without requiring discovery during conversations, ideal for workflows with predictable tool needs. | ||||||
|
|
||||||
| ```json | ||||||
| { | ||||||
|
|
@@ -121,19 +116,12 @@ One of the powerful features of MCP with Apify is **dynamic actor tooling** – | |||||
| - **`add-actor`:** Add a tool, Actor or MCP-Server to available tools by Actor ID or Actor name. A tool is an Actor or MCP-Server that can be called by the userDo not execute the tool, only add it and list it in available tools. For example, add a tool with username/name when user wants to scrape data from a website. | ||||||
vystrcild marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||||||
| - **`remove-actor`:** Remove a tool, an Actor or MCP-Server by name from available tools. For example, when user says, I do not need a tool username/name anymore | ||||||
|
|
||||||
| :::tip Dynamic tool loading | ||||||
|
|
||||||
| Not all AI agent frameworks fully support these dynamic operations. Some require that the tool list is fixed at the start of the session. The Apify MCP Server will send notifications (via the MCP protocol) when the tool list changes, but it’s up to the client to handle that. Apify’s Tester MCP Client can handle this (allowing truly dynamic tool loading in a conversation), whereas something like Claude might not dynamically update its UI to show new tools (Claude’s design expects a fixed set of tools per session). In practice, with Claude you can still use `search-actors` to decide on a tool and then directly call it by name (even if it wasn’t in the initial list) if you use the `enableAddingActors=true` mode (which the Apify client uses by default). This essentially lets the server accept tool calls to Actors not originally in the list, simplifying dynamic usage. | ||||||
|
|
||||||
| ::: | ||||||
|
|
||||||
| ## Troubleshooting | ||||||
|
|
||||||
| - _Authorization (API Token):_ If the MCP server isn’t executing Actors, ensure you provided a correct Apify API token. Without a valid `APIFY_TOKEN`, the server cannot start Actor runs. Always set the `APIFY_TOKEN` environment variable when running locally. | ||||||
| - _Connection issues (Claude Desktop SSE):_ Claude Desktop (free version) may occasionally drop SSE connections. If you see it disconnect frequently, it’s likely not an issue with Apify but with Claude’s SSE handling. In such cases, using the Stdio integration (as configured in Developer Mode) is recommended (Claude will handle restarts of the process if needed). | ||||||
| - _Ensure latest version:_ If running via NPM, always use the latest version of `@apify/actors-mcp-server` for the newest features and fixes. You can append `@latest` when installing or in your config args to ensure this. | ||||||
| - _Node.js environment:_ If running the server locally, make sure Node.js is installed and up to date (`node -v`). The MCP server requires Node.js v18+. | ||||||
| - _No response or long delay:_ Keep in mind that when an Actor tool is called, it may take some time to complete (depending on the task). The MCP client should stream intermediate results if possible. If nothing is coming back, check the Actor’s logs on Apify — the Actor might be waiting on a long operation or input. Using smaller input (e.g., limiting results with parameters like `maxResults=1`) is a good practice for quick responses, as noted in our guidelines. | ||||||
| - _No response or long delay:_ Keep in mind that when an Actor tool is called, it may take some time to complete (depending on the task). If nothing is coming back, check the Actor’s logs in Apify console — the Actor might be waiting on a long operation or input. | ||||||
|
|
||||||
| ## Learn more | ||||||
|
|
||||||
|
|
||||||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.