multi-scraper-mcp
MCP-сервер как Apify Actor — рабочая эталонная реализация
Это исходный код, стоящий за renzomacar/multi-scraper-mcp, — MCP-сервер, который работает как Apify Actor в режиме Standby и предоставляет 16 инструментов для генерации лидов и веб-скрапинга AI-клиентам, таким как Claude, Cursor и Windsurf.
Он опубликован как эталонная реализация, потому что интересная часть — не список инструментов, а три ошибки транспорта, которые не давали реальным клиентам подключиться, при том что каждый запуск сообщал SUCCEEDED.
Три ошибки, которые исправляет этот код
1. Устаревший идентификатор сессии навсегда заклинивал клиента
Сессии живут в Map в памяти, но запуск в режиме Standby — не один долгоживущий процесс: Apify перезапускает его. Клиент, который переподключается во вторник с Mcp-Session-Id от понедельника, попадает в процесс, который о нём никогда не слышал.
Раньше сервер отвечал 400. В спецификации явно сказано, что ответ должен быть 404:
Сервер МОЖЕТ завершить сессию в любой момент, после чего он ОБЯЗАН отвечать на запросы, содержащие этот идентификатор сессии, кодом HTTP 404 Not Found.
Когда клиент получает HTTP 404 [...], он ОБЯЗАН начать новую сессию, отправив новый
InitializeRequestбез прикреплённого идентификатора сессии.
Путь восстановления клиента привязан к коду состояния. 400 лишает его способности к самовосстановлению. См. sessionGone() в src/main.js.
2. Заголовок Accept отклонял клиентов до того, как выполнялся наш код
Спецификация требует, чтобы клиенты отправляли Accept: application/json, text/event-stream. Некоторые реальные клиенты отправляют только одно из них или вообще ничего, и транспорт отвечает 406 до того, как запрос достигает обработчика, — поэтому в логах ничего нет, а в консоли нет неудачного запуска.
normalizeAccept() всё равно принимает их. Загвоздка: транспорт читает заголовок из req.rawHeaders, поэтому изменение только req.headers ничего не даёт.
3. Медленный инструмент обрывал соединение во время работы
Эти инструменты оборачивают скраперы, которые работают от одной до трёх минут. Без байтов по сети шлюз Standby обрывает соединение. Исправление стримит notifications/message каждые 10 секунд и сбрасывает интервал в finally, чтобы ранний возврат ошибки не мог допустить утечки таймера.
Related MCP server: Kryfto
Честная тарификация
Actor.charge стоит на пути, который реально вернул данные, после того как элементы уже получены, — а не в начале обработчика запроса. Списание по прибытии означает списание за сбои.
Структура
файл | что в нём |
| инициализация Actor, приложение Express, транспорты Streamable HTTP + устаревший SSE, три исправления |
| реестр инструментов: имя, описание, входная схема, целевой Actor |
| определение Actor, входные и выходные схемы |
Запуск
npm install
npm startЗатем направьте MCP-клиент на http://localhost:4321/mcp. На платформе Apify URL в режиме Standby — https://USERNAME--ACTOR-NAME.apify.actor/mcp — обратите внимание на префикс USERNAME--; публикация URL без него делает любое копирование-вставку нерабочим.
Проверка, которую стоит провести
Шесть запросов, по одному на каждый баг, который ушёл в продакшн:
рукопожатие с корректным заголовком
Accept→ 200рукопожатие с
Accept: application/json→ 200 (было 406)рукопожатие без заголовка
Accept→ 200 (было 406)tools/listс неизвестным идентификатором сессии → 404 (было 400)initializeс всё ещё устаревшим идентификатором → 200 (было 400)tools/listна живой сессии → 200, полный список инструментов
Пункты со 2 по 5 были сломаны в production, при этом Actor сообщал о здоровых запусках.
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Web scraping, extraction and search for AI agents. Hosted MCP with workspace API keys.
1Direct access to 60+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.
An MCP for marketers that gives agents tools for SEO, AEO, socials and ads data. Generous free tier; works in Claude, ChatGPT, Cursor and other MCP clients.
Enable language models to perform advanced AI-powered web scraping with enterprise-grade reliabili…
Related MCP Servers
- AlicenseAqualityCmaintenanceAn APAC-native web scraping API for AI agents that provides tools for scraping, crawling, searching, and extracting structured data from websites, directly usable from MCP-compatible clients like Claude Desktop, Cursor, and Windsurf.79 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides 42+ MCP tools for browser automation, web scraping, and search, enabling AI agents like Claude and Cursor to browse, extract data, and run research agents on the live web.9-
- AlicenseAqualityAmaintenanceProvides 27 MCP-native tools for web scraping, crawling, deep research, and autonomous extraction, delivering clean Markdown and structured JSON from any website.31733 npm2MIT
- AlicenseBqualityBmaintenanceMCP server exposing 35 web scraping and SERP tools for general scraping, Google services, e-commerce sites, social media, and search engines. Enables MCP clients like Claude to scrape web pages and search results via natural language.3534 npmMIT