baramundi MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@baramundi MCP Server List all managed devices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
baramundi MCP Server
MCP (Model Context Protocol) Server für das baramundi Management Center. Erlaubt Claude, Geräte abzufragen, Jobs zu starten und Compliance-Reports zu generieren.
Voraussetzungen
Python 3.11+
uv (
pip install uv)Zugang zum baramundi Management Center mit REST API und Bearer Token
Related MCP server: Business Central MCP Workshop Server
Einrichtung
1. Abhängigkeiten installieren
uv sync2. Konfiguration
Erstelle eine .env-Datei (basierend auf .env.example):
BARAMUNDI_API_URL=https://dein-bmc-server/api
BARAMUNDI_API_TOKEN=dein-bearer-token
# Optional: SSL-Verifikation deaktivieren (nur für Testumgebungen!)
# BARAMUNDI_SSL_VERIFY=false3. Server testen
# Alle Tools im Browser testen (MCP Inspector)
uv run mcp dev src/baramundi_mcp/server.pyIn Claude Desktop einbinden
Füge folgendes in %APPDATA%\Claude\claude_desktop_config.json ein:
{
"mcpServers": {
"baramundi": {
"command": "uv",
"args": ["--directory", "C:\\INST\\Git\\Antigravity\\baramundi_MCP", "run", "baramundi-mcp"]
}
}
}Verfügbare Tools
Tool | Beschreibung |
| Alle verwalteten Geräte auflisten |
| Details zu einem Gerät abrufen |
| Patch-Level und Status eines Geräts |
| Jobs auflisten (aktiv, geplant, abgeschlossen) |
| Status eines laufenden Jobs |
| Job auf einem Gerät starten (schreibend!) |
| Patch-Compliance-Übersicht |
| Software-Inventar abfragen |
Available Tools
17 toolsget_deviceA
Ruft alle Details zu einem einzelnen Gerät ab.
Akzeptiert sowohl eine GUID als auch einen Hostnamen (z.B. 'PCSWIT1984').
Enthält automatisch macmon NAC-Infos (VLAN, Sperrstatus), falls macmon konfiguriert ist.
Args:
device_id: GUID des Geräts (aus list_devices) ODER Hostname (z.B. 'PCSWIT1984').
Returns:
Vollständiges Geräte-Objekt mit allen Feldern inkl. Hardware,
OS-Version, letzter Benutzer, Gruppe, Agent-Status und macmon NAC-Status.
Inputs: device_id (required).
get_device_update_statusA
Gibt den Windows-Update-Status eines einzelnen Geräts zurück.
Zeigt fehlende Updates (Critical, Security, Other) sowie letzten Scan- und Update-Zeitpunkt.
Args:
device_id: Hostname (z.B. 'PCSWIT1984') oder GUID des Geräts.
Returns:
Objekt mit Update-Profil, Anzahl fehlender Updates je Kategorie,
Zeitpunkt des letzten Inventars und letzten erfolgreichen Updates.
Inputs: device_id (required).
get_job_definitionA
Gibt alle Details einer Job-Definition zurück.
Args:
definition_id: GUID der Job-Definition (id-Feld aus search_job_definitions).
Returns:
Vollständiges Definition-Objekt mit Typ, Ordner, Kategorie und Beschreibung.
Inputs: definition_id (required).
get_job_instanceA
Gibt alle Details einer einzelnen Job-Ausführung zurück.
Args:
instance_id: GUID der Job-Instanz (id-Feld aus list_job_instances).
Returns:
Vollständiges Instanz-Objekt inkl. steps, Zeitstempel und Statusbeschreibung.
Inputs: instance_id (required).
get_software_inventoryA
Gibt die installierte Software auf einem Gerät zurück.
Akzeptiert Hostname (z.B. 'PCSWIT1984') oder GUID.
Args:
device_id: Hostname oder GUID des Geräts.
query: Optionaler Suchbegriff im Software-Namen (z.B. 'Chrome', 'Office').
Leer = alle installierten Programme.
Returns:
Objekt mit 'total' und 'software' (alphabetisch sortiert).
Felder je Eintrag: name, version, publisher, installDate.
Inputs: device_id (required), query.
get_vlan_statusA
Fragt den VLAN- und NAC-Status eines Clients in macmon ab.
Akzeptiert einen Hostnamen (z.B. 'PCSWIT1984') oder eine MAC-Adresse.
Bei Hostnamen wird die MAC automatisch über baramundi ermittelt.
Args:
identifier: Hostname (z.B. 'PCSWIT1984') oder MAC-Adresse
(Format: 'AA:BB:CC:DD:EE:FF' oder 'AABBCCDDEEFF').
Returns:
Objekt mit:
- mac: MAC-Adresse im macmon-Format
- active: True = Client aktiv/erlaubt, False = gesperrt
- authorizedVlans: Direkt am Client konfigurierte VLAN-IDs
- activeVlans: Aktuell aktive VLANs aus laufender Netzwerk-Session
- lastIp: Zuletzt gesehene IP-Adresse
- online: Aktuell im Netz sichtbar?
- endpointGroup: Zugewiesene Endpoint-Gruppe (bestimmt VLAN-Policy)
Inputs: identifier (required).
list_devicesA
Gibt eine einzelne Seite der Geräteliste zurück — NUR für seitenweise Übersichten.
NICHT für Suchen verwenden! Für Suchen nach Benutzer, Name, IP oder Gruppe
stattdessen search_devices(query=...) nutzen — ein einziger Call, alle Geräte.
Args:
type: Gerätetyp — 'windows' (Standard), 'mac' oder 'linux'.
limit: Anzahl Geräte pro Seite (Standard: 50, Max: 100).
page: Seitennummer, beginnend bei 0 (Standard: 0).
Returns:
Objekt mit 'data' (Geräteliste), 'totalItems', 'totalPages' und 'currentPage'.
Inputs: page, type, limit.
list_job_definitionsA
Listet alle Job-Definitionen seitenweise auf (20 pro Seite).
Für gezielte Suche besser search_job_definitions verwenden.
Args:
page: Seitennummer ab 0 (Standard: 0).
Returns:
Objekt mit 'data', 'totalItems' und 'totalPages'.
Inputs: page.
list_job_instancesA
Listet die letzten Job-Ausführungen aller Geräte auf.
Args:
page: Seitennummer ab 0 (Standard: 0).
Returns:
Objekt mit 'data', 'totalItems' und 'totalPages'.
Felder: jobDefinitionName, endpointName, state, stateDescription,
start, lastAction, successfulExecutions, erroneousExecutions.
Inputs: page.
report_agent_healthA
Zeigt den Gesundheitsstatus des baramundi Client-Agenten über alle Geräte hinweg.
Identifiziert Geräte mit gestopptem oder fehlendem Agent.
Args:
type: Gerätetyp — 'windows' (Standard), 'mac' oder 'linux'.
Returns:
Objekt mit 'total', 'byState' (Anzahl je Agent-Status) und
'problematic' (Geräte mit nicht laufendem Agent).
Inputs: type.
report_failed_jobsA
Listet Job-Instanzen mit Fehlern auf, sortiert nach Fehleranzahl.
Args:
limit: Maximale Anzahl zurückgegebener Einträge (Standard: 50).
Returns:
Objekt mit 'total' und 'instances' (sortiert nach erroneousExecutions, absteigend).
Inputs: limit.
report_inactive_devicesA
Findet Geräte, die seit einer bestimmten Anzahl von Tagen nicht mehr gesehen wurden.
Args:
days: Schwellwert in Tagen (Standard: 30).
type: Gerätetyp — 'windows' (Standard), 'mac' oder 'linux'.
limit: Maximale Anzahl zurückgegebener Geräte (Standard: 50).
Returns:
Objekt mit 'total' und 'devices' (sortiert nach daysSinceLastSeen, absteigend).
Inputs: days, type, limit.
report_os_distributionA
Erstellt eine Übersicht der Betriebssystem-Versionen aller verwalteten Geräte.
Hilfreich um veraltete OS-Versionen zu identifizieren (z.B. Windows 7 / Windows 10).
Args:
type: Gerätetyp — 'windows' (Standard), 'mac' oder 'linux'.
Returns:
Objekt mit 'total' und 'distribution' (Anzahl je OS-Version, absteigend sortiert).
Inputs: type.
report_update_complianceA
Zeigt eine Compliance-Übersicht aller Windows-Geräte nach Update-Status.
Ideal um veraltete oder nicht gepatchte Geräte zu identifizieren.
Args:
min_missing: Mindestanzahl fehlender Updates, damit ein Gerät gelistet wird
(Standard: 1 — alle Geräte mit mindestens einem fehlenden Update).
category: Welche Update-Kategorie berücksichtigt werden soll:
'critical', 'security', 'other' oder 'any' (Standard).
limit: Maximale Anzahl Geräte im Ergebnis (Standard: 50).
Returns:
Objekt mit 'summary' (Gesamtübersicht) und 'devices' (sortiert nach fehlenden Updates).
Inputs: limit, category, min_missing.
search_devicesA
Sucht Geräte nach Hostname, IP-Adresse, Benutzer oder Gruppe.
Die Suche ist case-insensitiv und prüft auf Teilübereinstimmung.
Args:
query: Suchbegriff — wird in Hostname, IP, registeredUser und
logicalGroup gesucht (z.B. 'PCSWIT1984', '192.168.50', 'Köln').
type: Gerätetyp — 'windows' (Standard), 'mac' oder 'linux'.
limit: Maximale Anzahl Ergebnisse (Standard: 20).
Returns:
Objekt mit 'data' (gefundene Geräte) und 'total'.
Inputs: query (required), type, limit.
search_job_definitionsA
Sucht Job-Definitionen nach Name oder Typ (Präfix).
Jobs folgen der Namenskonvention: INST: (Installation), DEINST: (Deinstallation),
RUN: (Skript/Aktion), UPD: (Update), SCAN:, OS:, REG:, INV:.
Args:
query: Suchbegriff im Job-Namen (z.B. 'Chrome', 'Edge', 'Office').
Leer = alle Jobs des angegebenen Typs.
type: Job-Typ als Präfix oder Kurzname:
'install' / 'INST:', 'uninstall' / 'DEINST:', 'run' / 'RUN:',
'update' / 'UPD:', 'scan' / 'SCAN:', 'os' / 'OS:'.
Leer = alle Typen durchsuchen.
limit: Maximale Anzahl Ergebnisse (Standard: 30).
Returns:
Objekt mit 'data' (Job-Liste) und 'total'.
Felder: id, name, displayName, type, folder, category.
Inputs: type, limit, query.
start_jobA
Startet einen Job auf einem Endpunkt (Softwareverteilung, Scan, Skript etc.).
WICHTIG: Standardmäßig ist dry_run=True — der Job wird NICHT wirklich gestartet,
sondern nur angezeigt, was passieren würde. Zum echten Starten dry_run=False setzen.
Immer zuerst mit dry_run=True bestätigen lassen, bevor der echte Start erfolgt.
Workflow:
1. search_job_definitions(query='Chrome', type='install') → job_definition_id
2. get_device(identifier='PCSWIT1234') oder search_devices(query='PCSWIT1234') → endpoint_id
3. start_job(job_definition_id=..., endpoint_id=..., dry_run=True) → Vorschau
4. start_job(job_definition_id=..., endpoint_id=..., dry_run=False) → Ausführen
Args:
job_definition_id: GUID der Job-Definition (aus search_job_definitions).
endpoint_id: GUID des Ziel-Endpunkts (aus get_device / search_devices).
dry_run: True (Standard) = nur Vorschau, kein API-Aufruf.
False = Job wird wirklich gestartet.
start_if_already_assigned: True (Standard) = Job auch starten wenn bereits zugewiesen.
False = nur starten wenn noch nicht zugewiesen.
Returns:
Bei dry_run=True: Vorschau-Objekt mit job- und endpoint-Details.
Bei dry_run=False: Neue Job-Instanz von der API (id, state, start, ...).
Inputs: endpoint_id (required), job_definition_id (required), dry_run, start_if_already_assigned.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Each tool targets a distinct resource and action: device queries, update status, software inventory, VLAN, job definitions, instances, and various reports. No overlapping purposes; descriptions clearly differentiate even similar-sounding report tools.
All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_device, list_devices, search_devices, start_job). No mixing of styles or vague verbs.
17 tools cover the main functionalities of a device management server: device query, update status, software inventory, job management, and reports. The count is well-scoped for the domain without unnecessary redundancy.
The tool surface covers core operations: reading devices, updates, software, jobs, and reports, plus starting jobs. Missing write operations like creating/deleting devices or job definitions, but these may be out of scope for a read/execute-focused server.
Maintenance
Related MCP Connectors
MCP server for Support & Service Management
MCP server providing attendance data queries via the CloudTime API.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server for Datto RMM, enabling Claude to interact with devices, sites, alerts, and jobs in your Datto RMM account.4Apache 2.0
- FlicenseNot gradedqualityCmaintenanceMCP server that integrates with Microsoft Dynamics 365 Business Central, enabling querying of customers, items, and sales orders through natural language commands in Claude Desktop.10-
- AlicenseNot gradedqualityCmaintenanceMCP server for managing devices via JAMF Pro and Microsoft Intune APIs, enabling AI assistants to query and control device management tasks.MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that connects Claude Desktop to the IT Asset Tracker backend, giving Claude access to 70+ tools for managing assets, users, requests, and reports.-