- Go 93%
- Dockerfile 7%
|
|
||
|---|---|---|
| config | ||
| handler | ||
| http | ||
| middleware | ||
| .dockerignore | ||
| .gitignore | ||
| .woodpecker.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| mcp-searxng | ||
| README.md | ||
MCP SearXNG
MCP (Model Context Protocol) сервер, предоставляющий инструменты для приватного поиска в интернете и извлечения содержимого веб-страниц с использованием SearXNG.
Описание
Этот проект представляет собой сервер Model Context Protocol (MCP), который предоставляет два основных инструмента:
- search - Поиск в интернете с использованием SearXNG, приватного метапоискового движка
- fetch - Получение и извлечение содержимого веб-страниц по URL
Особенности
- Приватный поиск в интернете без слежки
- Использование SearXNG как основного поискового движка
- Конвертация HTML-страниц в Markdown для лучшего анализа
- Совместимость с протоколом Model Context Protocol (MCP)
- Возможность настройки параметров подключения и безопасности
Установка
- Убедитесь, что у вас установлен Go 1.25 или выше
- Клонируйте репозиторий:
git clone https://git.ymnuktech.ru/ymnuk/mcp-searxng.git
cd mcp-searxng
- Установите зависимости:
go mod download
- Соберите проект:
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 |
Использование
- Убедитесь, что у вас запущен SearXNG сервер (по умолчанию на http://localhost:8099)
- Запустите 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
Инструменты
Search
Инструмент для поиска в интернете с использованием 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.