Как подключить веб-поиск к ИИ-агенту: MCP и REST на практике
Модель знает мир на момент обучения. Всё, что случилось позже, для неё не существует — а пользователь спрашивает про сегодняшние цены, вчерашний релиз и статью, которую прочитал утром. Разбираем, как дать агенту веб и не утопить его контекст в HTML.
Модель знает мир на момент обучения. Всё, что случилось позже, для неё не существует — а пользователь спрашивает про сегодняшние цены, вчерашний релиз и статью, которую прочитал утром. Разбираем, как дать агенту веб и не утопить его контекст в HTML.
Задача звучит просто: «пусть агент поищет в интернете». На практике она распадается на три разные подзадачи, и путать их дорого. Найти страницы по теме, прочитать конкретную страницу и достать из страницы два-три значения — это три разных инструмента с разной ценой и разным весом в контексте.
Почему одного поиска мало#
Обычный поисковый API отдаёт ссылки и сниппеты. Агенту этого хватает, только если ответ буквально лежит в сниппете. В остальных случаях он пойдёт открывать страницу — и вот тут начинается настоящая работа: HTML современного сайта на 90% состоит из навигации, рекламных блоков, скриптов и разметки. Если отдать это модели как есть, вы платите токенами за меню и футер.
- Поиск — нужны ссылки и факты по теме, когда вы ещё не знаете, где смотреть.
- Чтение — адрес известен, нужен связный текст статьи или документации.
- Извлечение по схеме — нужны 2–5 конкретных значений: цена, автор, дата, список вакансий.
- Исследование — вопрос требует сопоставить несколько источников и сделать вывод.
Правило выбора
Способ первый: MCP-сервер#
Model Context Protocol — стандарт, по которому агент подключает внешние инструменты как встроенные. Вы указываете адрес сервера и ключ, а модель дальше сама решает, когда вызвать поиск и с какими параметрами. Ни писать обвязку, ни описывать схемы инструментов не нужно: сервер отдаёт их сам.
{
"mcpServers": {
"srezai": {
"type": "http",
"url": "https://srezai.ru/api/mcp",
"headers": {
"Authorization": "Bearer srz_live_ВАШ_КЛЮЧ"
}
}
}
}После перезапуска клиента у агента появляются инструменты web_search, image_search, read_url, extract, fetch_page и deep_research. Это способ по умолчанию для Claude Code, Cursor и любого клиента с поддержкой MCP — вся интеграция сводится к пяти строкам конфига.
Способ второй: REST API#
Если агент живёт в вашем коде — в n8n, в LangChain, в самописном цикле на Python — берите REST. Здесь вы сами решаете, когда и что вызывать, и можете кешировать результаты на своей стороне.
import httpx
resp = httpx.post(
"https://srezai.ru/api/v1/search",
headers={"Authorization": "Bearer srz_live_ВАШ_КЛЮЧ"},
json={"query": "свежие релизы Next.js", "num": 5, "excerpts": True},
timeout=60,
)
for item in resp.json()["results"]:
print(item["title"], item["url"])Про excerpts
excerpts добавляет к результатам реальный текст верхних страниц. Запрос идёт на пару секунд дольше, зато часто снимает следующий вызов чтения — агенту уже есть с чем работать.Что выбрать#
| Критерий | MCP | REST |
|---|---|---|
| Скорость подключения | минуты, правка конфига | часы, свой код |
| Кто решает, когда искать | модель | ваш код |
| Контроль над кешем и ретраями | на стороне клиента | полный |
| Где уместнее | Claude Code, Cursor, IDE | n8n, бэкенд, пайплайны |
На практике оба способа живут рядом: MCP — для интерактивной работы в редакторе, REST — для фоновых пайплайнов, где важны предсказуемость и повторяемость. Ключ один и тот же, лимиты и списания общие.
Три ошибки, которые стоят токенов#
- Читать страницу целиком, когда нужна одна цифра. Извлечение по схеме дороже за вызов, но дешевле по итогу: в контекст приходят поля, а не весь документ.
- Запускать глубокое исследование ради одного факта. Оно сопоставляет источники и пишет связный ответ — за единичным значением это стрельба из пушки.
- Не ставить лимит на объём текста. По умолчанию возвращается начало страницы; если нужен весь документ, поднимайте лимит осознанно, а не «на всякий случай».
Хороший инструмент для агента экономит не запросы, а контекст: модель работает тем лучше, чем меньше мусора она вынуждена читать.
Нужен ли отдельный ключ для MCP и REST?
Нет, ключ один. Он создаётся в личном кабинете и работает в обоих случаях; лимиты и списания тоже общие.
Что будет, если страница не читается?
Ответ придёт с кодом ошибки в квадратных скобках. Повторять имеет смысл на временных сбоях — таймаут апстрима, превышение лимита запросов; на ошибке в самом запросе повтор ничего не изменит.
Работает ли это с динамическими сайтами?
Да. Страницы открываются полноценным браузером, JavaScript выполняется на нашей стороне, поэтому SPA читаются так же, как статические страницы.
Ключ создаётся в личном кабинете за минуту, при регистрации начисляется бонус на старт.
Быстрый стартЧастые вопросы
Сколько стоит один поисковый запрос?
Веб-поиск — 1 кредит за вызов независимо от числа результатов. 1 кредит равен 0,10 ₽, оплата по факту без подписки.
Читайте также