Настройки SM-MCP
Общая информация
SM-MCP — серверная часть чата AI-ассистента. Сервис получает вопрос из Smart Monitor Web, обращается к языковой модели через SM-AI и выполняет операции с платформой под учетной записью пользователя. Встроенные операции работают только на чтение.
Для сохранения диалогов используется отдельный индекс истории. Содержимое сообщений шифруется сервисом до записи. Доступ пользователя к своим диалогам проверяется API SM-MCP.
Требования к размещению и порядок подключения компонентов приведены в статье Установка AI-ассистента.
Подготовка к установке
Подготовьте:
- архив
sm-mcp-<версия>.tar.gzиз поставки Smart Monitor - адрес API хранилища со схемой и портом и сертификат CA кластера
- готовые сертификат и ключ HTTPS SM-MCP либо ключ CA для выпуска сертификата
- установленный SM-AI, его адрес с
/v1и имя модели из реестра - административную учетную запись платформы для загрузки знаний и скиллов, подготовки и проверки защиты истории
- доступ к конфигурации всех узлов хранилища и окно для их поочередного перезапуска
- обычную учетную запись с правом чтения нужных данных,
.sm_mcp_knowledgeи.sm_agent_skills
Сертификат SM-MCP должен проверяться по CA из opensearch.ssl.certificateAuthorities на серверах Smart Monitor Web. С сервера SM-MCP должны быть доступны платформа и SM-AI.
Установка сервиса
Распакуйте архив и запустите инсталлятор:
tar -xzf sm-mcp-<версия>.tar.gz
cd sm-mcp-<версия>
sudo ./setup.sh install
При интерактивной установке задайте параметры:
| Группа | Что указать |
|---|---|
| API чата | Адрес и порт прослушивания, параметры HTTPS |
| Платформа | Адрес API хранилища и путь к CA |
| Модель | Адрес SM-AI с /v1 и имя записи его реестра |
| Знания и скиллы | Загрузку и проверку корпуса и скиллов из поставки |
| История | Подготовку индексов, технической учетной записи и ключа шифрования |
| Smart Monitor Web | Нужно ли записать адрес SM-MCP в кластерные настройки |
Перед изменениями инсталлятор показывает итог и запрашивает подтверждение. Административный пароль вводится с клавиатуры. Для работы AI-ассистента выберите загрузку и проверку знаний и скиллов, а также подготовку истории.
Инсталлятор создает каталоги, устанавливает конфигурацию и службу, подготавливает сертификат HTTPS и при выбранной настройке добавляет CA в системное хранилище доверия. Это необходимо для проверки сертификата SM-AI.
Параметры можно задать в файле ответов:
cp example_config_sm-mcp.yaml answers.yaml
# Заполните answers.yaml перед запуском.
sudo ./setup.sh install -c answers.yaml
Пароль администратора запрашивается отдельно. Без команды setup.sh открывает меню. Режим --no-root выводит привилегированные команды для выполнения администратором; он не является предварительным просмотром. Для первоначальной подготовки истории требуется выполнение команд с правами root.
По умолчанию API чата доступен по HTTPS на 0.0.0.0:8088. Предоставьте сетевой доступ к нему только серверам Smart Monitor Web. HTTP допускается только на петлевом адресе, когда оба компонента размещены на одном сервере.
Расположение файлов
| Путь | Назначение |
|---|---|
/app/sm-mcp/sm-mcp | Исполняемый файл |
/app/sm-mcp/config.yaml | Настройки сервиса |
/app/sm-mcp/ca-cert.pem | CA кластера |
/app/sm-mcp/corpus/, /app/sm-mcp/skills/ | Корпус знаний и скиллы из поставки |
/app/sm-mcp/tls/node.pem, node-key.pem | Сертификат и ключ HTTPS API чата |
/app/sm-mcp/keys/ | Ключи шифрования истории |
/etc/sm-mcp/history.env | Пароль технической учетной записи истории |
/etc/systemd/system/sm-mcp.service | Служба systemd |
/etc/systemd/system/sm-mcp.service.d/history.conf | Подключение пароля истории к службе после проверки защиты |
Указаны пути, используемые установщиком. Служба работает от пользователя opensearch; при отсутствии пользователя инсталлятор может его создать.
Конфигурационный файл
Инсталлятор формирует /app/sm-mcp/config.yaml. Основные параметры:
| Параметр | Назначение |
|---|---|
listen | Адрес и порт API чата |
tls.enabled | HTTPS API чата; по умолчанию включен |
tls.certificate, tls.private_key | Сертификат и ключ HTTPS |
opensearch.url, opensearch.ca_file | Адрес API хранилища и путь к CA |
platform.version | Версия платформы |
model.api_base | Адрес SM-AI с /v1 |
model.name | Имя записи из реестра SM-AI |
model.context_tokens | Размер контекста; 0 использует сведения модели из SM-AI |
model.max_tokens | Максимальный объем ответа модели |
model.timeout | Таймаут одного обращения к модели |
model.stream | Потоковое получение ответа модели |
runtime.default_tz | Часовой пояс по умолчанию; при установке Europe/Moscow |
history.retention | Срок хранения диалогов; при установке 720h (30 дней) |
history.key_dir | Каталог ключей шифрования истории |
После изменения настроек перезапустите службу:
sudo systemctl restart sm-mcp
Имя модели должно совпадать с записью name в реестре SM-AI. Размер контекста и лимит ответа выбирайте по возможностям своей модели.
История диалогов
Установка подготавливает историю, если выбран соответствующий шаг. Служба начинает сохранять диалоги после защиты индексов и отдельного включения истории.
- Сохраните резервную копию
/app/sm-mcp/keys/отдельно от резервных копий кластера. Без ключа зашифрованные сообщения восстановить нельзя - На каждом узле хранилища добавьте в
opensearch.yml:
plugins.security.protected_indices.enabled: true
plugins.security.protected_indices.indices: [".sm_mcp_history*"]
plugins.security.protected_indices.roles: ["sm_mcp_history_runtime"]
Если защита других индексов уже настроена, дополните существующие списки, сохранив их значения.
- Поочередно перезапустите все узлы хранилища
- После перезапуска последнего узла выполните из каталога установщика:
sudo ./setup.sh enable-history
Команда запрашивает административную учетную запись и проверяет запрет записи в историю через узлы кластера. Ожидаемый результат — HTTP 403. При обнаружении доступной записи история не включается.
Если узел недоступен для автоматической проверки по опубликованному TLS-адресу, интерактивный режим может запросить ручное подтверждение. До подтверждения проверьте настройку и перезапуск этого узла; не подтверждайте защиту только по успешной проверке остальных узлов.
После проверки команда подключает пароль технической учетной записи к службе и перезапускает SM-MCP. В ответе /readyz поле history должно иметь значение ok.
По умолчанию диалог хранится 30 дней с последнего сообщения. Параметр history.retention: 0s отключает удаление по сроку. Резервируйте конфигурацию, каталог ключей и файл history.env; ограничьте доступ к этим копиям. Не меняйте права ключей на общедоступные: служба проверяет владельца и права доступа.
Подключение Smart Monitor Web
Инсталлятор может записать настройки подключения сразу для всех серверов Smart Monitor Web. Если этот шаг пропущен, выполните в консоли разработчика:
PUT _cluster/settings
{
"persistent": {
"sme.mcp.enabled": true,
"sme.mcp.service_url": "https://mcp.example.org",
"sme.mcp.service_port": 8088,
"sme.mcp.timeout": 600000
}
}
Подставьте имя SM-MCP из сертификата. Адрес задается со схемой, порт — отдельным параметром.
Вместо кластерных настроек можно задать адрес на каждом сервере Smart Monitor Web в opensearch_dashboards.yml:
smart_monitor.ai.baseUrl: https://mcp.example.org:8088
После изменения файла перезапустите Smart Monitor Web. Кластерные настройки подключения имеют приоритет над smart_monitor.ai.baseUrl.
Сертификат SM-MCP проверяется по opensearch.ssl.certificateAuthorities в opensearch_dashboards.yml, включая совпадение имени сервиса. Отключать проверку сертификата для подключения не требуется.
Проверка работоспособности
Проверьте службу и API с сервера Smart Monitor Web или SM-MCP:
sudo systemctl status sm-mcp
curl --cacert /app/sm-mcp/ca-cert.pem https://mcp.example.org:8088/healthz
curl --cacert /app/sm-mcp/ca-cert.pem -u '<логин>' https://mcp.example.org:8088/readyz
Используйте имя из сертификата и доступный на машине путь к CA. В запросе /readyz укажите обычную учетную запись будущего пользователя чата; curl запросит пароль.
/healthz возвращает {"status":"ok"}. В /readyz проверьте opensearch, model и knowledge; после включения истории — также history. Ожидаемое состояние этих компонентов — ok. Поле skills до первого обращения чата может иметь значение unknown: диагностический запрос сам не загружает каталог скиллов. После первого вопроса повторите проверку.
Без учетной записи /readyz выполняет ограниченную проверку и не подтверждает доступ пользователя к знаниям и модели. Диагностические ответы не заменяют проверку вопроса и сохранения диалога.
| Ситуация | Что проверить |
|---|---|
| Служба не запускается | Конфигурацию, пути к TLS-сертификату и ключу, права каталога ключей истории |
model: error | Адрес SM-AI, доступ к /models с учетной записью пользователя, имя модели, CA в системном хранилище и NO_PROXY |
knowledge не готова или skills остается неготовым после первого вопроса | Загрузку корпуса и скиллов, права чтения пользователя на их индексы |
history не готова | Подготовку истории, защиту на всех узлах и результат enable-history |
| SM-MCP работает, но чат недоступен | Адрес сервиса в настройках платформы или Web, сетевой доступ и доверие сертификату |
Журнал службы:
sudo journalctl -u sm-mcp -o cat
Обновление сервиса
До обновления сохраните конфигурацию, ключи истории и пароль технической учетной записи. Ознакомьтесь с примечаниями к полученной версии.
Распакуйте новую поставку и выполните из ее каталога:
sudo ./setup.sh update
Инсталлятор заменяет бинарь, корпус и скиллы. Конфигурация, индексы и ключи истории сохраняются; предыдущие файлы получают суффикс .prev. Обновление может временно выключать чат через sme.mcp.enabled и загружать новые знания и скиллы — проверьте выбранные параметры перед подтверждением.
После обновления повторите проверку API и вопроса в чате. Повторную подготовку истории выполняйте только в соответствии с примечаниями к версии.
Подключение внешних клиентов MCP
Маршрут /mcp доступен на основном порту SM-MCP вместе с API чата. Для внешних клиентов можно выделить дополнительный адрес и порт, на котором доступны только /mcp и /healthz. Дополнительный порт по умолчанию выключен.
Для его включения задайте в config.yaml адрес и сертификат:
mcp:
listen: 0.0.0.0:9443
tls_cert: /app/sm-mcp/tls/node.pem
tls_key: /app/sm-mcp/tls/node-key.pem
Сертификат должен подходить к имени, по которому обращаются клиенты, и быть подписан доверенным им CA. После изменения перезапустите SM-MCP.
Клиент подключается к https://mcp.example.org:9443/mcp с учетной записью платформы в заголовке Authorization. Операции доступны в пределах прав этой учетной записи и работают только на чтение. Открывайте порт только нужным клиентам. Данные, прочитанные внешним клиентом, обрабатываются его моделью; учитывайте это при выборе клиента и предоставлении доступа.