MCP-сервер для поиска DuckDuckGo
👁 PyPI version
👁 PyPI downloads
👁 Python versions
MCP-сервер (Model Context Protocol), предоставляющий возможности веб-поиска через DuckDuckGo, с дополнительными функциями для получения и парсинга контента.
Быстрый старт
uvx duckduckgo-mcp-serverRelated MCP server: Duck Duck MCP
Функции
Веб-поиск: Поиск в DuckDuckGo с расширенным ограничением частоты запросов (rate limiting) и форматированием результатов
Получение контента: Извлечение и парсинг содержимого веб-страниц с интеллектуальным выделением текста
Ограничение частоты запросов: Встроенная защита от превышения лимитов как для поиска, так и для получения контента
Обработка ошибок: Комплексная обработка ошибок и ведение логов
Вывод, оптимизированный для LLM: Результаты отформатированы специально для использования большими языковыми моделями
Установка
Установите из PyPI с помощью uv:
uv pip install duckduckgo-mcp-serverИспользование
Запуск с Claude Desktop
Скачайте Claude Desktop
Создайте или отредактируйте конфигурацию Claude Desktop:
В macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonВ Windows:
%APPDATA%\Claude\claude_desktop_config.json
Добавьте следующую конфигурацию:
Базовая конфигурация (без SafeSearch, без региона по умолчанию):
{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"]
}
}
}С конфигурацией SafeSearch и региона:
{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"],
"env": {
"DDG_SAFE_SEARCH": "STRICT",
"DDG_REGION": "cn-zh"
}
}
}
}Параметры конфигурации:
DDG_SAFE_SEARCH: Уровень фильтрации SafeSearch (опционально)STRICT: Максимальная фильтрация контента (kp=1)MODERATE: Сбалансированная фильтрация (kp=-1, значение по умолчанию, если не указано)OFF: Без фильтрации контента (kp=-2)
DDG_REGION: Код региона/языка по умолчанию (опционально, примеры ниже)us-en: США (английский)cn-zh: Китай (китайский)jp-ja: Япония (японский)wt-wt: Без конкретного регионаОставьте пустым для использования поведения DuckDuckGo по умолчанию
Перезапустите Claude Desktop
Запуск с Claude Code
Скачайте Claude Code
Убедитесь, что
uvenvустановлен и командаuvxдоступнаДобавьте MCP-сервер:
claude mcp add ddg-search uvx duckduckgo-mcp-server
Запуск с SSE или Streamable HTTP
Сервер поддерживает альтернативные транспорты для использования с другими MCP-клиентами:
# SSE transport
uvx duckduckgo-mcp-server --transport sse
# Streamable HTTP transport
uvx duckduckgo-mcp-server --transport streamable-httpТранспортом по умолчанию является stdio, который используется в Claude Desktop и Claude Code.
При запуске с sse или streamable-http переопределите адрес привязки по умолчанию (127.0.0.1:8000) с помощью флагов --host и --port:
uvx duckduckgo-mcp-server --transport streamable-http --host 0.0.0.0 --port 7070Бэкенд получения данных (обход защиты от ботов)
Некоторые сайты блокируют стандартный клиент httpx из-за его характерного TLS-отпечатка, независимо от User-Agent — системы управления ботами Cloudflare и аналогичные фильтры ориентируются на рукопожатие JA3/TLS, а не на заголовки. Опциональный бэкенд curl (реализованный через curl_cffi) имитирует рукопожатие TLS реального браузера Chrome и проходит через эти проверки.
Установка:
# Default install (httpx only)
uv pip install duckduckgo-mcp-server
# With the optional browser backend
uv pip install "duckduckgo-mcp-server[browser]"Параметры бэкенда:
Значение | Поведение | Требует |
| Легковесный асинхронный HTTP. По умолчанию. Работает на большинстве сайтов. | нет |
| Использует | да |
| Сначала пробует | да |
Два способа настройки бэкенда:
Глобальный параметр сервера через флаг CLI
--fetch-backend(применяется к каждому вызовуfetch_content):# Default behavior — uses httpx uvx duckduckgo-mcp-server # Force curl for every fetch (requires the [browser] extra) uvx --with "duckduckgo-mcp-server[browser]" duckduckgo-mcp-server --fetch-backend curl # Try httpx first, fall back to curl on 403 / Cloudflare challenge uvx --with "duckduckgo-mcp-server[browser]" duckduckgo-mcp-server --fetch-backend autoПереопределение для конкретного вызова через аргумент
backendв инструментеfetch_content(переопределяет значение по умолчанию для этого конкретного вызова). Инструмент предоставляетbackendв своей схеме ввода, поэтому MCP-клиент может выбирать"httpx","curl"или"auto"для каждого запроса отдельно.
Инструмент search всегда использует httpx — поисковая конечная точка DuckDuckGo не требует имитации.
Значение по умолчанию остается httpx, чтобы пользователи, которым не нужна имитация, не устанавливали лишние зависимости.
Разработка
Для локальной разработки:
# Install dependencies
uv sync
# Run with the MCP Inspector
mcp dev src/duckduckgo_mcp_server/server.py
# Install locally for testing with Claude Desktop
mcp install src/duckduckgo_mcp_server/server.py
# Run all tests
uv run python -m pytest src/duckduckgo_mcp_server/ -v
# Run only unit tests
uv run python -m pytest src/duckduckgo_mcp_server/test_server.py -v
# Run only e2e tests
uv run python -m pytest src/duckduckgo_mcp_server/test_e2e.py -vДоступные инструменты
1. Инструмент поиска (Search Tool)
async def search(query: str, max_results: int = 10, region: str = "") -> strВыполняет веб-поиск в DuckDuckGo и возвращает отформатированные результаты.
Параметры:
query: Поисковый запросmax_results: Максимальное количество результатов (по умолчанию: 10)region: (Опционально) Код региона/языка для переопределения значения по умолчанию. Оставьте пустым для использования настроенного региона по умолчанию.
Примеры кодов регионов:
us-en: США (английский)cn-zh: Китай (китайский)jp-ja: Япония (японский)de-de: Германия (немецкий)fr-fr: Франция (французский)wt-wt: Без конкретного региона
Возвращает: Отформатированную строку, содержащую результаты поиска с заголовками, URL-адресами и фрагментами текста.
Пример использования:
Поиск с настройками по умолчанию:
search("python tutorial")Поиск с указанием региона:
search("latest news", region="jp-ja")для новостей на японском
2. Инструмент получения контента (Content Fetching Tool)
async def fetch_content(
url: str,
start_index: int = 0,
max_length: int = 8000,
backend: Optional[str] = None,
) -> strПолучает и парсит контент с веб-страницы.
Параметры:
url: URL веб-страницы для получения контентаstart_index: Смещение символа, с которого нужно начать чтение (для пагинации)max_length: Максимальное количество возвращаемых символовbackend: Опциональное переопределение бэкенда получения данных для конкретного вызова ("httpx","curl"или"auto"). Если не указано, используется значение, установленное через--fetch-backendпри запуске сервера.
Возвращает: Очищенный и отформатированный текстовый контент с веб-страницы.
Подробности функций
Ограничение частоты запросов (Rate Limiting)
Поиск: ограничено 30 запросами в минуту
Получение контента: ограничено 20 запросами в минуту
Автоматическое управление очередью и временем ожидания
Обработка результатов
Удаление рекламы и нерелевантного контента
Очистка URL-адресов перенаправления DuckDuckGo
Форматирование результатов для оптимального использования LLM
Соответствующее усечение длинного контента
Безопасность контента
Фильтрация SafeSearch: Настраивается при запуске сервера через переменную окружения
DDG_SAFE_SEARCHКонтролируется администраторами, не может быть изменена ИИ-ассистентами
Фильтрует неприемлемый контент на основе выбранного уровня
Использует официальный параметр
kpот DuckDuckGo
Локализация региона:
Регион по умолчанию устанавливается через переменную окружения
DDG_REGIONМожет быть переопределен ИИ-ассистентами для каждого поискового запроса
Улучшает релевантность результатов для конкретных географических регионов
Обработка ошибок
Комплексный перехват и отчетность об ошибках
Подробное логирование через контекст MCP
Плавная деградация при достижении лимитов или тайм-аутах
Участие в разработке
Приветствуются сообщения об ошибках и pull-запросы! Области для потенциального улучшения:
Расширенные опции парсинга контента
Уровень кэширования для часто запрашиваемого контента
Дополнительные стратегии ограничения частоты запросов
Лицензия
Этот проект распространяется под лицензией MIT.
Maintenance
Tools
Appeared in Searches
- An open-source MCP service leveraging large models for innovative problem-solving
- Finding the Best Memory Compression Policies (MCPs) for Optimizing Limited Context Window in Claude Code
- Using Google Search to Generate Answers
- Using Google to search for an answer
- A search engine focused on privacy and minimal tracking
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nickclyde/duckduckgo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
