mspbots-fleet-mcp
Officialmspbots-fleet-mcp
Servidor MCP para la API de MSPbots Fleet Platform: una consola multiinquilino sobre fleetdm: inventario de hosts, scripts bajo demanda y consultas osquery guardadas, expuestos a clientes MCP.
Sigue el mismo diseño que el servicio hermano mspbots-agent-mcp:
sin estado, sin credenciales almacenadas, autenticación por cabecera en cada petición a través del
Model Context Protocol (transporte Streamable HTTP/SSE).
Cuándo usarías esto
Este MCP envuelve un producto interno de MSPbots (gestión de flotas de dispositivos), no una integración de terceros. Usos típicos:
"¿Qué hosts tiene este inquilino y cuáles están sin conexión?" →
mspbotsfleet_list_hosts"Etiqueta este portátil como Producción" →
mspbotsfleet_set_host_labels"Esta máquina parece desactualizada, fuerza una actualización" →
mspbotsfleet_refetch_host"Ejecuta nuestro script de recopilación de registros en ese servidor" →
mspbotsfleet_run_script"¿Cuál es el uso de disco en todos los hosts Windows ahora mismo?" → crea una consulta guardada con
mspbotsfleet_create_queryy luegomspbotsfleet_run_query"Acaba de inscribirse un lote de portátiles nuevos, reclama los que declaramos" →
mspbotsfleet_claim_hosts"Vamos a dar de baja este dispositivo, deja de rastrearlo como nuestro (pero déjalo en Fleet)" →
mspbotsfleet_release_host
Related MCP server: Rancher MCP Server
Herramientas
Todas las herramientas obtienen las credenciales de las cabeceras de la petición (X-MSP-Token / X-MSP-Tenant-Id / X-MSP-Host);
no es necesario pasar el token en los parámetros de la herramienta.
Hosts
Los hosts no se pueden crear a través de la API: aparecen automáticamente cuando la máquina instala fleetd y se registra,
y luego se reclama la propiedad según los identificadores declarados por el inquilino
(nombre de host/número de serie/UUID); ver mspbotsfleet_claim_hosts.
Herramienta | Función | Parámetros |
| Lista los hosts del inquilino actual (búsqueda difusa + filtro de estado + paginación) |
|
| Obtiene el detalle del host + etiquetas manuales |
|
| Lista los scripts ejecutables en ese host |
|
| Reemplaza por completo las etiquetas manuales del host |
|
| Solicita que el host actualice sus atributos en el próximo check-in (asíncrono) |
|
| Elimina el host de Fleet y libera la propiedad (si fleetd no está desinstalado, se volverá a registrar) |
|
| Declara identificadores y reclama los hosts sin propietario que coincidan (idempotente; se puede repetir para reintentar los no coincidentes) |
|
| Abandona la propiedad de un host por parte del inquilino actual, sin eliminar el host en sí (idempotente) |
|
La lista de hosts se obtiene completa y luego se filtra/ordena/ pagina en memoria; los datos de Fleet se cachean durante 15 segundos, la información de propiedad se consulta en la base de datos en tiempo real sin caché.
claim_hostsdevuelve{claimed, waiting, rejected}:waitingson los declarados pero que aún no aparecen en Fleet,rejectedson los identificadores que ya han sido declarados por otro inquilino.
Scripts
Herramienta | Función | Parámetros |
| Lista los scripts del inquilino actual |
|
| Obtiene el detalle del script (incluido el contenido) |
|
| Crea un script (el nombre de archivo debe terminar en |
|
| Reemplaza el contenido del script (el nombre de archivo no se puede cambiar) |
|
| Elimina el script (afecta a todos los hosts) |
|
| Ejecuta el script en el host |
|
| Consulta el resultado de la ejecución ( |
|
create_script/update_scriptsolo devuelven{id, name}; el resto de campos, como las marcas de tiempo, requieren consultarmspbotsfleet_get_script/mspbotsfleet_list_scripts.
Consultas guardadas
Herramienta | Función | Parámetros |
| Lista las consultas del inquilino actual |
|
| Obtiene el detalle de la consulta (incluido el SQL) |
|
| Crea una consulta guardada (solo se permite un único |
|
| Actualiza la consulta (parcial, solo envía los campos a modificar) |
|
| Elimina la consulta y sus datos de informes |
|
| Ejecuta la consulta en tiempo real en los hosts y espera el resultado (≤45s) |
|
Reglas de validación de SQL: solo se permite un único
SELECToWITH … SELECT; se elimina automáticamente el punto y coma final; si aparece;en el cuerpo, se rechaza directamente. Estas validaciones las realiza el backend; este servicio no las repite.
Inicio rápido
Docker (recomendado)
docker compose up --buildEl servidor se inicia en http://localhost:8080.
Local (uv)
uv sync
python -m mspbots_fleet_mcpComprobación de estado
curl http://localhost:8080/health
# {"status": "ok"}No se requieren credenciales para el endpoint de estado.
Parámetros de autorización (Autenticación)
Cada petición a /mcp debe incluir las siguientes cabeceras HTTP (proporcionadas por el
llamante MCP, de forma coherente con mspbots-agent-mcp / ticketqa-mcp):
Cabecera | Tipo | ¿Obligatoria? | Descripción del campo | Ejemplo |
| string | Obligatoria | Credencial de acceso emitida por Fleet Platform (token de portador JWT). Este servicio la reenvía tal cual como |
|
| string | Obligatoria | Identificador del inquilino. Al reenviarse a la API descendente se renombra a la cabecera |
|
| string | Obligatoria | Host donde se encuentra la API de Fleet. |
|
Si falta cualquiera de las tres cabeceras, se devuelve 401 Unauthorized.
La API de Fleet descendente devuelve 403 para fallos de autenticación (token ausente/firma incorrecta/roles insuficientes), no 401; el 401 solo ocurre en esta capa de servicio (cabeceras de puerta de enlace ausentes).
Variables de entorno
Variable | Por defecto | Descripción |
|
| Puerto de escucha |
|
| Host de escucha |
Endpoint MCP
POST http://localhost:8080/mcpConecta tu cliente MCP con:
Transporte:
http(Streamable HTTP / SSE)Cabeceras:
X-MSP-Token,X-MSP-Tenant-Id,X-MSP-Host(todas obligatorias)
Ejemplo de prueba
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 } }
}'⚠️ Este repositorio es público; no incluyas tokens reales, identificadores de inquilino ni otra información sensible en ningún archivo confirmado. Los
<token>/<tenant-id>anteriores son solo marcadores de posición.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceA Model Context Protocol server that bridges Microsoft Teams with MCP-compatible clients (LLMs, agentic frameworks, CLI), enabling chat integration, message search, and event streaming without traditional REST API endpoints.
- AlicenseBqualityCmaintenanceModel Context Protocol (MCP) server for the Rancher ecosystem: multi-cluster Kubernetes, Harvester HCI (VMs, storage, networks), and Fleet GitOps.1012Apache 2.0
- Alicense-qualityDmaintenanceModel Context Protocol server that connects AI agents with CrowdStrike Falcon platform for intelligent security analysis and automation.MIT
- Alicense-qualityDmaintenanceA comprehensive Model Context Protocol (MCP) server for New Relic monitoring, observability, and management operations.MIT
Related MCP Connectors
MCP server for interacting with the Supabase platform
MCP server wrapping the Tesla Fleet API and TeslaMate API
MCP (Model Context Protocol) server for Appwrite
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/mspbots-fleet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server