Проблема платного WebSearch в Claude Code
Claude Code от Anthropic предлагает встроенный модуль WebSearch, позволяющий выполнять запросы к внешним источникам в рамках генерации кода. Несмотря на удобство, каждый запрос обходится в $0.01, а при активном использовании система быстро достигает ограничений — сообщения «Rate limit reached» появляются даже при наличии подписки за $200 в месяц. Кроме того, все запросы передаются на серверы Anthropic, что повышает задержки и создает потенциальный риск утечки конфиденциальных данных. Для разработчиков, работающих с закрытыми репозиториями или корпоративными проектами, такой сценарий часто неприемлем.
SearXNG как бесплатная альтернатива
SearXNG — это открытый метапоисковый движок, способный агрегировать результаты из десятков поисковых сервисов (Google, Bing, DuckDuckGo, Wikipedia и др.) и выдавать их в едином формате. По своей природе SearXNG не ограничивает количество запросов, если он развернут локально, и полностью исключает передачу данных наружу. Это делает его идеальным кандидатом для замены платного WebSearch в Claude Code, особенно в средах, где важны конфиденциальность и предсказуемость расходов.
Настройка локального SearXNG
1. Выбор способа развертывания
Самый быстрый путь — использовать Docker. Для этого достаточно создать docker-compose.yml со следующим содержимым:
version: "3.8"
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
restart: unless-stopped
ports:
- "8080:8080"
environment:
- BASE_URL=http://localhost:8080
volumes:
- ./searxng:/etc/searxng
После сохранения файла выполнить:
docker compose up -d
Контейнер поднимется за несколько секунд, и веб‑интерфейс будет доступен по адресу http://localhost:8080.
2. Базовая конфигурация
В директории ./searxng создаётся файл settings.yml. В нём необходимо задать минимум:
use_default_settings: true
search:
safe_search: 0 # отключить SafeSearch, если требуется полный набор результатов
autocomplete: false
languages:
- en
- ru
Для повышения скорости рекомендуется ограничить количество задействованных поисковых бэкендов, оставив только те, которые действительно нужны (например, DuckDuckGo, Bing и Wikipedia). Это делается в секции engines того же файла.
3. Тестирование
Откройте браузер, перейдите на http://localhost:8080, введите запрос и убедитесь, что результаты отображаются корректно. При необходимости скорректируйте список активных движков в settings.yml и перезапустите контейнер (docker compose restart).
Интеграция через MCP (Claude Code Plugin)
Claude Code поддерживает подключение внешних сервисов через механизм MCP (Message Communication Protocol). Для работы с SearXNG необходимо создать три конфигурационных файла в директории проекта Claude Code:
-
mcp_config.json– описание эндпоинта и формата запросов:{ "name": "searxng", "type": "http", "endpoint": "http://localhost:8080/search", "method": "GET", "query_param": "q", "result_path": "$.results" } -
searxng_mapper.py– простая функция, преобразующая полученный JSON в строку, пригодную для дальнейшего анализа Claude:import json def map_response(response: str) -> str: data = json.loads(response) lines = [] for item in data.get('results', []): title = item.get('title') url = item.get('url') snippet = item.get('content') lines.append(f"{title}\n{url}\n{snippet}\n") return "\n".join(lines) -
plugin.yaml– регистрация плагина в Claude Code:name: searxng_search description: Бесплатный веб‑поиск через локальный SearXNG entrypoint: searxng_mapper.map_response mcp: mcp_config.json
После размещения файлов перезапустите Claude Code. При необходимости выполнить запрос к поиску можно, используя встроенный синтаксис:
@searxng_search "как реализовать кеш в Python"
Claude получит результаты от локального SearXNG, обработает их через searxng_mapper и включит в контекст генерации кода.
Преимущества и ограничения
| Параметр | Платный WebSearch (Anthropic) | Локальный SearXNG |
|---|---|---|
| Стоимость | $0.01 за запрос, ограничение по количеству | Бесплатно, без лимитов |
| Задержка | Зависит от сети Anthropic, иногда > 500 мс | Локальная сеть, обычно < 100 мс |
| Конфиденциальность | Данные отправляются в облако | Всё остаётся внутри сети |
| Поддержка поиска | Ограниченный набор источников, фиксированный API | Выбор и кастомизация множества движков |
| Требования к инфраструктуре | Никаких | Docker‑контейнер, минимум 256 МБ RAM |
Главным ограничением локального решения является необходимость поддерживать актуальность списка бэкендов. Некоторые публичные поисковые API могут менять формат ответа или вводить ограничения, требующие периодической правки settings.yml. Кроме того, если в компании применяется строгий контроль доступа к внешним ресурсам, потребуется открыть порт 8080 только для доверенных сервисов.
Практические рекомендации
- Автоматизировать запуск. Добавьте
docker compose up -dв скрипт инициализации среды разработки, чтобы SearXNG всегда был доступен вместе с Claude Code. - Регулярно обновляйте образ. Выполняйте
docker compose pullхотя бы раз в месяц, чтобы получать последние исправления безопасности и новые движки. - Ограничьте список поисковиков. Чем меньше активных бэкендов, тем быстрее отклик и меньше нагрузка на процессор контейнера.
- Логируйте запросы. Включите простую запись запросов в файл (
access.log) внутри контейнера, чтобы отслеживать частоту использования и при необходимости оптимизировать конфигурацию. - Тестируйте на реальных задачах. Пример: поиск примеров API‑запросов, справки по библиотекам, официальной документации. Если результаты удовлетворяют, можно полностью отказаться от платного модуля.
Развёртывание локального SearXNG в сочетании с MCP‑интеграцией предоставляет разработчикам гибкую, безопасную и экономически выгодную альтернативу встроенному WebSearch от Anthropic. Внедрение занимает около десяти минут, требует лишь базовых знаний о Docker и JSON‑обработке, а результат — полностью автономный поисковый сервис без ограничений и скрытых расходов.