Skip to main content
Glama
MSPbotsAI

mspbots-fleet-mcp

Official
by MSPbotsAI

mspbots-fleet-mcp

MCP-сервер для MSPbots Fleet Platform API — мультитенантная консоль поверх fleetdm: инвентаризация хостов, скрипты по запросу и сохранённые osquery-запросы, доступные MCP-клиентам.

Он спроектирован так же, как соседний сервис mspbots-agent-mcp: без состояния, без хранения учётных данных, с аутентификацией через заголовки в каждом запросе по Model Context Protocol (транспорт Streamable HTTP/SSE).

Когда это использовать

Этот MCP оборачивает внутренний продукт MSPbots (управление парком устройств), а не стороннюю интеграцию. Типичные сценарии:

  • «Какие хосты есть у этого тенанта и какие из них офлайн?» → mspbotsfleet_list_hosts

  • «Пометить этот ноутбук как Production» → mspbotsfleet_set_host_labels

  • «Эта машина выглядит устаревшей, принудительно обновить» → mspbotsfleet_refetch_host

  • «Запустить наш скрипт сбора логов на том сервере» → mspbotsfleet_run_script

  • «Какой сейчас объём диска на всех хостах Windows?» → создать сохранённый запрос с помощью mspbotsfleet_create_query, затем mspbotsfleet_run_query

  • «Только что зарегистрировалась партия новых ноутбуков — забрать те, что мы объявили» → mspbotsfleet_claim_hosts

  • «Мы выводим это устройство из эксплуатации, прекращаем считать его своим (но оставляем его во Fleet)» → mspbotsfleet_release_host

Related MCP server: OpsLevel MCP

Инструменты

Учётные данные для всех инструментов берутся из заголовков запроса (X-MSP-Token / X-MSP-Tenant-Id / X-MSP-Host); передавать токен в параметрах инструмента не нужно.

Хосты

Хосты нельзя создать через API: машина появляется автоматически после установки fleetd и регистрации, а затем её принадлежность закрепляется по объявленным тенантом идентификаторам (имя хоста / серийный номер / UUID), см. mspbotsfleet_claim_hosts.

Инструмент

Описание

Параметры

mspbotsfleet_list_hosts

Список хостов текущего тенанта (нечёткий поиск + фильтр по статусу + пагинация)

search, status (online/offline/new/missing), page (по умолчанию 0), per_page (по умолчанию 25, максимум 200)

mspbotsfleet_get_host

Сведения о хосте + ручные метки

host_id (обязательно)

mspbotsfleet_list_host_scripts

Список скриптов, доступных для этого хоста

host_id (обязательно)

mspbotsfleet_set_host_labels

Полностью заменить ручные метки хоста

host_id (обязательно), labels (обязательно, полная замена)

mspbotsfleet_refetch_host

Запросить обновление атрибутов хоста при следующем подключении (асинхронно)

host_id (обязательно)

mspbotsfleet_delete_host

Удалить хост из Fleet и снять принадлежность (если fleetd не удалён, хост зарегистрируется снова)

host_id (обязательно)

mspbotsfleet_claim_hosts

Объявить идентификаторы и взять на себя подходящие бесхозные хосты (идемпотентно; можно вызывать повторно, чтобы повторить несопоставленные)

identifiers (необязательно, список имён хостов / серийных номеров / UUID, до 500; если опущен или пустой массив — только повторная попытка для ранее объявленных)

mspbotsfleet_release_host

Отказаться от принадлежности хоста этому тенанту, не удаляя сам хост (идемпотентно)

host_id (обязательно)

Список хостов полностью выгружается, после чего фильтруется, сортируется и разбивается на страницы в памяти; данные со стороны Fleet кэшируются на 15 секунд, а сведения о принадлежности читаются из БД в реальном времени и не кэшируются. claim_hosts возвращает {claimed, waiting, rejected}: waiting — идентификаторы уже объявлены, но хост ещё не появился во Fleet, rejected — идентификатор уже объявлен другим тенантом.

Скрипты

Инструмент

Описание

Параметры

mspbotsfleet_list_scripts

Список скриптов текущего тенанта

page, per_page

mspbotsfleet_get_script

Сведения о скрипте (включая содержимое)

script_id (обязательно)

mspbotsfleet_create_script

Создать скрипт (имя файла должно оканчиваться на .sh/.ps1). Не идемпотентно — повторный вызов создаст несколько скриптов

name (обязательно), contents (обязательно, ≤500 КБ)

mspbotsfleet_update_script

Заменить содержимое скрипта (имя файла изменить нельзя)

script_id (обязательно), contents (обязательно)

mspbotsfleet_delete_script

Удалить скрипт (действует для всех хостов)

script_id (обязательно)

mspbotsfleet_run_script

Выполнить скрипт на хосте

script_id (обязательно), host_id (обязательно), sync (по умолчанию false; при true — ждать до 60 с и вернуть результат)

mspbotsfleet_get_script_result

Получить результат выполнения (exit_code со значением null означает, что результат ещё не передан)

execution_id (обязательно)

create_script/update_script возвращают только {id, name}; остальные поля, например временные метки, нужно запрашивать через mspbotsfleet_get_script/mspbotsfleet_list_scripts.

Сохранённые запросы

Инструмент

Описание

Параметры

mspbotsfleet_list_queries

Список запросов текущего тенанта

page, per_page

mspbotsfleet_get_query

Сведения о запросе (включая SQL)

query_id (обязательно)

mspbotsfleet_create_query

Создать сохранённый запрос (допускается только один SELECT или WITH … SELECT). Не идемпотентно — повторный вызов создаст несколько запросов

name (обязательно), sql (обязательно), description, platform (darwin/windows/linux)

mspbotsfleet_update_query

Обновить запрос (частично; передавайте только изменяемые поля)

query_id (обязательно), name, sql, description, platform

mspbotsfleet_delete_query

Удалить запрос и данные его отчётов

query_id (обязательно)

mspbotsfleet_run_query

Выполнить запрос на хостах в реальном времени и дождаться результатов (≤45 с)

query_id (обязательно), host_ids (необязательно, ≤50 хостов; если опущено, по умолчанию берутся первые 50 хостов текущего тенанта)

Правила проверки SQL: допускается только один SELECT или WITH … SELECT; завершающая точка с запятой автоматически удаляется, а вхождение ; в тело запроса приводит к отказу. Эти проверки выполняются на бэкенде; этот сервис их не повторяет.

Быстрый старт

Docker (рекомендуется)

docker compose up --build

Сервер запускается на http://localhost:8080.

Локально (uv)

uv sync
python -m mspbots_fleet_mcp

Проверка состояния

curl http://localhost:8080/health
# {"status": "ok"}

Для конечной точки проверки состояния учётные данные не требуются.

Параметры авторизации (Authentication)

Каждый запрос к /mcp должен включать следующие HTTP-заголовки (их передаёт вызывающая сторона MCP — они согласованы с mspbots-agent-mcp / ticketqa-mcp):

Заголовок

Тип

Обязателен

Описание

Пример

X-MSP-Token

string

Да

Доступ, выданный Fleet Platform (JWT bearer token). Сервис передаёт его без изменений в исходящем запросе как Authorization: Bearer <token>.

X-MSP-Token: <jwt-bearer-token>

X-MSP-Tenant-Id

string

Да

Идентификатор тенанта. При передаче в downstream API переименовывается в заголовок X_Tenant_ID (тенант также встроен в JWT).

X-MSP-Tenant-Id: <tenant-id>

X-MSP-Host

string

Да

Хост, на котором находится Fleet API.

X-MSP-Host: https://agent.mspbots.ai

Отсутствие любого из трёх заголовков возвращает 401 Unauthorized.

Сам downstream Fleet API при сбое аутентификации (отсутствует токен / неверная подпись / недостаточно прав) всегда возвращает 403, а не 401 — 401 возникает только на уровне этого сервиса (отсутствует gateway-заголовок).

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

Переменная

По умолчанию

Описание

MCP_HTTP_PORT

8080

Порт прослушивания

MCP_HTTP_HOST

0.0.0.0

Адрес прослушивания

Конечная точка MCP

POST http://localhost:8080/mcp

Подключите ваш MCP-клиент со следующими параметрами:

  • Транспорт: http (Streamable HTTP / SSE)

  • Заголовки: X-MSP-Token, X-MSP-Tenant-Id, X-MSP-Host (все обязательны)

Тестовый пример (Test Example)

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-MSP-Token: <token>" \
  -H "X-MSP-Tenant-Id: <tenant-id>" \
  -H "X-MSP-Host: https://agent.mspbots.ai" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": { "name": "mspbotsfleet_list_hosts", "arguments": { "status": "online", "per_page": 10 } }
  }'

⚠️ Этот репозиторий публичный: не добавляйте в коммиты реальные токены, tenant id и другие чувствительные данные. Указанные выше <token> / <tenant-id> — это всего лишь плейсхолдеры.

Related MCP Connectors

Related MCP Servers