June 28

DuckDuckGo Search MCP: веб-поиск для оупенкод

Зачем это нужно

Оупенкод хорош, но у него есть ограничение — он ничего не знает о мире за пределами того, что заложено в моделях которые ты юзаешь в агенте.

DuckDuckGo Search MCP сервер решает эту проблему: он даёт оупенкод два инструмента — поиск в вебе и загрузку контента со страниц. Теперь агент может сам сходить в поисковик за актуальной информацией.

Чем это отличается от встроенного WebFetch? WebFetch умеет только загружать контент по конкретному URL. Если агент не знает адрес — он бесполезен. А DuckDuckGo Search MCP добавляет поиск: агент сам находит нужные страницы по запросу, а потом может прочитать их через fetch_content. То есть это полноценный веб-сёрфинг, а не просто загрузка по известной ссылке.

Что такое MCP и как это работает

MCP (Model Context Protocol) — стандарт для подключения внешних инструментов к ИИ-ассистентам. Через эмсипи мы даём оупенкод доступ к произвольным действиям: поиск в интернете, чтение файлов, вызов API.

Мы устанавливаем DuckDuckGo эмсипи сервер, регистрируем его в конфиге оупенкод, и агент получает инструменты search и fetch_content. Дальше он сам решает, когда ими воспользоваться.

Установка

1. Устанавливаем uv

uv — менеджер пакетов для Python, через него запускается сервер:

curl -LsSf https://astral.sh/uv/install.sh | sh

После установки перезапустите терминал или добавьте ~/.local/bin в PATH.

2. Регистрация в оупенкод

Добавляем сервер в ~/.config/opencode/opencode.jsonc:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "bb-browser": { ... },
    "markitdown": { ... },
    "ddg-search": {
      "type": "local",
      "command": ["/Users/beaverbloger/.local/bin/uvx", "duckduckgo-mcp-server"],
      "env": {
        "DDG_SAFE_SEARCH": "MODERATE",
        "DDG_REGION": "wt-wt"
      }
    }
  }
}

Параметры окружения:

  • DDG_SAFE_SEARCH — уровень фильтрации контента: STRICT, MODERATE (по умолчанию), OFF
  • DDG_REGION — регион по умолчанию: us-en, ru-ru, wt-wt (без региона) и т.д.

Готово! После перезапуска оупенкод подхватит сервер.

Инструменты

Сервер предоставляет два инструмента:

search(query, max_results=10, region="")

Поиск в DuckDuckGo. Возвращает ссылки с заголовками и сниппетами. Можно указать регион для локализации результатов.

fetch_content(url, start_index=0, max_length=8000)

Загрузка и очистка контента со страницы. Убирает навигацию, шапки, подвалы, скрипты — оставляет чистый текст. Поддерживает пагинацию для длинных страниц.

Проверка

Проверим, как это работает. Прошу оупенкод найти рецепт курута:

Агент вызывает search("как готовить курут рецепт"), находит ссылки и краткие описания.

А теперь попросим узнать погоду в Абзаково:

Работает! Агент сам решил, что ему не хватает данных, сходил в интернет и вернул актуальный ответ.

Как это работает

Когда оупенкоду нужно найти что-то в интернете, он:

  1. Видит, что доступен инструмент search
  2. Формирует поисковый запрос
  3. Получает результаты
  4. Если нужно прочитать конкретную страницу — вызывает fetch_content
  5. Анализирует полученную информацию

Всё прозрачно: агенту не нужно объяснять, как искать — он делает это сам, когда понимает, что ему не хватает знаний.

Особенности

  • Без API-ключей — DuckDuckGo не требует регистрации, всё бесплатно
  • Rate limiting — 30 запросов в минуту для поиска, 20 для загрузки контента
  • SafeSearch — настраиваемая фильтрация контента
  • Регионы — можно локализовать поиск под нужную страну

Итого

DuckDuckGo Search эмсипи — простой способ дать оупенкод доступ к веб-поиску. Без регистраций, без API-ключей, без смс. Поставил за минуту — и агент сам ходит в интернет за актуальной информацией.