olostep-mcp
MCP-сервер Olostep
Docker Hub Версия npm Лицензия: ISC
Реализация сервера Model Context Protocol (MCP), которая интегрируется с Olostep для веб-скрейпинга, извлечения контента и возможностей поиска. Для настройки MCP-сервера Olostep вам понадобится API-ключ. Вы можете получить его, зарегистрировавшись на сайте Olostep.
Возможности
Скрейпинг контента веб-сайтов в форматах HTML, Markdown, JSON или обычного текста (с дополнительными парсерами)
Веб-поиск на основе парсеров со структурированными результатами
AI-ответы с цитатами и опциональным выводом в формате JSON
Пакетный скрейпинг до 10 тыс. URL-адресов
Автономный обход сайтов, начиная с заданного URL
Обнаружение и отображение URL-адресов веб-сайтов (с фильтрами включения/исключения)
Маршрутизация запросов по странам для получения геотаргетированного контента
Настраиваемое время ожидания для сайтов с активным использованием JavaScript
Комплексная обработка ошибок и отчетность
Простая настройка API-ключа
Related MCP server: Parallel Task MCP
Установка
Существует несколько способов подключения к MCP-серверу Olostep. Выберите тот, который лучше всего подходит для вашего рабочего процесса.
☁️ Удаленная конечная точка (рекомендуется)
Самый простой способ — локальная установка не требуется. Подключайтесь напрямую к нашему размещенному MCP-серверу:
https://mcp.olostep.com/mcpАутентификация выполняется через токен Bearer в заголовке Authorization с использованием вашего API-ключа Olostep. Примеры конфигурации см. в разделе Настройка клиента ниже.
🐳 Docker Hub
Скачайте и запустите официальный образ Docker:
docker pull olostep/mcp-server
docker run -i --rm \
-e OLOSTEP_API_KEY="your-api-key" \
olostep/mcp-server🔧 Локальная сборка Docker
Если вы предпочитаете собирать образ самостоятельно из исходного кода:
git clone https://github.com/olostep/olostep-mcp-server.git
cd olostep-mcp-server
npm install
npm run build
docker build -t olostep/mcp-server:local .
docker run -i --rm -e OLOSTEP_API_KEY="your-api-key" olostep/mcp-server:local📦 npx
Запуск без установки с помощью npx:
env OLOSTEP_API_KEY=your-api-key npx -y olostep-mcpВ Windows (PowerShell):
$env:OLOSTEP_API_KEY = "your-api-key"; npx -y olostep-mcpВ Windows (CMD):
set OLOSTEP_API_KEY=your-api-key && npx -y olostep-mcpИли установите глобально:
npm install -g olostep-mcpНастройка клиента
Cursor
Самый простой способ — использовать удаленную конечную точку. Создайте или отредактируйте файл .cursor/mcp.json в корне вашего проекта:
{
"mcpServers": {
"olostep": {
"url": "https://mcp.olostep.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_HERE"
}
}
}
}Альтернатива (локально): Перейдите в Cursor Settings > Features > MCP Servers, нажмите «+ Add New MCP Server»:
Name:
olostepType:
commandCommand:
env OLOSTEP_API_KEY=your-api-key npx -y olostep-mcp
Claude Desktop
Добавьте это в ваш claude_desktop_config.json:
{
"mcpServers": {
"mcp-server-olostep": {
"command": "npx",
"args": ["-y", "olostep-mcp"],
"env": {
"OLOSTEP_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}Альтернатива (Docker):
{
"mcpServers": {
"olostep": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OLOSTEP_API_KEY=YOUR_API_KEY_HERE",
"olostep/mcp-server"
]
}
}
}Или установите через Smithery CLI в терминале вашего устройства:
npx -y @smithery/cli install @olostep/olostep-mcp-server --client claudeClaude Code
Добавьте удаленную конечную точку в конфигурацию MCP Claude Code:
{
"mcpServers": {
"olostep": {
"url": "https://mcp.olostep.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_HERE"
}
}
}
}Альтернатива (локально):
{
"mcpServers": {
"olostep": {
"command": "npx",
"args": ["-y", "olostep-mcp"],
"env": {
"OLOSTEP_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}Windsurf
Добавьте это в ваш ./codeium/windsurf/model_config.json:
{
"mcpServers": {
"olostep": {
"serverUrl": "https://mcp.olostep.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_HERE"
}
}
}
}Альтернатива (локально):
{
"mcpServers": {
"mcp-server-olostep": {
"command": "npx",
"args": ["-y", "olostep-mcp"],
"env": {
"OLOSTEP_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}VS Code
Добавьте это в ваш .vscode/mcp.json:
{
"servers": {
"olostep": {
"type": "http",
"url": "https://mcp.olostep.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY_HERE"
}
}
}
}Альтернатива (локально):
{
"servers": {
"olostep": {
"type": "stdio",
"command": "npx",
"args": ["-y", "olostep-mcp"],
"env": {
"OLOSTEP_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}Metorial
Вариант 1: Установка в один клик (рекомендуется)
Откройте панель управления Metorial
Перейдите в каталог MCP Servers
Найдите "Olostep"
Нажмите "Install" и введите свой API-ключ
Вариант 2: Ручная настройка
Добавьте это в конфигурацию MCP-сервера Metorial:
{
"olostep": {
"command": "npx",
"args": ["-y", "olostep-mcp"],
"env": {
"OLOSTEP_API_KEY": "YOUR_API_KEY_HERE"
}
}
}Инструменты Olostep станут доступны в ваших чатах с ИИ в Metorial.
Конфигурация
Переменные окружения
OLOSTEP_API_KEY: Ваш API-ключ Olostep (обязательно)ORBIT_KEY: Дополнительный ключ для использования Orbit при маршрутизации запросов.
Доступные инструменты
1. Скрейпинг веб-сайта (scrape_website)
Извлечение контента с одного URL. Поддерживает несколько форматов и рендеринг JavaScript.
{
"name": "scrape_website",
"arguments": {
"url_to_scrape": "https://example.com",
"output_format": "markdown",
"country": "US",
"wait_before_scraping": 1000,
"parser": "@olostep/amazon-product"
}
}Параметры:
url_to_scrape: URL веб-сайта, который вы хотите проскрейпить (обязательно)output_format: Выберите формат (html,markdown,jsonилиtext) — по умолчанию:markdowncountry: Дополнительный код страны (например, US, GB, CA) для скрейпинга с учетом местоположенияwait_before_scraping: Время ожидания в миллисекундах перед скрейпингом (0-10000)parser: Дополнительный ID парсера для специализированного извлечения
Ответ (пример):
{
"content": [
{
"type": "text",
"text": "{\n \"id\": \"scrp_...\",\n \"url\": \"https://example.com\",\n \"markdown_content\": \"# ...\",\n \"html_content\": null,\n \"json_content\": null,\n \"text_content\": null,\n \"status\": \"succeeded\",\n \"timestamp\": \"2025-11-14T12:34:56Z\",\n \"screenshot_hosted_url\": null,\n \"page_metadata\": { }\n}"
}
]
}2. Поиск в Интернете (search_web)
Поиск в Интернете по заданному запросу и получение структурированных результатов (не ИИ, на основе парсера).
{
"name": "search_web",
"arguments": {
"query": "your search query",
"country": "US"
}
}Параметры:
query: Поисковый запрос (обязательно)country: Дополнительный код страны для локализованных результатов (по умолчанию:US)
Ответ:
Структурированный JSON (в виде текста), представляющий результаты на основе парсера
3. Ответы (ИИ) (answers)
Поиск в Интернете и получение ответов от ИИ в нужной вам структуре JSON, с источниками и цитатами.
{
"name": "answers",
"arguments": {
"task": "Who are the top 5 competitors to Acme Inc. in the EU?",
"json": "Return a list of the top 5 competitors with name and homepage URL"
}
}Параметры:
task: Вопрос или задача для ответа с использованием веб-данных (обязательно)json: Дополнительная схема/объект JSON или краткое описание желаемой структуры вывода
Ответ включает:
answer_id,object,task,result(JSON, если предоставлен),sources,created
4. Пакетный скрейпинг URL-адресов (batch_scrape_urls)
Скрейпинг до 10 тыс. URL-адресов одновременно. Идеально подходит для крупномасштабного извлечения данных.
{
"name": "batch_scrape_urls",
"arguments": {
"urls_to_scrape": [
{"url": "https://example.com/a", "custom_id": "a"},
{"url": "https://example.com/b", "custom_id": "b"}
],
"output_format": "markdown",
"country": "US",
"wait_before_scraping": 500,
"parser": "@olostep/amazon-product"
}
}Ответ включает:
batch_id,status,total_urls,created_at,formats,country,parser,urls
5. Создание обхода (create_crawl)
Запуск асинхронного обхода, который автономно обнаруживает и скрейпит целые веб-сайты, переходя по ссылкам. Возвращает crawl_id — обход выполняется в фоновом режиме и не возвращает контент в этом ответе. Затем вы должны вызвать get_crawl_results с crawl_id, чтобы опросить статус и получить проскрейпленные страницы (та же схема из двух шагов, что и batch_scrape_urls + get_batch_results).
{
"name": "create_crawl",
"arguments": {
"start_url": "https://example.com/docs",
"max_pages": 25,
"follow_links": true,
"output_format": "markdown",
"country": "US",
"parser": "@olostep/doc-parser"
}
}Ответ включает:
crawl_id,object,status,start_url,max_pages,follow_links,created,formats,country,parser
Сочетайте этот вызов с
get_crawl_results— не передавайтеcrawl_idвget_batch_results(обходы и пакеты — это разные ресурсы).
6. Создание карты (create_map)
Получение всех URL-адресов на веб-сайте. Извлечение всех URL для обнаружения и анализа.
{
"name": "create_map",
"arguments": {
"website_url": "https://example.com",
"search_query": "blog",
"top_n": 200,
"include_url_patterns": ["/blog/**"],
"exclude_url_patterns": ["/admin/**"]
}
}Ответ включает:
map_id,object,url,total_urls,urls,search_query,top_n
7. Получение контента веб-страницы (get_webpage_content)
Извлекает контент веб-страницы в чистом формате markdown с поддержкой рендеринга JavaScript.
{
"name": "get_webpage_content",
"arguments": {
"url_to_scrape": "https://example.com",
"wait_before_scraping": 1000,
"country": "US"
}
}Параметры:
url_to_scrape: URL веб-страницы для скрейпинга (обязательно)wait_before_scraping: Время ожидания в миллисекундах перед началом скрейпинга (по умолчанию: 0)country: Страна проживания, из которой выполняется запрос (например, US, CA, GB) (опционально)
Ответ:
{
"content": [
{
"type": "text",
"text": "# Example Website\n\nThis is the markdown content of the webpage..."
}
]
}8. Получение URL-адресов веб-сайта (get_website_urls)
Поиск и получение релевантных URL-адресов с веб-сайта, отсортированных по релевантности вашему запросу.
{
"name": "get_website_urls",
"arguments": {
"url": "https://example.com",
"search_query": "your search term"
}
}Параметры:
url: URL веб-сайта для отображения (обязательно)search_query: Поисковый запрос для сортировки URL-адресов (обязательно)
Ответ:
{
"content": [
{
"type": "text",
"text": "Found 42 URLs matching your query:\n\nhttps://example.com/page1\nhttps://example.com/page2\n..."
}
]
}9. Получение результатов пакета (get_batch_results)
Получение результатов ранее отправленного задания пакетного скрейпинга с использованием его batch_id.
{
"name": "get_batch_results",
"arguments": {
"batch_id": "batch_abc123"
}
}Параметры:
batch_id: ID пакета, возвращенный изbatch_scrape_urls(обязательно)
Ответ включает:
batch_id,status(processingилиcompleted),total_urls,completed_urls,items(массив проскрейпленных результатов для каждого URL сurl,custom_id,markdown_content,html_content,json_content,text_content,status,page_metadata)
10. Получение результатов обхода (get_crawl_results)
Получение статуса и проскрейпленных страниц для асинхронного обхода, запущенного с помощью create_crawl. Это обязательный компаньон для create_crawl — create_crawl только запускает задание и возвращает crawl_id; этот инструмент — способ, которым вы фактически получаете обнаруженные страницы и их контент.
{
"name": "get_crawl_results",
"arguments": {
"crawl_id": "crawl_abc123",
"formats": ["markdown"],
"items_limit": 20,
"cursor": 0
}
}Параметры:
crawl_id: ID обхода, возвращенный изcreate_crawl(обязательно)formats: Массив форматов для получения каждой страницы —markdown,html,json,text(по умолчанию:["markdown"])items_limit: Максимальное количество страниц для получения контента, 1–100 (по умолчанию: 20)cursor: Курсор пагинации для списка обнаруженных страниц (по умолчанию: 0)search_query: Дополнительный фильтр для ранжирования/выбора страниц по релевантности запросу
Ответ включает:
В процессе:
crawl_id,status(in_progress),pages_completed,pages_totalиmessageс предложением повторить вызов примерно через 10 секунд.После завершения:
crawl_id,status(completed),pages_returned,next_cursor,has_moreи массивpages, где каждая запись содержитurl,custom_idи запрошенные поля контента (markdown_content,html_content,json_content,text_content).
Обработка ошибок
Сервер обеспечивает надежную обработку ошибок:
Подробные сообщения об ошибках для проблем с API
Отчеты о сетевых ошибках
Обработка сбоев аутентификации
Информация об ограничении скорости (rate limit)
Пример ответа с ошибкой:
{
"isError": true,
"content": [
{
"type": "text",
"text": "Olostep API Error: 401 Unauthorized. Details: {\"error\":\"Invalid API key\"}"
}
]
}Распространение
Образы Docker
MCP-сервер доступен в виде образа Docker:
Docker Hub:
[olostep/mcp-server](https://hub.docker.com/r/olostep/mcp-server)Официальный реестр Docker MCP:
mcp/olostep(скоро — повышенная безопасность с подписями и SBOM)Реестр контейнеров GitHub:
ghcr.io/olostep/olostep-mcp-server
Docker Desktop MCP Toolkit
MCP-сервер Olostep добавляется в официальный набор инструментов MCP Toolkit для Docker Desktop, что означает, что пользователи смогут:
Обнаруживать его в пользовательском интерфейсе MCP Toolkit в Docker Desktop
Устанавливать его в один клик
Настраивать его визуально
Использовать его с любым MCP-совместимым клиентом (Claude Desktop, Cursor и т. д.)
Статус: Отправка на рассмотрение в Docker MCP Registry
Поддерживаемые платформы
linux/amd64linux/arm64
Локальная сборка
# Clone the repository
git clone https://github.com/olostep/olostep-mcp-server.git
cd olostep-mcp-server
# Build the image
npm install
npm run build
docker build -t olostep/mcp-server .
# Run locally
docker run -i --rm -e OLOSTEP_API_KEY="your-key" olostep/mcp-serverЛицензия
Лицензия ISC
Available Tools
8 toolsanswersAnswersARead-onlyIdempotentInspect
Use this when the user asks a factual question the live web can answer in a sentence or a few fields, such as a company's founding year, a CEO's name or a product's current price. Searches and reads the pages itself and returns the answer with its source URLs, optionally as a flat JSON object of the fields you list in json. For a list of items from one page (latest blog posts, a price table), call scrape_website on that page instead.
Inputs: task (required), json.
batch_scrape_urlsBatch Scrape URLsARead-onlyInspect
Use this when you have a known list of URLs to scrape, such as URLs from a CSV or from search results (up to 100k in one batch). Waits up to wait_for_completion_seconds (default 45) and returns the content if the batch finishes in that time. Larger batches usually take 5-8 min and return a batch_id: get their content with get_batch_results, a set at a time, passing next_cursor for the rest. For one or a few URLs, scrape_website is faster; to discover a site's pages, use create_crawl.
Inputs: urls, parser, country, output_format, +3 more.
create_crawlCreate CrawlARead-onlyInspect
Use this when you need the content of many pages from one website, such as a docs section or a blog: it follows links from a start URL and scrapes each page it finds, up to max_pages. Waits up to wait_for_completion_seconds (default 45) and returns the pages if the crawl finishes in that time; otherwise returns a crawl_id to pass to get_crawl_results (not get_batch_results). For a known list of URLs use batch_scrape_urls; for one page use scrape_website.
Inputs: url, parser, country, max_pages, +3 more.
create_mapCreate MapARead-onlyIdempotentInspect
Use this when you need the list of URLs on a website, not their content: to see a site's pages, find a section, or pick pages to scrape. Can rank URLs by search_query and filter them with glob patterns. Returns URLs only. To get the content of many pages from the site, use create_crawl.
Inputs: url, top_n, website_url, search_query, +2 more.
get_batch_resultsGet Batch ResultsARead-onlyIdempotentInspect
Use this to get the content of a batch started with batch_scrape_urls, using its batch_id. While the batch is in_progress it returns the status: call again in about 10 seconds. Once completed it returns each URL's url, title and content, up to items_limit per call; when has_more is true, pass next_cursor for the rest. Do not start a new batch to check on one that is still running.
Inputs: batch_id (required), cursor, formats, items_limit, +1 more.
get_crawl_resultsGet Crawl ResultsARead-onlyIdempotentInspect
Use this to get the pages of a crawl started with create_crawl, using its crawl_id. While the crawl is in_progress it returns the status: call again in about 10 seconds. Once completed it returns each page's url, title and content, up to items_limit per call; when has_more is true, pass next_cursor for the rest. Do not start a new crawl to check on one that is still running.
Inputs: crawl_id (required), cursor, formats, items_limit, +2 more.
scrape_websiteScrape WebsiteARead-onlyIdempotentInspect
Use this when you have a URL and need what is on the page. Returns the page as clean markdown (default), html or text, with its url and title, after rendering JavaScript. For structured fields, set output_format to "json" with an llm_extract schema or a parser. Long pages are cut at max_characters (default 20,000) with a link to the full text. For many known URLs use batch_scrape_urls; for many pages of one site use create_crawl.
Inputs: url, parser, country, llm_extract, +4 more.
search_webSearch WebARead-onlyIdempotentInspect
Use this when you need web pages on a topic and do not have a URL yet. Returns up to limit results (1-25), each with its URL, title and description. Set scrape_results to true to also get each result page's content as markdown in the same call (each scraped page costs extra credits); otherwise pass the URLs you need to scrape_website, or to batch_scrape_urls for many. Use include_domains to search one site. For a direct factual answer with sources, use answers.
Inputs: query (required), limit, max_characters, scrape_results, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Each tool has a clearly distinct role, and the descriptions explicitly disambiguate near-neighbors (create_map for URLs vs create_crawl for content, batch_scrape_urls vs scrape_website by cardinality, answers vs search_web by intent). The paired async polling tools are also explicitly separated ("pass to get_crawl_results (not get_batch_results)").
Most names follow a verb_noun snake_case pattern (create_map, create_crawl, get_crawl_results, search_web, scrape_website). `answers` breaks the pattern as a bare noun/verb with no object, and `batch_scrape_urls` uses a modifier prefix not seen elsewhere, but overall the convention is readable and predictable.
Eight tools is well within the sweet spot for a web-scraping/extraction server. Every tool earns its place: two discovery methods, two fetch modes, two async result retrievers, search, and direct Q&A, with no redundant entries.
The surface covers the full pipeline: discover (create_map, create_crawl, search_web), fetch (scrape_website, batch_scrape_urls), extract (answers), and retrieve async results with pagination. Minor gaps exist around job lifecycle management (listing or cancelling runs) and no explicit retry/status-check-by-id beyond the two result tools.
Maintenance
Related MCP Connectors
Web search, scraping, crawling, research, a browser agent, and company and people data.
Web scraping, search, crawling, structured extraction and research for AI agents.
Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.
Emails, phones and social links from any list of websites. Pay only for sites with a contact.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables web searching and content scraping through Google Custom Search API. Provides tools to search the internet, extract webpage content, and automatically scrape search results for comprehensive information gathering.3MIT
- -

HasData MCP Serverofficial
AlicenseAqualityBmaintenanceDirect access to 40+ 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.6317MIT
Potarix enricherofficial
AlicenseAqualityDmaintenanceFind contact/websites for any company/person912 npmMIT