websearch-mcp
Provides web search through Brave as a fallback search engine in the server's rotation, returning result titles, URLs, and snippets.
Provides web search through DuckDuckGo as part of the server's free search-engine rotation, returning result titles, URLs, and snippets.
Provides web search through Mojeek as a fallback search engine in the server's rotation, returning result titles, URLs, and snippets.
Uses public SearXNG instances as fallback search engines for web search, returning result titles, URLs, and snippets when other engines are blocked or unavailable.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
websearch-mcp
Локальный MCP-сервер веб-поиска. Без ключей, без платных API, без Docker. Работает на Windows, macOS и Linux.
Лицензия: PolyForm Noncommercial 1.0.0 — только для некоммерческого использования, при распространении и форках обязательны сохранение копирайта и текста лицензии. См. LICENSE. Это не open source в смысле OSI.
Ротация бесплатных движков (DuckDuckGo → Mojeek → Brave → публичные SearxNG), чтение страниц в markdown с сохранением блоков кода, обход документации в пределах одного домена.
Установка
Нужны Python 3.12+ и uv.
cd <путь-до-проекта>
uv synclxml даёт ускорение парсинга страниц, но не обязателен: если на вашей
платформе он не установился, сервер сам переключится на чисто питоновский
html.parser.
Related MCP server: web-mcp
Регистрация в Claude Code
Подставьте свой путь к проекту. Примеры для трёх платформ:
Windows (PowerShell):
claude mcp add websearch -- uv run --project C:\path\to\websearch-mcp python -m websearch_mcp.servermacOS / Linux:
claude mcp add websearch -- uv run --project /path/to/websearch-mcp python -m websearch_mcp.serverЕсли в каталоге проекта уже есть .mcp.json, можно просто скопировать
.mcp.json.example в .mcp.json и вписать свой путь — тогда регистрация
не нужна.
Инструменты MCP
Инструмент | Что делает |
| Поиск по вебу: заголовок, URL, сниппет |
| Страница чистым markdown |
| Обход документации в пределах домена |
| Поиск + чтение топов одним вызовом |
| Статистика и очистка кэша |
Команды CLI
websearch search "httpx timeout config"
websearch fetch https://example.com/docs
websearch crawl https://example.com/docs --depth 2
websearch read "httpx timeout config" --pages 3
websearch doctor # какие движки живы прямо сейчас
websearch cache stats
websearch cache prune # удалить только протухшее
websearch cache clearОграничения нагрузки
Сервер рассчитан на локальный запуск и не должен ни висеть, ни расти в памяти:
Ограничение | Значение | Зачем |
Бюджет на один поиск | 30 с | цепочка из 7 хостов с backoff могла крутиться ~6 минут |
Размер скачиваемой страницы | 8 MB | BeautifulSoup раздувает HTML в памяти ~20× |
Суммарный объём | 300 тыс. знаков | иначе ответ не влезает в контекст клиента |
Одна страница в markdown | 60 тыс. знаков | то же |
Превысившая лимит страница пропускается с пояснением, а не роняет вызов.
Поведение при блокировке
Сервер определяет блокировку по содержимому ответа (HTTP 202, слова challenge /
unusual traffic, ноль распарсенных результатов), а не по коду ответа. При
блокировке — переход на следующий движок с экспоненциальной паузой и постоянным
набором cookie для каждого движка.
Если все движки отказали или кончился бюджет времени, возвращается честная ошибка с причиной по каждому движку, а не выдуманные результаты.
Кэш
Дисковый, TTL: поиск — 6 часов, страницы — 24 часа. Повторный запрос идёт из
кэша, в сеть не выходит. Протухшие записи вычищаются автоматически раз в
32 записи; вручную — websearch cache prune.
Расположение по платформам:
ОС | Путь |
Windows |
|
macOS |
|
Linux |
|
Точный путь показывает websearch cache stats.
Безопасность
Сервер скачивает URL, которые ему передаёт MCP-клиент. Содержимое чужой страницы — недоверенные данные: страница может содержать инструкции для модели (prompt injection), которые попытаются направить клиента на другой адрес. Поэтому на стороне сервера:
Защита от SSRF. Все загрузки проходят через netguard.validate_url():
заблокированы приватные, loopback, link-local, зарезервированные и
не-глобальные адреса, а также служебные имена (localhost,
metadata.google.internal, 169.254.169.254 и т. п.). Доменное имя
проверяется после резолва, иначе достаточно зарегистрировать
evil.example → 127.0.0.1, чтобы обойти проверку литерала. Обход через
IPv4-mapped IPv6 (::ffff:127.0.0.1) тоже блокируется. Нерезолвимое имя —
блокировка (fail closed).
Известное ограничение: проверка идёт до установки соединения, поэтому
атака через подконтрольный DNS с разными ответами на проверку и на
подключение (TOCTOU) теоретически возможна. Полностью она снимается только
закреплением соединения на проверенном IP, чего httpx не предоставляет.
Для локального однопользовательского сервера остаточный риск приемлем.
Чтение локальной документации. Если вам нужно читать собственные доки на
localhost:3000, задайте WEBSEARCH_ALLOW_LOCAL=1 — это осознанный opt-in,
по умолчанию он выключен. Он разрешает loopback и RFC1918, но не
link-local и не сервисы метаданных облаков: 169.254.169.254 и
metadata.google.internal блокируются всегда, потому что отдают
IAM-креденшелы. Включая флаг, вы принимаете, что вредоносная страница
теоретически сможет направить сервер на ваши локальные сервисы.
Схемы. Разрешены только http и https — file://, gopher:// и
прочее отклоняются.
Не рендерит HTML. Страница конвертируется в markdown; <script>,
<iframe>, <form> и подобное вырезаются до извлечения текста. Сервер
ничего не исполняет и не отображает — он не браузер.
Только локальный запуск. Транспорт — stdio, сеть не слушается, портов нет. Не запускайте этот сервер как общедоступный сервис: у него нет аутентификации, изоляции и лимитов на число вызовов, и он не рассчитан на работу от имени нескольких недоверяющих друг другу пользователей.
Нет ключей и телеметрии. Сервер не хранит секретов, никуда ничего не отправляет кроме самих поисковых запросов и не ведёт статистику. Кэш лежит в пользовательском каталоге и содержит только тексты скачанных страниц.
Что остаётся на вашей стороне: запросы уходят на публичные поисковики, поэтому сами формулировки запросов видны этим сервисам. Не ищите через сервер секреты и не передавайте их в URL.
Тесты
uv run pytestТесты не требуют интернета: сетевые ответы подменяются, резолв DNS — тоже.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Live web search results and web pages as Markdown; page fetches use a residential network.
Web search and any page as LLM-ready Markdown for AI agents. Free keyless tier, no signup.
Web search, URL content extraction to Markdown, site mapping, and recursive web crawler.
Search the web, fetch any URL and map a site as clean, LLM-ready Markdown.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables any MCP client to run keyless multi-engine web searches with RRF fusion, fetch pages and documents as Markdown, and full-text search a local SQLite index. It keeps queries and cached content on the user's machine, degrading gracefully across engine tiers when providers are blocked or rate-limited.8MIT
- AlicenseAqualityBmaintenanceGives AI agents local web search and page reading with no API keys, layering a SearXNG-backed search cache with browser-based fallbacks and returning clean page text from HTML, PDF, JSON, and archived snapshots. Fetches run in Docker alongside the search engine with SSRF protection, egress filtering, and untrusted-content marking so agents can safely retrieve live web data.2MIT
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to search the web through configured providers and crawl pages or entire sites into clean Markdown or JSON, including authenticated crawls, over STDIO or HTTP.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to search the web across configurable providers and crawl single pages or whole sites into clean, deduplicated Markdown or JSON. It runs on your own hardware, requiring no API key with SearXNG, and supports authenticated crawls plus STDIO and HTTP transport.-