Модуль на гитхабе:
https://github.com/DeLighter1990/delight.mcpМодуль создан с целью улучшения качества разработки проектов на Битриксе с использованием AI-агентов.
Модуль реализует MCP сервер в виде набора эндпоинтов, которые используются для связи AI-агента среды разработки непосредственно с сайтом и сервером.
Возможности MCP сервераРесурсы:
Инструменты:- Информация об окружении:
- Информация о системе:
- Название операционной системы;
- Имя хоста;
- Имя текущего пользователя;
- Объем диска в байтах;
- Объем свободного места на диске в байтах;
- Информация о Битрикс:
- Редакция;
- Версия главного модуля;
- Установленные модули;
- Информация о PHP:
- Версия PHP;
- Подключенные расширения;
- Ограничение по объему доступной оперативной памяти;
- Максимальное время исполнения PHP-скриптов;
- Информация о базе данных:
- Тип базы данных;
- Версия сервера баз данных;
- Хост подключения;
- Имя базы данных;
- Live API:
- Список доступных функций в модуле;
- Список доступных событий в модуле;
- Поиск функций в модулях по проиндексированной базе;
- Код функции модуля с её описанием PHPDoc;
- Поиск функций через механизм Reflection по всему коду;
- Исполнение PHP-кода на сервере;
- Исполнение Shell-команд на сервере;
- Исполнение SQL-запросов на сервере;
- Поиск по документации Bitrix Framework (требует дополнительного подключения сервиса генерации embeddings):
- Нормализует markdown-файлы документации Bitrix Framework перед индексированием;
- Индексирует markdown-файлы документации Bitrix Framework в формате embeddings для поиска по смыслу, а не по вхождению;
- Производит векторный поиск по документации Bitrix Framework по запросу от AI-агента.
БезопасностьДоступ AI-агентов к модулю реализован с помощью JWT-токенов с возможностью указания времени жизни и прав токена на отдельные эндпоинты. Доступно удаление идентификаторов токенов со страницы настроек модуля, чтобы заблокировать доступ по ранее выпущенному токену.
Есть возможность ограничить доступ к настройкам модуля определенным группам пользователей.
Доступно логирование запросов/ответов к внешнему API модуля.
Токены с правами на исполнение PHP/Shell/SQL кода рекомендуется использовать только на тестовых площадках! Помните, что AI-агенты ошибаются и могут удалить или испортить ваши данные.
Модуль принёс пользу? Ты можешь оставить отзыв или поблагодарить разработчика: https://yoomoney.ru/to/41001510540341
Требуется стандартная установка решения.
После установки необходимо выпустить токен в настройках модуля.
Пример подключения MCP сервера в Cursor{
"mcpServers": {
"bitrix": {
"command": "npx",
"args": [
"mcp-remote",
"https://{ВАШ_ДОМЕН}/bitrix/services/main/ajax.php?action=delight:mcp.Rpc.handler",
"--header",
"Authorization: Bearer {ВАШ_ТОКЕН}"
]
}
}
} |
Подключение embeddings-сервиса
Т.к. документация Bitrix Framework автоматически добавляется в ресурсы MCP сервера и доступна AI-агенту по запросу, то острой необходимости в настройке поиска по документации нет, это лишь может сэкономить контекст.
Для корректной работы сервиса поиска по документации Bitrix Framework требуется взаимодействие с сервисом генерации embeddings (векторных представлений текста), которые нужны для поиска не по содержанию, а по смыслу. В качестве основного пути предлагается на собственном сервере поднять микросервис на Python (sentence-transformers), код микросервиса также предоставляется в модуле, но можно использовать и другие варианты (OpenAI, Olama и прочее) - для их использования нужно по событию OnBeforeGenerateEmbedding переопределить параметры запроса на генерацию embeddings, и по другому событию OnAfterGenerateEmbedding привести ответ к JSON-строке вида
"[-0.22979317605495453,-0.1455831080675125,-0.2588725686073303,0.0562337264418602,...]"
|
Установка и настройка микросервиса EmbeddingsЭтот сервис должен работать в фоновом режиме и автоматически запускаться после перезагрузки сервера.
Инструкция ниже предназначена для BitrixEnv 9+ и предполагает, что все команды выполняются последовательно через SSH от root-пользователя. Все пути требуется актуализировать под ваше окружение.
Шаг 1: Установка Python и зависимостейЭти команды установят Python, создадут изолированное окружение для сервиса и загрузят в него все необходимые библиотеки.
# Устанавливаем Python 3 и менеджер пакетов pip
sudo yum install -y python3 python3-pip
# Задаем путь к модулю
MODULE_PATH="/home/bitrix/www/bitrix/modules/delight.mcp"
# Переходим в директорию, где будет работать сервис
cd $MODULE_PATH/python
# Создаем виртуальное окружение в папке 'venv'
python3 -m venv venv
# Активируем окружение, обновляем pip и устанавливаем библиотеки
source venv/bin/activate
python3 -m pip install --upgrade pip
pip install fastapi uvicorn "sentence-transformers[txt]"
deactivate
# Меняем владельца всех файлов на bitrix, чтобы у сервиса были права доступа
sudo chown -R bitrix:bitrix $MODULE_PATH/python |
Шаг 2: Создание фоновой службы (systemd)Следующие команды создадут, настроят и запустят фоновый процесс.
# Задаем имя файла службы
SERVICE_FILE="/etc/systemd/system/delight.embeddings.service"
# Задаем путь к модулю
MODULE_PATH="/home/bitrix/www/bitrix/modules/delight.mcp"
# Создаем unit-файл для systemd с помощью команды tee
# Это позволяет запускать сервис от пользователя bitrix и автоматически перезапускать его
sudo tee $SERVICE_FILE > /dev/null <<EOF
[Unit]
Description=Delight Embeddings Generation Service
After=network.target
[Service]
User=bitrix
Group=bitrix
WorkingDirectory=$MODULE_PATH/python
ExecStart=$MODULE_PATH/python/venv/bin/python -m uvicorn embeddings-service:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# Открываем порт 8000 в брандмауэре
sudo firewall-cmd --zone=public --add-port=8000/tcp --permanent
sudo firewall-cmd --reload
# Перечитываем конфигурацию systemd, включаем автозапуск и стартуем сервис
sudo systemctl daemon-reload
sudo systemctl enable delight.embeddings.service
sudo systemctl start delight.embeddings.service |
Шаг 3: Проверка статусаЧтобы убедиться, что сервис успешно запущен и работает, выполните:
sudo systemctl status delight.embeddings.service |
Вы должны увидеть статус
active (running). Если возникли ошибки, их можно посмотреть командой
sudo journalctl -u delight.embeddings.service |
Доступные в модуле события
| Имя события | Когда вызывается | Параметры |
| OnBeforeExec | Перед исполнением shell-команд | // Команда на исполнение
['command' => (string) $command] |
|
| OnAfterExec | После исполнения shell-команд | // Массив с построчным выводом исполненной команды
['output' => (array) $output] |
|
| OnBeforeEval | Перед исполнением PHP-кода | // Код на исполнение
['code' => (string) $code] |
|
| OnAfterEval | После исполнения PHP-кода | // Экранный вывод исполненного кода
['output' => (string) $output] |
|
| OnBeforeSql | Перед исполнением SQL-кода | // SQL-запрос(ы) на исполнение
['query' => (string) $query] |
|
| OnAfterSql | После исполнения SQL-кода | // Массив с результатом SQL-запроса
[
'columns' => (array) $columns,
'rows' => (array) $rows,
'rowCount' => (int) count($rows),
'query' => (string) $query
]; |
|
| OnBeforeGenerateEmbedding | Перед отправкой данных в сервис генерации эмбеддингов | // Массив с данными запроса
[
'url' => (string) self::GENERATE_EMBEDDINGS_ENDPOINT,
'data' => Json::encode(['text' => $text]),
'headers' => [
'Content-Type' => 'application/json',
],
'timeout' => $this->timeout,
'waitResponse' => true
] |
|
| OnAfterGenerateEmbedding | После получения данных от сервиса генерации эмбеддингов | // Результат POST-запроса через \Bitrix\Main\Web\HttpClient
['response' => (bool|string) $response] |
|
Об ошибках сообщайте в раздел issues на
GitHub.
Вы можете поучаствовать в улучшении модуля, создав Pull Request в репозитории на
GitHub с вашими доработками.
Стандартная техническая поддержка платная.
При обращении за технической поддержкой обязательно указывайте ссылку на сайт, доступы в админку и FTP!
Пишите на
dronazzz@mail.ru или
https://t.me/delighter