Skip to main content
Glama
ZDOSt
by ZDOSt

Частный шлюз поиска

Этот проект представляет собой детерминированный, самостоятельно размещаемый серверный компонент для поиска и извлечения страниц, предназначенный для внешних интерфейсов ИИ. Он предоставляет конечную точку поиска, совместимую с SearXNG, обнаруживает источники с помощью небольшого набора поисковых систем, открывает наиболее релевантные страницы, извлекает их фактическое содержимое, следует по ограниченному числу релевантных ссылок в пределах того же сайта, повторно ранжирует доказательства локально и возвращает процитированные URL-адреса источников и текст, полученный со страниц.

Он не использует платный поисковый API или внутреннюю языковую модель. Модель внешнего интерфейса получает извлеченные доказательства и составляет ответ. Это обеспечивает конфиденциальность, предсказуемость и пригодность сервиса для любого внешнего интерфейса, который принимает пользовательский SearXNG или JSON-провайдер поиска.

Что работает

  • search-gateway: единственный сервис, обращенный к клиенту, на внутреннем порту 8080

  • searxng: поиск по вебу, техническим темам, новостям, изображениям и исследованиям

  • reranker: локальное ранжирование релевантности BAAI/bge-reranker-base

  • crawl4ai: обход сайтов с поддержкой JavaScript для сложных страниц

  • web-runner: изолированное управление Crawl4AI и Playwright через Unix-сокет

  • pdf-runner: изолированное от сети извлечение PDF

  • safe-egress: блокировка назначений частных сетей и метаданных для браузеров

  • redis: кэш ответов и запасной вариант при устаревших результатах

Стек не публикует порты хоста. Внешний интерфейс обращается к нему через общую сеть Docker по адресу:

http://search-gateway:8080/search

Каждый контейнер, подключенный к этой общей сети, может вызывать шлюз. Используйте выделенную общую сеть, если другие не связанные контейнеры не должны иметь доступа.

Related MCP server: wigolo

Требования

  • 64-битный Linux VPS

  • Docker Engine и Docker Compose v2.24.4 или новее

  • Около 10 ГБ свободного места на диске для образов, Chromium и модели ранжировщика

  • 16 ГБ ОЗУ рекомендуется для полного стека

Указанные лимиты в сумме составляют около 10,5 ГБ, не считая разделяемой памяти и обычных накладных расходов Docker. Это лимиты, а не резервирования, но при этом оставляют полезный запас на хосте с 16 ГБ. Первая сборка выполняется медленно, так как загружает Chromium, образ Crawl4AI и модель ранжировщика.

Чистая установка

Создайте сеть Docker один раз, если она еще не существует:

docker network inspect docker-stacks_app-network >/dev/null 2>&1 || \
  docker network create docker-stacks_app-network

Клонируйте и настройте проект:

git clone https://github.com/ZDOSt/Research-MCP.git
cd Research-MCP
cp .env.example .env
chmod 600 .env

Сгенерируйте два разных секрета:

openssl rand -hex 32
openssl rand -hex 32

Отредактируйте .env и замените SEARXNG_SECRET и CRAWL4AI_API_TOKEN этими значениями. Измените CLIENT_DOCKER_NETWORK только в том случае, если ваш внешний интерфейс использует другую внешнюю сеть Docker.

Проверьте и запустите полный стек:

docker compose config --quiet
docker compose up -d --build --wait
docker compose ps

Записи ports: не нужны. Не добавляйте их, если вы намеренно не хотите открыть шлюз за пределами Docker.

Проверка

Выполните проверку работоспособности из контейнера шлюза:

docker compose exec -T search-gateway python -c \
  "import urllib.request; print(urllib.request.urlopen('http://127.0.0.1:8080/healthz').read().decode())"

Выполните реальный поиск из любого контейнера в общей сети. Замените your-frontend-container на anythingllm, librechat или другое имя контейнера:

docker exec your-frontend-container sh -lc \
  "wget -qO- 'http://search-gateway:8080/search?q=how+to+install+docker+compose&format=json' | head -c 1000"

Ответ должен содержать results, URL-адреса источников, извлеченное content и диагностику. Сниппеты поиска используются только как четко обозначенный запасной вариант, если сайт блокирует извлечение или достигнут срок запроса.

Настройка внешнего интерфейса

Используйте следующий базовый URL везде, где внешний интерфейс запрашивает URL SearXNG:

http://search-gateway:8080

Если он запрашивает полный путь поиска, используйте:

http://search-gateway:8080/search

AnythingLLM требует полный путь поиска, даже если его поле называется SearXNG API Base URL. Настройте его как:

http://search-gateway:8080/search

Стандартный запрос:

GET /search?q=your+question&format=json

Поддерживаемые параметры запроса включают:

  • language=auto

  • time_range=day|week|month|year

  • categories=general,it,news,science,images

  • max_results=1..8

  • mode=auto|quick|balanced|deep

Если категория не указана, шлюз определяет полезные категории SearXNG на основе запроса. auto использует быстрый режим для простых запросов и сбалансированный режим для технических вопросов и рекомендаций.

Для прямых интеграций также доступна более богатая конечная точка JSON:

POST /v1/research
Content-Type: application/json

{
  "query": "What are the recommended settings for an AW3426DW?",
  "mode": "balanced",
  "max_results": 5,
  "language": "auto",
  "categories": []
}

Обновление

Из каталога репозитория на VPS:

git pull --ff-only
docker compose config --quiet
docker compose up -d --build --remove-orphans --wait
docker compose ps

Вам не нужно выполнять docker compose down для обычного обновления. Существующий кэш Redis и загрузки ранжировщика остаются в именованных томах.

Эксплуатация

Полезные команды:

docker compose ps
docker compose logs --tail=200 search-gateway searxng reranker
docker compose logs --tail=200 crawl4ai web-runner safe-egress pdf-runner
docker compose restart search-gateway
docker compose down
docker compose up -d --wait

docker compose down сохраняет именованные тома. docker compose down -v удаляет кэш и загруженную модель ранжировщика и должен использоваться только для преднамеренного полного сброса.

Ограничения

Это может приблизиться к размещенным поисковым инструментам для документации, устранения неполадок, настроек продуктов, игр, текущей информации и общих исследований, но не может гарантировать такое же покрытие, как коммерческие провайдеры. Поисковые системы без ключей могут ограничивать скорость IP-адресов дата-центров, некоторые сайты блокируют все автоматизированные браузеры, и ни один отдельный VPS не имеет проприетарных поисковых индексов, используемых Google, Brave или платными поисковыми системами. Шлюз компенсирует это несколькими провайдерами обнаружения, параллельным извлечением, локальным ранжированием, ограниченными запасными вариантами браузера, кэшированием и честными частичными результатами, вместо того чтобы выдумывать ответ.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    Not graded
    maintenance
    Provides advanced Google Custom Search functionality, web content extraction, and specialized research tools such as search analytics, multi-site search, and fact checking. Works as an MCP server compatible with any MCP client.
    10
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides local-first web intelligence over MCP with tools for search, fetch, crawl, extract, cache, find-similar, research, and autonomous agent loops, requiring no API keys.
    10
    904
    4,637
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Zero-auth multi-source research MCP server that enables web search, reading URLs, PDFs, GitHub repos, and querying Hacker News, Stack Overflow, Semantic Scholar, and YouTube transcripts without API keys.
    10
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables deep research tasks using a multi-agent architecture that integrates any LLM and MCP tools. Available via MCP stdio, streamable HTTP, and SSE transports.
    17
    MIT

View all related MCP servers

Related MCP Connectors

  • AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.

  • Stealth web browser for agents: search, fetch, click and type through persistent sessions over MCP.

  • Turn a GitHub repo or docs site into agent-ready context: pack it or search it, over MCP.

View all MCP Connectors

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/ZDOSt/Research-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server