Skip to main content
Glama

Portainer MCP

Official
by portainer
zlib License
20
  • Linux
  • Apple

Portainer MCP

Abdeckung

Haben Sie sich jemals gewünscht, Sie könnten Portainer einfach fragen, was los ist?

Jetzt ist es möglich! Portainer MCP verbindet Ihren KI-Assistenten direkt mit Ihren Portainer-Umgebungen. Verwalten Sie Portainer-Ressourcen wie Benutzer und Umgebungen oder gehen Sie tiefer in die Materie, indem Sie beliebige Docker- oder Kubernetes-Befehle direkt über die KI ausführen.

portainer-mcp-demo

Überblick

Portainer MCP ist eine in Arbeit befindliche Implementierung des Model Context Protocol (MCP) für Portainer-Umgebungen. Dieses Projekt zielt darauf ab, eine standardisierte Möglichkeit bereitzustellen, die Containerverwaltungsfunktionen von Portainer mit KI-Modellen und anderen Diensten zu verbinden.

MCP (Model Context Protocol) ist ein offenes Protokoll, das standardisiert, wie Anwendungen Kontext für LLMs (Large Language Models) bereitstellen. Ähnlich wie USB-C eine standardisierte Möglichkeit bietet, Geräte mit Peripheriegeräten zu verbinden, bietet MCP eine standardisierte Möglichkeit, KI-Modelle mit verschiedenen Datenquellen und Tools zu verbinden.

Bei dieser Implementierung liegt der Schwerpunkt auf der Bereitstellung von Portainer-Umgebungsdaten über das MCP-Protokoll, sodass KI-Assistenten und andere Tools auf sichere und standardisierte Weise mit Ihrer containerisierten Infrastruktur interagieren können.

Weitere Einzelheiten zur Kompatibilität und den verfügbaren Funktionen finden Sie in den Abschnitten „Versionsunterstützung“ und „Unterstützte Funktionen“ von Portainer.

Hinweis: Dieses Projekt befindet sich derzeit in der Entwicklung.

Es ist derzeit für die Verwendung mit einem Portainer-Administrator-API-Token ausgelegt.

Installation

Sie können vorgefertigte Binärdateien für Linux (amd64, arm64) und macOS (arm64) von der Seite „Neueste Version“ herunterladen. Das passende Archiv für Ihr Betriebssystem und Ihre Architektur finden Sie im Abschnitt „Assets“.

Archiv herunterladen: Normalerweise können Sie es direkt von der Release-Seite herunterladen. Alternativ können Sie curl verwenden. Hier ist ein Beispiel für macOS (ARM64) Version v0.2.0 :

# Example for macOS (ARM64) - adjust version and architecture as needed curl -Lo portainer-mcp-v0.2.0-darwin-arm64.tar.gz https://github.com/portainer/portainer-mcp/releases/download/v0.2.0/portainer-mcp-v0.2.0-darwin-arm64.tar.gz

(Linux AMD64-Binärdateien sind auch auf der Release-Seite verfügbar.)

(Optional, aber empfohlen) Überprüfen Sie die Prüfsumme: Laden Sie zunächst die entsprechende .md5 Prüfsummendatei von der Release-Seite herunter. Beispiel für macOS (ARM64) v0.2.0 :

# Download the checksum file (adjust version/arch) curl -Lo portainer-mcp-v0.2.0-darwin-arm64.tar.gz.md5 https://github.com/portainer/portainer-mcp/releases/download/v0.2.0/portainer-mcp-v0.2.0-darwin-arm64.tar.gz.md5 # Now verify (output should match the content of the .md5 file) if [ "$(md5 -q portainer-mcp-v0.2.0-darwin-arm64.tar.gz)" = "$(cat portainer-mcp-v0.2.0-darwin-arm64.tar.gz.md5)" ]; then echo "OK"; else echo "FAILED"; fi

(Unter Linux können Sie md5sum -c <checksum_file_name>.md5 verwenden.) Wenn der Überprüfungsbefehl „OK“ ausgibt, ist die Datei intakt.

Extrahieren Sie das Archiv:

# Adjust the filename based on the downloaded version/OS/architecture tar -xzf portainer-mcp-v0.2.0-darwin-arm64.tar.gz

Dadurch wird die ausführbare Datei portainer-mcp extrahiert.

Verschieben Sie die ausführbare Datei: Verschieben Sie die ausführbare Datei an einen Speicherort in Ihrem $PATH (z. B. /usr/local/bin ) oder notieren Sie sich ihren Speicherort für den folgenden Konfigurationsschritt.

Verwendung

Konfigurieren Sie Claude Desktop folgendermaßen:

{ "mcpServers": { "portainer": { "command": "/path/to/portainer-mcp", "args": [ "-server", "[IP]:[PORT]", "-token", "[TOKEN]", "-tools", "/tmp/tools.yaml" ] } } }

Ersetzen Sie [IP] , [PORT] und [TOKEN] durch die IP, den Port und das API-Zugriffstoken, die Ihrer Portainer-Instanz zugeordnet sind.

[!NOTE] Standardmäßig sucht das Tool im selben Verzeichnis wie die Binärdatei nach „tools.yaml“. Falls die Datei nicht vorhanden ist, wird sie dort mit den Standardtooldefinitionen erstellt. Möglicherweise müssen Sie diesen Pfad wie oben beschrieben ändern, insbesondere bei der Verwendung von KI-Assistenten wie Claude, die nur eingeschränkte Schreibberechtigungen für das Arbeitsverzeichnis haben.

Werkzeuganpassung

Standardmäßig sind die Tooldefinitionen in die Binärdatei eingebettet. Die Anwendung erstellt eine Tooldatei am Standardspeicherort, falls noch keine vorhanden ist.

Sie können die Tooldefinitionen anpassen, indem Sie mit dem Flag -tools einen benutzerdefinierten Tooldateipfad angeben:

{ "mcpServers": { "portainer": { "command": "/path/to/portainer-mcp", "args": [ "-server", "[IP]:[PORT]", "-token", "[TOKEN]", "-tools", "/path/to/custom/tools.yaml" ] } } }

Die Standard-Tools-Datei steht im Quellcode unter internal/tooldef/tools.yaml zur Referenz bereit. Sie können die Beschreibungen der Tools und ihrer Parameter ändern, um die Interpretation und Verwendung durch KI-Modelle zu beeinflussen. Sie können sogar einige Tools entfernen, wenn Sie sie nicht verwenden möchten.

[!WARNING] Ändern Sie nicht die Toolnamen oder Parameterdefinitionen (mit Ausnahme der Beschreibungen), da dies dazu führt, dass die Tools nicht mehr richtig registriert werden und nicht mehr richtig funktionieren.

Schreibgeschützter Modus

Für sicherheitsbewusste Benutzer kann die Anwendung im schreibgeschützten Modus ausgeführt werden. Dieser Modus stellt sicher, dass nur Lesevorgänge verfügbar sind, wodurch Änderungen an Ihren Portainer-Ressourcen vollständig verhindert werden.

Um den schreibgeschützten Modus zu aktivieren, fügen Sie Ihren Befehlsargumenten das Flag -read-only hinzu:

{ "mcpServers": { "portainer": { "command": "/path/to/portainer-mcp", "args": [ "-server", "[IP]:[PORT]", "-token", "[TOKEN]", "-read-only" ] } } }

Bei Verwendung des schreibgeschützten Modus:

  • Dem KI-Modell stehen nur Lesetools (Liste, Abrufen) zur Verfügung.
  • Alle Schreibwerkzeuge (Erstellen, Aktualisieren, Löschen) werden nicht geladen
  • Das Docker-Proxy-Anforderungstool wird nicht geladen
  • Das Kubernetes-Proxy-Anforderungstool wird nicht geladen

Portainer-Versionsunterstützung

Dieses Tool unterstützt eine bestimmte Portainer-Version. Die Anwendung überprüft die Portainer-Serverversion beim Start und schlägt fehl, wenn sie nicht der erforderlichen Version entspricht.

Portainer MCP-VersionUnterstützte Portainer-Version
0.1.02.28.1
0.2.02.28.1
0.3.02.28.1
0.4.02.29.2
0.4.12.29.2
0.5.02.30.0

Unterstützte Funktionen

In der folgenden Tabelle sind die derzeit (neueste Version) durch MCP-Tools unterstützten Vorgänge aufgeführt:

RessourceBetriebBeschreibungUnterstützt in Version
Umgebungen
Umgebungen auflistenAlle verfügbaren Umgebungen auflisten0.1.0
UpdateEnvironmentTagsMit einer Umgebung verknüpfte Tags aktualisieren0.1.0
UpdateEnvironmentUserAccessesAktualisieren der Benutzerzugriffsrichtlinien für eine Umgebung0.1.0
UpdateEnvironmentTeamAccessesAktualisieren der Teamzugriffsrichtlinien für eine Umgebung0.1.0
Umgebungsgruppen (Edge-Gruppen)
Umgebungsgruppen auflistenAuflisten aller verfügbaren Umgebungsgruppen0.1.0
Umgebungsgruppe erstellenErstellen einer neuen Umgebungsgruppe0.1.0
Umgebungsgruppenname aktualisierenAktualisieren des Namens einer Umgebungsgruppe0.1.0
UpdateEnvironmentGroupEnvironmentsAktualisieren Sie Umgebungen, die einer Gruppe zugeordnet sind0.1.0
UpdateEnvironmentGroupTagsMit einer Gruppe verknüpfte Tags aktualisieren0.1.0
Zugriffsgruppen (Endpunktgruppen)
ListAccessGroupsAlle verfügbaren Zugriffsgruppen auflisten0.1.0
Zugriffsgruppe erstellenErstellen einer neuen Zugriffsgruppe0.1.0
Zugriffsgruppenname aktualisierenAktualisieren des Namens einer Zugriffsgruppe0.1.0
UpdateAccessGroupUserAccessesAktualisieren von Benutzerzugriffen für eine Zugriffsgruppe0.1.0
UpdateAccessGroupTeamAccessesTeamzugriffe für eine Zugriffsgruppe aktualisieren0.1.0
Umgebung zur Zugriffsgruppe hinzufügenHinzufügen einer Umgebung zu einer Zugriffsgruppe0.1.0
Umgebung aus Zugriffsgruppe entfernenEntfernen einer Umgebung aus einer Zugriffsgruppe0.1.0
Stapel (Randstapel)
ListStacksAlle verfügbaren Stapel auflisten0.1.0
GetStackFileHolen Sie sich die Compose-Datei für einen bestimmten Stapel0.1.0
Stapel erstellenErstellen Sie einen neuen Docker-Stack0.1.0
UpdateStackAktualisieren eines vorhandenen Docker-Stacks0.1.0
Schlagwörter
ListEnvironmentTagsListen Sie alle verfügbaren Umgebungs-Tags auf0.1.0
UmgebungsTag erstellenErstellen eines neuen Umgebungstags0.1.0
Teams
ListTeamsAlle verfügbaren Teams auflisten0.1.0
Team erstellenErstellen Sie ein neues Team0.1.0
TeamName aktualisierenAktualisieren des Namens eines Teams0.1.0
Teammitglieder aktualisierenAktualisieren der Mitglieder eines Teams0.1.0
Benutzer
BenutzerlisteAlle verfügbaren Benutzer auflisten0.1.0
Benutzer aktualisierenAktualisieren eines vorhandenen Benutzers0.1.0
Einstellungen abrufenHolen Sie sich die Einstellungen der Portainer-Instanz0.1.0
Docker
DockerProxyProxy für alle Docker-API-Anfragen0.2.0
Kubernetes
KubernetesProxyProxy für alle Kubernetes-API-Anfragen0.3.0

Entwicklung

Code-Statistiken

Das Repository enthält das Hilfsskript cloc.sh zur Berechnung von Codezeilen und anderen Metriken für die Go-Quelldateien mithilfe des Tools cloc . Möglicherweise müssen Sie cloc zuerst installieren (z. B. sudo apt install cloc oder brew install cloc ).

Führen Sie das Skript vom Stammverzeichnis des Repositorys aus, um die standardmäßige Zusammenfassungsausgabe anzuzeigen:

./cloc.sh

Einzelheiten zu den verfügbaren Flags zum Abrufen bestimmter Metriken finden Sie in der Kommentarüberschrift im Skript cloc.sh

Token-Zählung

Um eine Schätzung zu erhalten, wie viele Token Ihre aktuellen Tooldefinitionen in Eingabeaufforderungen verbrauchen, können Sie das bereitgestellte Go-Programm und Shell-Skript verwenden, um den Token-Zählendpunkt der Anthropic API abzufragen.

1. Generieren Sie das Tools-JSON:

Verwenden Sie zunächst das Go-Programm token-count , um Ihre YAML-Tooldefinitionen in das von der Anthropic API benötigte JSON-Format zu konvertieren. Führen Sie Folgendes vom Repository-Stamm aus:

# Replace internal/tooldef/tools.yaml with your YAML file if different # Replace .tmp/tools.json with your desired output path go run ./cmd/token-count -input internal/tooldef/tools.yaml -output .tmp/tools.json

Dieser Befehl liest die Tooldefinitionen aus der angegebenen YAML-Eingabedatei und schreibt ein JSON-Array von Tools (mit name , description und input_schema ) in die angegebene Ausgabedatei.

2. Abfrage der Anthropic API:

Verwenden Sie anschließend das Skript token.sh , um diese Tooldefinitionen zusammen mit einer Beispielnachricht an die Anthropic API zu senden. Für diesen Schritt benötigen Sie einen Anthropic API-Schlüssel.

# Ensure you have jq installed # Replace sk-ant-xxxxxxxx with your actual Anthropic API key # Replace .tmp/tools.json with the path to the file generated in step 1 ./token.sh -k sk-ant-xxxxxxxx -i .tmp/tools.json

Das Skript gibt die JSON-Antwort der Anthropic-API aus, die die geschätzte Token-Anzahl für die bereitgestellten Tools und eine Beispielnachricht im Feld usage.input_tokens enthält.

Dieser Prozess hilft dabei, die Token-Kosten zu verstehen, die mit dem für das Sprachmodell bereitgestellten Toolset verbunden sind.

-
security - not tested
A
license - permissive license
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Portainer MCP

  1. Überblick
    1. Installation
      1. Verwendung
        1. Werkzeuganpassung
        2. Schreibgeschützter Modus
      2. Portainer-Versionsunterstützung
        1. Unterstützte Funktionen
          1. Entwicklung
            1. Code-Statistiken
            2. Token-Zählung

          Related MCP Servers

          View all related MCP servers

          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/portainer/portainer-mcp'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server