Skip to main content
Glama
baramundi MCP Server

baramundi MCP Server

by mikewegmann

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 sync

2. 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=false

3. Server testen

# Alle Tools im Browser testen (MCP Inspector)
uv run mcp dev src/baramundi_mcp/server.py

In 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

list_devices

Alle verwalteten Geräte auflisten

get_device

Details zu einem Gerät abrufen

get_device_status

Patch-Level und Status eines Geräts

list_jobs

Jobs auflisten (aktiv, geplant, abgeschlossen)

get_job_status

Status eines laufenden Jobs

start_job

Job auf einem Gerät starten (schreibend!)

get_compliance_report

Patch-Compliance-Übersicht

list_software_inventory

Software-Inventar abfragen

Available Tools

17 tools
get_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

    A4.2/5.0

    Scored across 17 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      MCP server for Datto RMM, enabling Claude to interact with devices, sites, alerts, and jobs in your Datto RMM account.
      4
      Apache 2.0
    • F
      license
      Not graded
      quality
      C
      maintenance
      MCP 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
      -
    • F
      license
      Not graded
      quality
      D
      maintenance
      An 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.
      -