No description
  • Go 93%
  • Dockerfile 7%
Find a file
2025-11-28 12:06:13 +03:00
config Добавление поддержки chromedb 2025-11-25 10:55:22 +03:00
handler Теперь при вызове функции fetch в зависимости от параметра to_markdown html будет или нет конвертироваться в md 2025-11-28 12:06:13 +03:00
http Добавление метрик для мониторинга в Prometeus 2025-11-25 12:38:11 +03:00
middleware Добавление метрик для мониторинга в Prometeus 2025-11-25 12:38:11 +03:00
.dockerignore Добавление README.md 2025-11-25 09:51:51 +03:00
.gitignore Добавление README.md 2025-11-25 09:51:51 +03:00
.woodpecker.yml first commit 2025-11-24 19:09:56 +03:00
Dockerfile Исправление сборки приложения в контейнере 2025-11-27 09:05:34 +03:00
go.mod Добавление метрик для мониторинга в Prometeus 2025-11-25 12:38:11 +03:00
go.sum Добавление метрик для мониторинга в Prometeus 2025-11-25 12:38:11 +03:00
LICENSE first commit 2025-11-24 19:09:56 +03:00
main.go Исправление описания MCP-сервера 2025-11-27 08:55:57 +03:00
mcp-searxng Добавление метрик для мониторинга в Prometeus 2025-11-25 12:38:11 +03:00
README.md Добавление метрик для мониторинга в Prometeus 2025-11-25 12:38:11 +03:00

MCP SearXNG

MCP (Model Context Protocol) сервер, предоставляющий инструменты для приватного поиска в интернете и извлечения содержимого веб-страниц с использованием SearXNG.

Описание

Этот проект представляет собой сервер Model Context Protocol (MCP), который предоставляет два основных инструмента:

  1. search - Поиск в интернете с использованием SearXNG, приватного метапоискового движка
  2. fetch - Получение и извлечение содержимого веб-страниц по URL

Особенности

  • Приватный поиск в интернете без слежки
  • Использование SearXNG как основного поискового движка
  • Конвертация HTML-страниц в Markdown для лучшего анализа
  • Совместимость с протоколом Model Context Protocol (MCP)
  • Возможность настройки параметров подключения и безопасности

Установка

  1. Убедитесь, что у вас установлен Go 1.25 или выше
  2. Клонируйте репозиторий:
git clone https://git.ymnuktech.ru/ymnuk/mcp-searxng.git
cd mcp-searxng
  1. Установите зависимости:
go mod download
  1. Соберите проект:
go build .

Конфигурация

Сервер поддерживает следующие параметры конфигурации:

Параметр Флаг Переменная окружения По умолчанию Описание
Port -p, --port WEB_PORT 3000 Порт для входящих соединений
HttpTimeout --http-timeout HTTP_TIMEOUT 60 Таймаут HTTP в секундах
TlsVerify --tls-verify TLS_VERIFY true Проверять TLS-сертификаты
UserAgent --user-agent USER_AGENT Mozilla/5.0... User Agent для HTTP-запросов
SearXNGUrl --searxng-url SEARXNG_URL http://localhost:8099 Базовый URL для SearXNG

Использование

  1. Убедитесь, что у вас запущен SearXNG сервер (по умолчанию на http://localhost:8099)
  2. Запустите MCP сервер:
./mcp-searxng

Или с настройкой параметров:

./mcp-searxng --port 3001 --searxng-url https://your-searxng-instance.com

Или с использованием переменных окружения:

SEARXNG_URL=https://your-searxng-instance.com PORT=3001 ./mcp-searxng

Сервер будет доступен по адресу http://localhost:3000/mcp

Инструменты

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

Fetch

Инструмент для получения и извлечения содержимого веб-страницы по её URL. Позволяет получить исходное содержимое веб-страницы, которое может быть полезно для чтения статей, получения подробной информации с конкретных сайтов или извлечения данных из веб-ресурсов. Содержимое возвращается в обработанном формате, подходящем для дальнейшего анализа. HTML-содержимое автоматически конвертируется в Markdown.

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

Вы можете использовать файл .env для настройки приложения:

WEB_PORT=3000
HTTP_TIMEOUT=60
TLS_VERIFY=true
USER_AGENT=Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0
SEARXNG_URL=http://localhost:8099

Мониторинг

Сервер предоставляет метрики в формате Prometheus по адресу /metrics. Доступны следующие метрики:

HTTP-метрики

  • http_requests_total - Общее количество HTTP-запросов с разбивкой по методу, пути и статусу
  • http_request_duration_seconds - Гистограмма времени выполнения HTTP-запросов

Метрики MCP инструментов

  • mcp_tool_calls_total - Общее количество вызовов MCP инструментов с разбивкой по имени инструмента и статусу (успешно/ошибка)
  • mcp_tool_call_duration_seconds - Гистограмма времени выполнения вызовов MCP инструментов

Процессные метрики

  • process_cpu_seconds_total - Общее время CPU, затраченное процессом (включает пользовательское и системное время) - стандартная метрика Go-рантайма
  • process_resident_memory_bytes_custom - Объем резидентной памяти процесса в байтах (кастомная метрика)

В настоящее время отслеживаются метрики для инструментов:

  • search - Метрики для функции поиска
  • fetch - Метрики для функции извлечения содержимого

Тестирование

Для запуска тестов:

go test ./...

Endpoints

Сервер предоставляет следующие HTTP-эндпоинты:

  • /mcp - основной endpoint для MCP-инструментов
  • /metrics - endpoint для сбора Prometheus-метрик (доступен после выполнения запросов к инструментам)
  • /health - endpoint для проверки состояния сервиса (возвращает HTTP 200 OK)

Лицензия

Этот проект распространяется под лицензией, подробности см. в файле LICENSE.