Research MCP
Частный шлюз поиска
Этот проект представляет собой детерминированный, самостоятельно размещаемый серверный компонент для поиска и извлечения страниц, предназначенный для внешних интерфейсов ИИ. Он предоставляет конечную точку поиска, совместимую с SearXNG, обнаруживает источники с помощью небольшого набора поисковых систем, открывает наиболее релевантные страницы, извлекает их фактическое содержимое, следует по ограниченному числу релевантных ссылок в пределах того же сайта, повторно ранжирует доказательства локально и возвращает процитированные URL-адреса источников и текст, полученный со страниц.
Он не использует платный поисковый API или внутреннюю языковую модель. Модель внешнего интерфейса получает извлеченные доказательства и составляет ответ. Это обеспечивает конфиденциальность, предсказуемость и пригодность сервиса для любого внешнего интерфейса, который принимает пользовательский SearXNG или JSON-провайдер поиска.
Что работает
search-gateway: единственный сервис, обращенный к клиенту, на внутреннем порту8080searxng: поиск по вебу, техническим темам, новостям, изображениям и исследованиямreranker: локальное ранжирование релевантностиBAAI/bge-reranker-basecrawl4ai: обход сайтов с поддержкой JavaScript для сложных страницweb-runner: изолированное управление Crawl4AI и Playwright через Unix-сокетpdf-runner: изолированное от сети извлечение PDFsafe-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/searchAnythingLLM требует полный путь поиска, даже если его поле называется SearXNG API Base URL. Настройте его как:
http://search-gateway:8080/searchСтандартный запрос:
GET /search?q=your+question&format=jsonПоддерживаемые параметры запроса включают:
language=autotime_range=day|week|month|yearcategories=general,it,news,science,imagesmax_results=1..8mode=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 --waitdocker compose down сохраняет именованные тома. docker compose down -v удаляет кэш и загруженную модель ранжировщика и должен использоваться только для преднамеренного полного сброса.
Ограничения
Это может приблизиться к размещенным поисковым инструментам для документации, устранения неполадок, настроек продуктов, игр, текущей информации и общих исследований, но не может гарантировать такое же покрытие, как коммерческие провайдеры. Поисковые системы без ключей могут ограничивать скорость IP-адресов дата-центров, некоторые сайты блокируют все автоматизированные браузеры, и ни один отдельный VPS не имеет проприетарных поисковых индексов, используемых Google, Brave или платными поисковыми системами. Шлюз компенсирует это несколькими провайдерами обнаружения, параллельным извлечением, локальным ранжированием, ограниченными запасными вариантами браузера, кэшированием и честными частичными результатами, вместо того чтобы выдумывать ответ.
This server cannot be installed
Maintenance
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
- AlicenseBqualityNot gradedmaintenanceProvides 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.10MIT
- AlicenseAqualityAmaintenanceProvides 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.109044,637AGPL 3.0
- AlicenseNot gradedqualityAmaintenanceZero-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.10Apache 2.0
- AlicenseNot gradedqualityCmaintenanceEnables deep research tasks using a multi-agent architecture that integrates any LLM and MCP tools. Available via MCP stdio, streamable HTTP, and SSE transports.17MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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