Skip to main content
Glama
MSPbotsAIFramework

mspbots-fleet-mcp

Official

mspbots-fleet-mcp

MCP-Server für die MSPbots Fleet Platform API – eine Multi-Tenant-Konsole über fleetdm: Host-Inventar, On-Demand-Skripte und gespeicherte osquery-Abfragen, bereitgestellt für MCP-Clients.

Er folgt demselben Design wie der Schwesterdienst mspbots-agent-mcp: zustandslos, keine gespeicherten Anmeldedaten, Header-Authentifizierung pro Anfrage über das Model Context Protocol (Streamable HTTP/SSE-Transport).

Wann Sie dies verwenden würden

Dieses MCP kapselt ein internes MSPbots-Produkt (Geräte-Fleet-Verwaltung), keine Drittanbieter-Integration. Typische Verwendungen:

  • „Welche Hosts hat dieser Mandant, und welche sind offline?" → mspbotsfleet_list_hosts

  • „Dieses Laptop als Production markieren" → mspbotsfleet_set_host_labels

  • „Diese Maschine sieht veraltet aus, Aktualisierung erzwingen" → mspbotsfleet_refetch_host

  • „Unser Log-Erfassungsskript auf diesem Server ausführen" → mspbotsfleet_run_script

  • „Wie hoch ist die Speichernutzung auf allen Windows-Hosts gerade?" → eine gespeicherte Abfrage mit mspbotsfleet_create_query erstellen, dann mspbotsfleet_run_query

  • „Eine Charge neuer Laptops wurde gerade registriert, die von uns deklarierten übernehmen" → mspbotsfleet_claim_hosts

  • „Wir nehmen dieses Gerät außer Betrieb, beenden Sie die Verfolgung als unseres (aber lassen Sie es in Fleet)" → mspbotsfleet_release_host

Related MCP server: OpsLevel MCP

Tools

Die Anmeldedaten für alle Tools stammen aus den Request-Headern (X-MSP-Token / X-MSP-Tenant-Id / X-MSP-Host), es müssen keine Token in den Tool-Parametern übergeben werden.

Hosts

Hosts können nicht über die API erstellt werden: Maschinen erscheinen automatisch, nachdem sie fleetd installiert und registriert haben, und werden dann anhand der vom Mandanten deklarierten Kennungen (Hostname/Seriennummer/UUID) übernommen, siehe mspbotsfleet_claim_hosts.

Tool

Funktion

Parameter

mspbotsfleet_list_hosts

Listet die Hosts des aktuellen Mandanten auf (Fuzzy-Suche+Statusfilter+Seitennummer)

search, status(online/offline/new/missing), page(Standard 0), per_page(Standard 25, max. 200)

mspbotsfleet_get_host

Ruft Host-Details+manuelle Labels ab

host_id(erforderlich)

mspbotsfleet_list_host_scripts

Listet die auf diesem Host ausführbaren Skripte auf

host_id(erforderlich)

mspbotsfleet_set_host_labels

Ersetzt die manuellen Labels des Hosts vollständig

host_id(erforderlich), labels(erforderlich, vollständige Ersetzung)

mspbotsfleet_refetch_host

Fordert an, dass der Host beim nächsten Check-in die Eigenschaften aktualisiert (asynchron)

host_id(erforderlich)

mspbotsfleet_delete_host

Entfernt den Host aus Fleet und löscht die Zuordnung (wenn fleetd nicht deinstalliert ist, registriert er sich erneut)

host_id(erforderlich)

mspbotsfleet_claim_hosts

Deklariert Kennungen und übernimmt passende herrenlose Hosts (idempotent, kann wiederholt aufgerufen werden, um nicht zugeordnete erneut zu versuchen)

identifiers(optional, Liste von Hostname/Seriennummer/UUID, max. 500 Einträge; weggelassen/leeres Array=nur zuvor deklarierte erneut versuchen)

mspbotsfleet_release_host

Gibt die Zuordnung eines Hosts zu diesem Mandanten auf, ohne den Host selbst zu löschen (idempotent)

host_id(erforderlich)

Die Hostliste wird vollständig abgerufen und dann im Speicher gefiltert/sortiert/aufgeteilt. Die Fleet-seitigen Daten werden 15 Sekunden zwischengespeichert, die Zuordnungsinformationen werden in Echtzeit aus der Datenbank abgefragt und nicht zwischengespeichert. claim_hosts gibt {claimed, waiting, rejected} zurück: waiting sind deklarierte, aber noch nicht in Fleet erschienene Hosts, rejected sind Kennungen, die bereits von einem anderen Mandanten deklariert wurden.

Skripte

Tool

Funktion

Parameter

mspbotsfleet_list_scripts

Listet die Skripte des Mandanten auf

page, per_page

mspbotsfleet_get_script

Ruft Skript-Details ab (einschließlich Inhalt)

script_id(erforderlich)

mspbotsfleet_create_script

Erstellt ein neues Skript (Dateiname muss auf .sh/.ps1 enden). Nicht idempotent – wiederholter Aufruf erstellt mehrere Skripte

name(erforderlich), contents(erforderlich, ≤500KB)

mspbotsfleet_update_script

Ersetzt den Skriptinhalt (Dateiname kann nicht geändert werden)

script_id(erforderlich), contents(erforderlich)

mspbotsfleet_delete_script

Löscht das Skript (wirkt auf alle Hosts)

script_id(erforderlich)

mspbotsfleet_run_script

Führt das Skript auf dem Host aus

script_id(erforderlich), host_id(erforderlich), sync(Standard false, bei true warten ≤60s und Ergebnis zurückgeben)

mspbotsfleet_get_script_result

Fragt das Ausführungsergebnis ab (exit_code null bedeutet nicht zurückgemeldet)

execution_id(erforderlich)

create_script/update_script geben nur {id, name} zurück; Zeitstempel und andere Felder müssen über mspbotsfleet_get_script/mspbotsfleet_list_scripts abgefragt werden.

Gespeicherte Abfragen

Tool

Funktion

Parameter

mspbotsfleet_list_queries

Listet die Abfragen des Mandanten auf

page, per_page

mspbotsfleet_get_query

Ruft Abfrage-Details ab (einschließlich SQL)

query_id(erforderlich)

mspbotsfleet_create_query

Erstellt eine neue gespeicherte Abfrage (nur einzelne SELECT / WITH…SELECT erlaubt). Nicht idempotent – wiederholter Aufruf erstellt mehrere Abfragen

name(erforderlich), sql(erforderlich), description, platform(darwin/windows/linux)

mspbotsfleet_update_query

Aktualisiert die Abfrage (partiell, nur zu ändernde Felder übergeben)

query_id(erforderlich), name, sql, description, platform

mspbotsfleet_delete_query

Löscht die Abfrage und ihre Berichtsdaten

query_id(erforderlich)

mspbotsfleet_run_query

Führt die Abfrage in Echtzeit auf Hosts aus und wartet auf das Ergebnis (≤45s)

query_id(erforderlich), host_ids(optional, ≤50 Hosts, weggelassen=Standard die ersten 50 Hosts des Mandanten)

SQL-Validierungsregeln: Nur eine einzelne SELECT- oder WITH … SELECT-Anweisung erlaubt, abschließendes Semikolon wird automatisch entfernt, ein ; im Text wird direkt abgelehnt. Diese Validierung wird vom Backend durchgeführt, dieser Dienst validiert nicht erneut.

Schnellstart

Docker (empfohlen)

docker compose up --build

Der Server startet auf http://localhost:8080.

Lokal (uv)

uv sync
python -m mspbots_fleet_mcp

Health Check

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

Für den Health-Endpunkt sind keine Anmeldedaten erforderlich.

Authentifizierung

Jede Anfrage an /mcp muss die folgenden HTTP-Header enthalten (vom MCP-Aufrufer bereitgestellt – konsistent mit mspbots-agent-mcp / ticketqa-mcp):

Header

Typ

Erforderlich

Feldbeschreibung

Beispiel

X-MSP-Token

string

Erforderlich

Von Fleet Platform ausgestelltes Zugriffstoken (JWT-Bearer-Token). Dieser Dienst leitet es unverändert als Authorization: Bearer <token> an die Downstream-Anfrage weiter.

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

X-MSP-Tenant-Id

string

Erforderlich

Mandantenkennung. Wird bei der Weiterleitung an die Downstream-API in den Header X_Tenant_ID umbenannt (der Mandant ist auch im JWT eingebettet).

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

X-MSP-Host

string

Erforderlich

Host, auf dem die Fleet-API läuft.

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

Fehlt einer der drei Header, wird 401 Unauthorized zurückgegeben.

Die Downstream-Fleet-API selbst gibt bei Authentifizierungsfehlern (fehlendes Token/falsche Signatur/unzureichende Rolle) einheitlich 403 zurück, nicht 401 – 401 tritt nur auf dieser Dienstebene auf (fehlender Gateway-Header).

Umgebungsvariablen

Variable

Standard

Beschreibung

MCP_HTTP_PORT

8080

Listening-Port

MCP_HTTP_HOST

0.0.0.0

Listening-Host

MCP-Endpunkt

POST http://localhost:8080/mcp

Verbinden Sie Ihren MCP-Client mit:

  • Transport: http (Streamable HTTP / SSE)

  • Header: X-MSP-Token, X-MSP-Tenant-Id, X-MSP-Host (alle erforderlich)

Testbeispiel

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 } }
  }'

⚠️ Dieses Repository ist öffentlich. Bitte schreiben Sie keine echten Token / Mandanten-IDs oder andere sensible Informationen in irgendeine Datei im Repository. Die obigen <token> / <tenant-id> sind nur Platzhalter.

Related MCP Connectors

Related MCP Servers