gitlab-api
Gitlab Api
CLI oder API | MCP | Agent
Version: 27.1.0
Dokumentation — Installation, Bereitstellung, Nutzung über die API-, CLI- und MCP-Schnittstellen, der integrierte A2A-Agent-Server sowie Anleitungen zur Bereitstellung der zugrunde liegenden GitLab-Instanz sind in der offiziellen Dokumentation zu finden.
Related MCP server: Kepler MCP GitLab Server
Überblick
Gitlab Api ist ein produktionsreifer Agent- und Model-Context-Protocol-Server (MCP), der für die direkte Anbindung an GitLab API + MCP Server + A2A Server entwickelt wurde.
Kernfunktionen
Konsolidierte aktionsgesteuerte MCP-Tools: Minimiert den Token-Overhead und beseitigt Tool-Aufblähung in LLM-Kontexten, indem Methoden in optimierte, umschaltbare Tool-Module gruppiert werden.
Sicherheit auf Unternehmensniveau: Umfassende Unterstützung für Eunomia-Richtlinien, OIDC-Tokendelegation und granulare Verfolgung des Ausführungskontexts.
Integrierter Graph-Agent: Integrierter Pydantic-AI-Agent, der das Agent Control Protocol (ACP) und Standard-Web-Schnittstellen (AG-UI) unterstützt.
Native Telemetrie & Tracing: OpenTelemetry-Exporte sofort einsatzbereit und natives Langfuse-Tracing.
CLI oder API
Dieser Agent kapselt die GitLab API + MCP Server + A2A Server API. Sie können ihn programmatisch oder über seine integrierten Ausführungs-Einstiegspunkte ansprechen.
Detaillierte Anweisungen zur Verwendung der zugrunde liegenden API-Wrapper, erweiterten Schema-Bindungen und Entwickler-SDK-Referenzen finden Sie in docs/index.md.
MCP
Dieser Server verwendet dynamische aktionsgesteuerte Tools, um den Token-Overhead zu optimieren und die IDE-Kompatibilität zu maximieren.
Tool-Oberfläche — MCP_TOOL_MODE
Setzen Sie MCP_TOOL_MODE (in der gemeinsamen ~/.config/agent-utilities/config.json oder als Umgebungsvariable):
condensed (Standard — die unten aufgeführten aktionsgesteuerten Tools), verbose (ein benanntes 1:1-Tool pro API-Methode, z. B. gitlab_get_branches(...), markiert mit verbose), oder both. Filtern Sie die verbose-Menge mit --tools tag:verbose / MCP_ENABLED_TAGS=verbose. Siehe den MCP Tool Modes-Leitfaden von agent-utilities.
Verfügbare MCP-Tools
Automatisch vom Live-MCP-Server generiert — nicht von Hand bearbeiten.
Kompakte aktionsgesteuerte Tools (Standard — MCP_TOOL_MODE=condensed)
MCP-Tool | Umschalt-Env-Var | Beschreibung |
|
| Beliebige GitLab-REST-API-Anfragen direkt ausführen. |
|
| Operationen für gitlab-Branches verwalten. |
|
| Operationen für gitlab-Commits verwalten. |
|
| Operationen für gitlab-Deploy-Tokens verwalten. |
|
| Das dynamische GitLab-GraphQL-Schema einschließlich Typen, Feldern und benutzerdefinierten Attributen in Echtzeit entdecken. |
|
| Operationen für gitlab-Umgebungen verwalten. |
|
| GitLab-Epics verwalten. |
|
| Rohe GraphQL-Abfragen und -Mutationen nativ auf GitLab ausführen. |
|
| Eine typisierte GitLab-GraphQL-Operation anhand des Namens ausführen. |
|
| Operationen für gitlab-Gruppen verwalten. |
|
| GitLab-CI-Pipeline-Läufe (+ Jobs) nativ in epistemic-graph aufnehmen. |
|
| GitLab-Projekte nativ als typisierte :Project-Knoten in epistemic-graph aufnehmen. |
|
| Die konfigurierten GitLab-Mandanten auflisten (CONCEPT:AU-KG.backend.declared-columns-so-schema). |
|
| GitLab-Issues verwalten. |
|
| Operationen für gitlab-Jobs verwalten. |
|
| GitLab-Labels verwalten. |
|
| Operationen für gitlab-Mitglieder verwalten. |
|
| Operationen für gitlab-Merge-Requests verwalten. |
|
| Operationen für gitlab-Merge-Regeln verwalten. |
|
| GitLab-Meilensteine verwalten. |
|
| Operationen für gitlab-Namespaces verwalten. |
|
| GitLab-Notizen/Kommentare zu Issues, Merge Requests, Commits und Epics verwalten. |
|
| Operationen für gitlab-Pakete verwalten. |
|
| Operationen für gitlab-Pipeline-Zeitpläne verwalten. |
|
| Operationen für gitlab-Pipelines verwalten. |
|
| Operationen für gitlab-Projekte verwalten. |
|
| Operationen für geschützte gitlab-Branches verwalten. |
|
| Operationen für gitlab-Releases verwalten. |
|
| Operationen für gitlab-Runner verwalten. |
|
| GitLab-Snippets verwalten. |
|
| Operationen für gitlab-Tags verwalten. |
|
| Operationen für gitlab-Benutzer verwalten. |
|
| Die Abhängigkeitsliste und Sicherheitslücken eines Projekts überprüfen (das GitLab-Pendant zu GitHub Dependabot). |
|
| Operationen für gitlab-Wikis verwalten. |
Verbose 1:1-API-zugeordnete Tools (MCP_TOOL_MODE=verbose oder both)
MCP-Tool | Umschalt-Env-Var | Beschreibung |
|
| Merge-Request akzeptieren (zusammenführen). |
|
| Eine benutzerdefinierte API-Anfrage an den GitLab-Server senden. |
|
| Einen bestimmten Merge-Request genehmigen. |
|
| Ein bestimmtes Projekt archivieren. |
|
| Den geplanten „Merge when pipeline succeeds“ (Auto-Merge) eines Merge-Requests abbrechen. |
|
| Einen bestimmten Job in einem Projekt abbrechen. |
|
| Einen Commit in einen neuen Branch cherry-picken. |
|
| Einen neuen Branch in einem Projekt erstellen. |
|
| Einen neuen Commit erstellen. |
|
| Einen Kommentar zu einem Commit erstellen. |
|
| Eine neue Umgebung für ein Projekt erstellen. |
|
| Ein neues Gruppen-Epic erstellen. |
|
| Ein Deploy-Token für eine Gruppe erstellen. |
|
| Ein neues Issue erstellen. |
|
| Ein neues Label erstellen. |
|
| Einen neuen Merge-Request erstellen. |
|
| Einen Projekt-Meilenstein erstellen. |
|
| Eine neue Notiz/einen neuen Kommentar zu einem Issue erstellen. |
|
| Einen Pipeline-Zeitplan für ein bestimmtes Projekt erstellen. |
|
| Eine Variable für einen Pipeline-Zeitplan erstellen. |
|
| Ein neues Projekt erstellen. |
|
| Ein Deploy-Token für ein Projekt erstellen. |
|
| Eine neue Genehmigungsregel für Merge-Requests auf Projektebene erstellen. |
|
| Ein neues Release in einem Projekt erstellen. |
|
| Nachweis für ein Release in einem Projekt erstellen. |
|
| Ein Projekt-Snippet oder persönliches Snippet erstellen. |
|
| Einen Tag in einem Projekt erstellen. |
|
| Einen neuen Benutzer erstellen. |
|
| Eine neue Wiki-Seite für ein Projekt erstellen. |
|
| Einen Branch in einem Projekt löschen. |
|
| Eine Umgebung für ein Projekt löschen. |
|
| Ein Gruppen-Epic löschen. |
|
| Ein Deploy-Token für eine Gruppe löschen. |
|
| Ein Issue löschen. |
|
| Ein Label löschen. |
|
| Alle zusammengeführten Branches in einem Projekt löschen. |
|
| Einen Projekt-Meilenstein löschen. |
|
| Eine Notiz löschen. |
|
| Einen Pipeline-Zeitplan für ein bestimmtes Projekt löschen. |
|
| Eine Variable aus einem Pipeline-Zeitplan löschen. |
|
| Ein bestimmtes Projekt löschen. |
|
| Ein Deploy-Token für ein Projekt löschen. |
|
| Eine Genehmigungsregel für Merge-Requests auf Projektebene löschen. |
|
| Einen Runner aus einem Projekt löschen. |
|
| Ein Release in einem Projekt löschen. |
|
| Einen Runner löschen. |
|
| Ein bestimmtes Projekt von einer Gruppe trennen (Freigabe aufheben). |
|
| Ein Snippet löschen. |
|
| Gestoppte Umgebungen (Review-Apps) für ein Projekt löschen. |
|
| Einen Tag in einem Projekt löschen. |
|
| Einen Benutzer löschen. |
|
| Eine Wiki-Seite für ein Projekt löschen. |
|
| Ein Release-Asset aus einem Gruppen-Release herunterladen. |
|
| Ein Repository-Paket für ein bestimmtes Projekt herunterladen. |
|
| Eine bestimmte Gruppe bearbeiten. |
|
| Eine Genehmigungseinstellung für Merge-Requests auf Gruppenebene bearbeiten. |
|
| Einen Pipeline-Zeitplan für ein bestimmtes Projekt bearbeiten. |
|
| Ein bestimmtes Projekt bearbeiten. |
|
| Eine Genehmigungseinstellung für Merge-Requests auf Projektebene bearbeiten. |
|
| Einen Runner in einem Projekt aktivieren. |
|
| Einen bestimmten Job in einem Projekt löschen. |
|
| Den Genehmigungsstatus von Merge-Requests für ein bestimmtes Projekt abrufen. |
|
| Informationen über einen bestimmten Branch in einem Projekt abrufen. |
|
| Informationen über Branches in einem Projekt abrufen. |
|
| Einen bestimmten Commit abrufen. |
|
| Kommentare zu einem Commit abrufen. |
|
| Den Diff eines Commits abrufen. |
|
| Diskussionen zu einem Commit abrufen. |
|
| GPG-Signatur eines Commits abrufen. |
|
| Mit einem Commit verknüpfte Merge-Requests abrufen. |
|
| Referenzen eines Commits abrufen. |
|
| Status eines Commits abrufen. |
|
| Commits abrufen. |
|
| Alle Deploy-Tokens abrufen. |
|
| Details einer bestimmten Umgebung abrufen. |
|
| Eine Liste der Umgebungen für ein Projekt abrufen. |
|
| Ein bestimmtes Gruppen-Epic abrufen. |
|
| Alle Epics für eine Gruppe abrufen. |
|
| Details einer bestimmten Gruppe abrufen. |
|
| Ein bestimmtes Deploy-Token für eine Gruppe abrufen. |
|
| Deploy-Tokens für eine bestimmte Gruppe abrufen. |
|
| Untergruppen einer bestimmten Gruppe abrufen. |
|
| Die Liste der Issues für eine Gruppe (und standardmäßig deren Untergruppen) abrufen. |
|
| Details einer Genehmigungseinstellung für Merge-Requests auf Gruppenebene abrufen. |
|
| Mitglieder einer bestimmten Gruppe abrufen. |
|
| Mit einer bestimmten Gruppe verknüpfte Merge-Requests abrufen. |
|
| Mit einer bestimmten Gruppe verknüpfte Projekte abrufen. |
|
| Informationen über Releases in einer Gruppe abrufen. |
|
| Informationen über Runner in einer Gruppe abrufen. |
|
| Untergruppen einer bestimmten Gruppe abrufen. |
|
| Sicherheitslücken-Ergebnisse einer Gruppe abrufen (Ultimate). |
|
| Eine Liste von Gruppen abrufen. |
|
| Ein einzelnes Issue abrufen. |
|
| Liste von Issues abrufen. Kann nach project_id filtern. |
|
| Ein bestimmtes Label nach Namen abrufen. |
|
| Alle Labels für ein Projekt abrufen. |
|
| Informationen über das neueste Release in einem Projekt abrufen. |
|
| Das Asset für das neueste Release in einem Projekt abrufen. |
|
| Nachweis für das neueste Release in einem Projekt abrufen. |
|
| Genehmigungsregeln auf Merge-Request-Ebene für ein bestimmtes Projekt und einen bestimmten Merge-Request abrufen. |
|
| Eine Liste von Merge-Requests abrufen. |
|
| Einen bestimmten Projekt-Meilenstein abrufen. |
|
| Alle Meilensteine für ein Projekt abrufen. |
|
| Informationen über einen bestimmten Namespace abrufen. |
|
| Informationen über Namespaces abrufen. |
|
| Informationen über verschachtelte Projekte innerhalb einer Gruppe abrufen. |
|
| Eine bestimmte Notiz abrufen. |
|
| Alle Notizen für ein bestimmtes Issue abrufen. |
|
| Informationen über eine bestimmte Pipeline in einem Projekt abrufen. |
|
| Jobs abrufen, die mit einer bestimmten Pipeline in einem Projekt verknüpft sind. |
|
| Informationen über einen bestimmten Pipeline-Zeitplan in einem Projekt abrufen. |
|
| Pipeline-Zeitpläne für ein bestimmtes Projekt abrufen. |
|
| Informationen über Pipelines für ein bestimmtes Projekt abrufen. |
|
| Pipelines abrufen, die von einem bestimmten Pipeline-Zeitplan ausgelöst wurden. |
|
| Informationen über ein bestimmtes Projekt abrufen. |
|
| Informationen über Mitwirkende an einem Projekt abrufen. |
|
| Die Abhängigkeitsliste eines Projekts abrufen (alle erkannten Abhängigkeiten). |
|
| Ein bestimmtes Deploy-Token für ein Projekt abrufen. |
|
| Deploy-Tokens für ein bestimmtes Projekt abrufen. |
|
| Mit einem bestimmten Projekt verknüpfte Gruppen abrufen. |
|
| Details eines bestimmten Jobs in einem Projekt abrufen. |
|
| Das Protokoll eines bestimmten Jobs in einem Projekt abrufen. |
|
| Jobs abrufen, die mit einem bestimmten Projekt verknüpft sind. |
|
| Details einer bestimmten Genehmigungsregel für Merge-Requests auf Projektebene abrufen. |
|
| Genehmigungsregeln für Merge-Requests auf Projektebene abrufen. |
|
| Details einer Genehmigungseinstellung für Merge-Requests auf Projektebene abrufen. |
|
| Mitglieder eines bestimmten Projekts abrufen. |
|
| Details eines bestimmten Merge-Requests in einem Projekt abrufen. |
|
| Merge-Requests für ein bestimmtes Projekt abrufen. |
|
| Informationen über Runner in einem Projekt abrufen. |
|
| Statistiken für ein bestimmtes Projekt abrufen. |
|
| Sicherheitslücken eines Projekts abrufen (Ultimate). |
|
| Informationen über Projekte abrufen. |
|
| Informationen über einen bestimmten geschützten Branch in einem Projekt abrufen. |
|
| Informationen über geschützte Branches in einem Projekt abrufen. |
|
| Details einer bestimmten geschützten Umgebung abrufen. |
|
| Eine Liste der geschützten Umgebungen für ein Projekt abrufen. |
|
| Informationen über einen bestimmten geschützten Tag in einem Projekt abrufen. |
|
| Informationen über geschützte Tags in einem Projekt abrufen. |
|
| Informationen über ein Release anhand seines Tags in einem Projekt abrufen. |
|
| Informationen über Releases in einem Projekt abrufen. |
|
| Informationen über Repository-Pakete für ein bestimmtes Projekt abrufen. |
|
| Informationen über einen bestimmten Runner abrufen. |
|
| Jobs für einen bestimmten Runner abrufen. |
|
| Informationen über Runner abrufen. |
|
| Ein bestimmtes Snippet abrufen. |
|
| Liste von Snippets abrufen. Kann nach project_id filtern. |
|
| Informationen über einen bestimmten Tag in einem Projekt abrufen. |
|
| Informationen über Tags in einem Projekt abrufen. |
|
| Informationen über einen bestimmten Benutzer abrufen. |
|
| Informationen über Benutzer abrufen. |
|
| Eine einzelne Sicherheitslücke anhand ihrer globalen ID abrufen (Ultimate). |
|
| Eine Liste der Wiki-Seiten für ein Projekt abrufen. |
|
| Informationen über eine bestimmte Wiki-Seite abrufen. |
|
| Genehmigungen für einen bestimmten Merge-Request abrufen. |
|
| Einen bestimmten Runner pausieren oder reaktivieren. |
|
| Build-Status an einen Commit senden. |
|
| Einen bestimmten Branch in einem Projekt schützen. |
|
| Eine Umgebung für ein Projekt schützen. |
|
| Einen Tag in einem Projekt schützen. |
|
| Ein Repository-Paket für ein bestimmtes Projekt veröffentlichen. |
|
| Einen neuen Runner registrieren. |
|
| Code-Owner-Genehmigungen für einen bestimmten Branch in einem Projekt anfordern. |
|
| GitLab-Runner-Registrierungstoken zurücksetzen. |
|
| Registrierungstoken für den Runner einer Gruppe zurücksetzen. |
|
| Registrierungstoken für den Runner eines Projekts zurücksetzen. |
|
| Authentifizierungstoken für einen Runner zurücksetzen. |
|
| Einen bestimmten Job in einem Projekt erneut versuchen. |
|
| Einen Commit zurücknehmen (revertieren). |
|
| Eine Pipeline für ein bestimmtes Projekt ausführen. |
|
| Einen Pipeline-Zeitplan für ein bestimmtes Projekt ausführen. |
|
| Einen bestimmten Job in einem Projekt ausführen. |
|
| Ein bestimmtes Projekt mit einer Gruppe teilen. |
|
| Eine Umgebung für ein Projekt stoppen. |
|
| Veraltete Umgebungen für ein Projekt stoppen. |
|
| Besitz eines Pipeline-Zeitplans für ein bestimmtes Projekt übernehmen. |
|
| Die Genehmigung eines bestimmten Merge-Requests zurückziehen. |
|
| Ein bestimmtes Projekt aus dem Archiv holen (reaktivieren). |
|
| Den Schutz eines bestimmten Branchs in einem Projekt aufheben. |
|
| Den Schutz einer Umgebung für ein Projekt aufheben. |
|
| Den Schutz eines Tags in einem Projekt aufheben. |
|
| Eine vorhandene Umgebung für ein Projekt aktualisieren. |
|
| Ein Gruppen-Epic aktualisieren. |
|
| Ein Issue aktualisieren. |
|
| Ein vorhandenes Label aktualisieren. |
|
| Einen Projekt-Meilenstein aktualisieren. |
|
| Eine Notiz aktualisieren. |
|
| Eine vorhandene Genehmigungsregel für Merge-Requests auf Projektebene aktualisieren. |
|
| Eine geschützte Umgebung für ein Projekt aktualisieren. |
|
| Informationen über ein Release in einem Projekt aktualisieren. |
|
| Details für einen bestimmten Runner aktualisieren. |
|
| Ein Snippet aktualisieren. |
|
| Einen vorhandenen Benutzer aktualisieren. |
|
| Eine vorhandene Wiki-Seite für ein Projekt aktualisieren. |
|
| Einen Anhang zu einer Wiki-Seite für ein Projekt hochladen. |
|
| Runner-Authentifizierung überprüfen. |
34 aktionsgeroutete Tool(s) (Standard) · 196 verbose 1:1-Tool(s). Jedes ist aktiviert, sofern sein <DOMAIN>TOOL-Schalter nicht auf false gesetzt ist; MCP_TOOL_MODE wählt die Oberfläche (condensed Standard · verbose 1:1 · both). Automatisch generiert — nicht bearbeiten.
Detaillierte Tool-Schemas, Parameterstrukturen und Validierungsbeschränkungen sind in docs/usage.md dokumentiert.
Dynamische Tool-Auswahl und Sichtbarkeit
Dieser MCP-Server unterstützt die dynamische Auswahl von Tool-Sets und die Sichtbarkeitsfilterung zur Laufzeit. Dadurch können Sie die Menge der bereitgestellten Tools einschränken, um ein Aufblähen des Kontextfensters des LLM zu verhindern.
Sie können die Tool-Filterung über mehrere Eingabekanäle konfigurieren:
CLI-Argumente: Übergeben Sie
--toolsoder--toolsets(oder deren deaktivierte Gegenstücke--disabled-toolsund--disabled-toolsets) beim Start.Umgebungsvariablen: Definieren Sie Standard-Umgebungsvariablen:
MCP_ENABLED_TOOLS/MCP_DISABLED_TOOLSMCP_ENABLED_TAGS/MCP_DISABLED_TAGS
HTTP-SSE-Anfrageheader: Übergeben Sie während der Transportinitialisierung benutzerdefinierte Header:
x-mcp-enabled-tools/x-mcp-disabled-toolsx-mcp-enabled-tags/x-mcp-disabled-tags
HTTP-SSE-Anfrage-Query-Parameter: Fügen Sie Query-Parameter direkt an Ihre Transportverbindungs-URL an:
?tools=tool1,tool2?tags=tag1
Wenn Query-Strings oder -Parameter angegeben werden, gleicht eine LLM-freie Knowledge-Graph-Auflösungsebene (unter Verwendung von DynamicToolOrchestrator) die Abfrageintentionen mit bekannten Tool-Tags, -Namen oder -Beschreibungen ab, mit sicherem Fallback und automatischer 24-stündiger Hintergrundaktualisierung des Caches.
MCP-Konfigurationsbeispiele
Installieren Sie das connector-fokussierte Zusatzpaket
[mcp]. Die Beispiele verwendengitlab-api[mcp], um FastMCP / FastAPI überagent-utilities[mcp]hinzuzufügen; der erforderliche Agent-Utilities-Kern enthält weiterhinepistemic-graph[full]. Das Zusatzpaket[agent-runtime]aktiviert zusätzlich die Modell-Orchestrierung.
stdio-Transport (lokale IDEs — Cursor, Claude Desktop, VS Code)
{
"mcpServers": {
"gitlab-mcp": {
"command": "uvx",
"args": [
"--from",
"gitlab-api[mcp]",
"gitlab-mcp"
],
"env": {
"MCP_TOOL_MODE": "intent",
"BRANCHESTOOL": "True",
"COMMITSTOOL": "True",
"CUSTOM_APITOOL": "True",
"DEPLOY_TOKENSTOOL": "True",
"ENVIRONMENTSTOOL": "True",
"EPICSTOOL": "True",
"GITLAB_TOKEN": "your_gitlab_token_here",
"GITLAB_URL": "https://gitlab.example.com",
"GRAPHQLTOOL": "True",
"GRAPHQL_OPSTOOL": "True",
"GROUPSTOOL": "True",
"ISSUESTOOL": "True",
"JOBSTOOL": "True",
"LABELSTOOL": "True",
"MEMBERSTOOL": "True",
"MERGE_REQUESTSTOOL": "True",
"MERGE_RULESTOOL": "True",
"MILESTONESTOOL": "True",
"MISCTOOL": "True",
"NAMESPACESTOOL": "True",
"NOTESTOOL": "True",
"PACKAGESTOOL": "True",
"PIPELINESTOOL": "True",
"PIPELINE_SCHEDULESTOOL": "True",
"PROJECTSTOOL": "True",
"PROTECTED_BRANCHESTOOL": "True",
"RELEASESTOOL": "True",
"RUNNERSTOOL": "True",
"SNIPPETSTOOL": "True",
"TAGSTOOL": "True",
"USERSTOOL": "True",
"VULNERABILITIESTOOL": "True",
"WIKITOOL": "True"
}
}
}
}Laufzeitreferenzen erfordern einen alias-fähigen Launcher wie GraphOS. Andere Launcher müssen diese Einträge weglassen und die aufgelösten Werte über ihre eigene Laufzeit-Geheimnisgrenze injizieren.
Streamable-HTTP-Transport (netzwerkbasiert / Produktion)
{
"mcpServers": {
"gitlab-mcp": {
"command": "uvx",
"args": [
"--from",
"gitlab-api[mcp]",
"gitlab-mcp",
"--transport",
"streamable-http",
"--port",
"8000"
],
"env": {
"TRANSPORT": "streamable-http",
"HOST": "127.0.0.1",
"PORT": "8000",
"MCP_TOOL_MODE": "intent",
"BRANCHESTOOL": "True",
"COMMITSTOOL": "True",
"CUSTOM_APITOOL": "True",
"DEPLOY_TOKENSTOOL": "True",
"ENVIRONMENTSTOOL": "True",
"EPICSTOOL": "True",
"GITLAB_TOKEN": "your_gitlab_token_here",
"GITLAB_URL": "https://gitlab.example.com",
"GRAPHQLTOOL": "True",
"GRAPHQL_OPSTOOL": "True",
"GROUPSTOOL": "True",
"ISSUESTOOL": "True",
"JOBSTOOL": "True",
"LABELSTOOL": "True",
"MEMBERSTOOL": "True",
"MERGE_REQUESTSTOOL": "True",
"MERGE_RULESTOOL": "True",
"MILESTONESTOOL": "True",
"MISCTOOL": "True",
"NAMESPACESTOOL": "True",
"NOTESTOOL": "True",
"PACKAGESTOOL": "True",
"PIPELINESTOOL": "True",
"PIPELINE_SCHEDULESTOOL": "True",
"PROJECTSTOOL": "True",
"PROTECTED_BRANCHESTOOL": "True",
"RELEASESTOOL": "True",
"RUNNERSTOOL": "True",
"SNIPPETSTOOL": "True",
"TAGSTOOL": "True",
"USERSTOOL": "True",
"VULNERABILITIESTOOL": "True",
"WIKITOOL": "True"
}
}
}
}Alternativ können Sie über url eine Verbindung zu einer bereits bereitgestellten Streamable-HTTP-Instanz herstellen:
{
"mcpServers": {
"gitlab-mcp": {
"url": "http://localhost:8000/gitlab-mcp/mcp"
}
}
}Führen Sie ein geprüftes Container-Image als stdio-Kindprozess mit minimalen Rechten aus (kein Listener oder veröffentlichter Port):
docker run -i --rm \
--read-only \
--cap-drop=ALL \
--security-opt=no-new-privileges \
--pids-limit=256 \
--tmpfs /tmp:rw,noexec,nosuid,nodev,size=64m \
-e TRANSPORT=stdio \
-e MCP_TOOL_MODE=intent \
-e BRANCHESTOOL=True \
-e COMMITSTOOL=True \
-e CUSTOM_APITOOL=True \
-e DEPLOY_TOKENSTOOL=True \
-e ENVIRONMENTSTOOL=True \
-e EPICSTOOL=True \
-e GITLAB_TOKEN=your_gitlab_token_here \
-e GITLAB_URL=https://gitlab.example.com \
-e GRAPHQLTOOL=True \
-e GRAPHQL_OPSTOOL=True \
-e GROUPSTOOL=True \
-e ISSUESTOOL=True \
-e JOBSTOOL=True \
-e LABELSTOOL=True \
-e MEMBERSTOOL=True \
-e MERGE_REQUESTSTOOL=True \
-e MERGE_RULESTOOL=True \
-e MILESTONESTOOL=True \
-e MISCTOOL=True \
-e NAMESPACESTOOL=True \
-e NOTESTOOL=True \
-e PACKAGESTOOL=True \
-e PIPELINESTOOL=True \
-e PIPELINE_SCHEDULESTOOL=True \
-e PROJECTSTOOL=True \
-e PROTECTED_BRANCHESTOOL=True \
-e RELEASESTOOL=True \
-e RUNNERSTOOL=True \
-e SNIPPETSTOOL=True \
-e TAGSTOOL=True \
-e USERSTOOL=True \
-e VULNERABILITIESTOOL=True \
-e WIKITOOL=True \
registry.example.invalid/gitlab-api@sha256:<digest> gitlab-mcpFür containerisierten Netzwerk-HTTP stellen Sie einen authentifizierten TLS-Ingress (oder
direktes Server-TLS), exakte MCP_ALLOWED_HOSTS und eine exakte Trusted-Proxy-
CIDR-Richtlinie über das vom Betreiber verwaltete Bereitstellungsprofil bereit. Der Generator
erzeugt keinen unauthentifizierten Non-Loopback-Listener.
Automatisch aus der per Code ausgelesenen Env-Oberfläche generiert (MCP_TOOL_MODE + Paketvariablen) — nicht bearbeiten.
Zusätzliche Bereitstellungsoptionen
gitlab-api kann als lokaler stdio-Prozess oder Container oder hinter einer entfernten
Netzwerkgrenze ausgeführt werden. Die
Bereitstellungsanleitung enthält
den detaillierten Transportvertrag.
Lokaler Container — starten Sie ein geprüftes unveränderliches Image als stdio-Kindprozess mit minimalen Rechten ohne Listener oder veröffentlichten Port.
Remote-URL — verbinden Sie sich über einen vom Betreiber bereitgestellten authentifizierten HTTPS- Ingress. Bewahren Sie dessen URL, ausgehende Identitätsreferenzen, Vertrauensprofil und die exakten
MCP_ALLOWED_HOSTSinAgentConfigauf.
Umgebungsvariablen
Paket-Umgebungsvariablen
Variable | Beispiel | Beschreibung |
|
| |
|
| |
|
| Optionen: stdio, streamable-http, sse |
|
| |
|
| |
| secret-injected | |
| secret-injected | |
|
| |
|
| Optionen: none, embedded, remote |
|
| |
|
| |
|
| |
| secret-injected | |
| — | benanntes AgentConfig-TLS-Profil; leer verwendet das konfigurierte Standardprofil |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
Geerbte agent-utilities-Variablen (gelten für jeden Connector)
Variable | Beispiel | Beschreibung |
|
| Tool-Oberfläche: |
| — | Kommagetrennte Tool-Allowlist |
| — | Kommagetrennte Tool-Denylist |
| — | Kommagetrennte Tag-Allowlist |
| — | Kommagetrennte Tag-Denylist |
| — | Ausgehende MCP-Child-Authentifizierung: |
| — | OIDC-Client-ID (Service-Account-Authentifizierung) |
|
| Laufzeit-Secret-Referenz für den OIDC-Service-Account |
| — | HTTP-Basic-Benutzername ( |
|
| Laufzeit-Secret-Referenz für HTTP-Basic-Auth ( |
|
| Ausführliche Protokollierung |
|
| Ungepufferte Standardausgabe (in Containern empfohlen) |
|
| URL des MCP-Servers, mit dem der Agent verbunden ist |
|
| LLM-Anbieter für den Agent |
|
| Modell-ID für den Agent |
|
| AG-UI-Weboberfläche bereitstellen |
45 Paket- + 16 geerbte Variable(n). Automatisch generiert aus .env.example + dem gemeinsamen agent-utilities-Satz — nicht bearbeiten.
Jede Variable, die der Server liest.
Verbindung & Anmeldedaten
Der Connector ist standardmäßig Single-Host und multi-tenant, wenn gitlab_instances
konfiguriert ist (siehe Multi-Tenancy). Wenn keine
Instanzen konfiguriert sind, greift er auf die Single-Host-Werte GITLAB_* unten zurück.
Variable | Beschreibung | Standard |
| Basis-URL der GitLab-Instanz |
|
| GitLab-Personal-/Projektzugriffstoken ( | — |
| Optionaler Laufzeit-TLS-Profilselektor | (nicht gesetzt) |
Mehrere Instanzen werden einmal unter
gitlab_instancesin der gemeinsamen agent-utilities-XDG-Konfiguration (~/.config/agent-utilities/config.json) deklariert — jeder Eintrag hatname,url,tokenund optionaltls_profile. Zielen Sie von der Client- Factory aus per Name auf einen Mandanten; eine nicht gesetzte Instanz löst zur ersten konfigurierten auf (sonstGITLAB_URL/GITLAB_TOKEN).
MCP-Server / Transport
Variable | Beschreibung | Standard |
|
|
|
| Bind-Host (HTTP-Transports) |
|
| Bind-Port (HTTP-Transports) |
|
| Tool-Oberfläche: |
|
| Kommagetrennte Tool-Allow-/Denylist | — |
| Kommagetrennte Tag-Allow-/Denylist | — |
| Ausführliche Protokollierung |
|
| Ungepufferte Standardausgabe (in Containern empfohlen) |
|
Tool-Umschalter
Jedes aktionsgesteuerte Tool kann einzeln über seine Umschalt-Env-Variable deaktiviert werden (auf false setzen).
Die vollständige Liste finden Sie in der Tabelle Verfügbare MCP-Tools oben
(z. B. PROJECTSTOOL, MERGE_REQUESTSTOOL, PIPELINESTOOL, GRAPHQLTOOL, CUSTOM_APITOOL).
Telemetrie & Governance
Variable | Beschreibung | Standard |
| OpenTelemetry-Export aktivieren |
|
| OTLP-Collector-Endpunkt | — |
| OTLP-Auth-Schlüssel | — |
| OTLP-Protokoll (z. B. | — |
| Autorisierungsmodus: |
|
| Eingebettete Policy-Datei |
|
| Remote-Eunomia-Server-URL | — |
Agent-CLI (nur vollständige [agent]-Laufzeit)
Variable | Beschreibung | Standard |
| URL des MCP-Servers, mit dem der Agent verbunden ist |
|
| LLM-Anbieter (z. B. |
|
| Modell-ID (z. B. |
|
| AG-UI-Weboberfläche bereitstellen |
|
Siehe .env.example als Copy-Paste-Ausgangspunkt.
Agent
Dieses Repository enthält einen vollständig integrierten Pydantic-AI-Graph-Agenten. Er kommuniziert über das Agent Control Protocol (ACP) und interagiert nahtlos mit der Agent-Web-UI (AG-UI) und der Terminal-Schnittstelle.
Ausführen der Agent-CLI
So starten Sie den interaktiven Kommandozeilen-Agenten:
# Set credentials
export GITLAB_URL="your_value"
export GITLAB_TOKEN="your_value"
# Run the agent server
gitlab-agent --provider openai --model-id gpt-4oDocker-Compose-Orchestrierung
Die folgende docker/agent.compose.yml konfiguriert Agent, Web-UI und Terminal-Schnittstelle gemeinsam:
version: '3.8'
services:
gitlab-api-mcp:
image: example/gitlab-api:mcp
container_name: gitlab-api-mcp
hostname: gitlab-api-mcp
restart: always
env_file:
- ../.env
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=8000
- TRANSPORT=streamable-http
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
gitlab-api-agent:
image: example/gitlab-api@sha256:<digest>
container_name: gitlab-api-agent
hostname: gitlab-api-agent
restart: always
depends_on:
- gitlab-api-mcp
env_file:
- ../.env
command: [ "gitlab-agent" ]
environment:
- PYTHONUNBUFFERED=1
- HOST=0.0.0.0
- PORT=9017
- MCP_URL=http://gitlab-api-mcp:8000/mcp
- PROVIDER=${PROVIDER:-openai}
- MODEL_ID=${MODEL_ID:-gpt-4o}
- ENABLE_WEB_UI=True
- ENABLE_OTEL=True
ports:
- "9017:9017"
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9017/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
Detaillierte Erläuterungen zur Graph-Knotenarchitektur, benutzerdefinierte Skill-Konfigurationen und Anleitungen zu agentischen Traces finden Sie in docs/deployment.md.
Multi-Tenancy (mehrere GitLab-Instanzen)
Der Client ist nativ multi-tenant. Die Menge der Instanzen wird einmal in der
gemeinsamen agent-utilities-XDG-Konfiguration (~/.config/agent-utilities/config.json) unter
gitlab_instances deklariert — dieselbe Liste, die der Knowledge-Graph-GitLab-Indexer liest, sodass eine
Konfiguration sowohl die Code-/Metadaten-Indizierung als auch jeden API-/MCP-Aufruf steuert:
{
"gitlab_instances": [
{"name": "internal", "url": "https://gitlab.example.invalid", "token": "<GITLAB_TOKEN>", "tls_profile": "private-pki"},
{"name": "public", "url": "https://gitlab.com", "token": "<GITLAB_TOKEN>"}
]
}Zielen Sie von der Client-Factory aus per Name auf einen Mandanten; eine nackte URL funktioniert weiterhin, und eine
nicht gesetzte Instanz löst zur ersten konfigurierten auf (sonst GITLAB_URL/GITLAB_TOKEN):
from gitlab_api.auth import get_client
from gitlab_api.instances import list_configured_instances
internal = get_client(instance="internal") # resolves URL, token, and TLS profile
public = get_client(instance="public")
default = get_client() # first configured / GITLAB_URL fallback
names = [i.name for i in list_configured_instances()]Der MCP-Server stellt ein gitlab_instances-Tool (action=list|get) bereit, um die
konfigurierten Mandanten zu ermitteln (Tokens werden nie zurückgegeben). Wenn keine Instanzen konfiguriert sind, greift der
Connector auf das bisher verwendete Single-Host-GITLAB_URL/GITLAB_TOKEN zurück.
Sicherheit & Governance
Direkt auf dem unternehmensreifen agent-utilities-Kern aufbauend, werden die Standard-Sicherheitsparameter vollständig unterstützt:
Zugriffskontrolle & Policy-Durchsetzung
Eunomia-Policies: Fein granulare, policygesteuerte Tool-Autorisierung. Unterstützt
none, lokaleembedded(mcp_policies.json) oder zentralisierteremote-Modi.OIDC-Token-Delegation: Konform mit RFC 8693-Token-Austausch für die Weitergabe authentifizierter Benutzeranmeldedaten von Web-UI / ACP → Agent → MCP.
Bereichsbezogene Anmeldedaten: Ausführungskontext läuft eingeschränkt auf die spezifische Aufruferidentität.
Laufzeit-Sicherheitsraster
Funktion | Funktionalität | Aktivierung |
Tool Guard | Sensitivitätsprüfung mit Human-in-the-Loop-Validierung | Standardmäßig aktiv |
Prompt-Injection-Abwehr | Eingabescanning, Wiederholungsüberwachung und rekursive Schleifenblockaden | Standardmäßig aktiv |
Context-Safety-Guard | Stuck-Loop-Erkennung und präventive Warnungen bei kontextuellem Überlauf | Standardmäßig aktiv |
Installation
Wählen Sie das Extra, das zu dem passt, was Sie ausführen möchten:
Extra | Installiert | Verwenden, wenn |
| Connector-fokussierter MCP-Server ( | Sie nur den MCP-Server ausführen (kleinste Installation / Image) |
| Agent-Laufzeit ( | Sie den integrierten Agenten ausführen |
| Alles ( | Entwicklung / beide Oberflächen |
# Connector-focused MCP server (includes the shared graph engine)
uv pip install "gitlab-api[mcp]"
# Agent runtime (adds model orchestration to the shared graph engine)
uv pip install "gitlab-api[agent]"
# Everything (development)
uv pip install "gitlab-api[all]" # or: python -m pip install "gitlab-api[all]"Container-Images (:mcp vs. :agent)
Ein mehrstufiges docker/Dockerfile erstellt zwei passend dimensionierte Images, ausgewählt über --target:
Image-Tag | Build-Ziel | Inhalt | Entrypoint |
|
|
|
|
|
|
|
|
docker build --target mcp -t example/gitlab-api:mcp docker/ # connector-focused MCP server
docker build --target agent -t example/gitlab-api:agent-local docker/ # agent runtimedocker/mcp.compose.yml führt den auf den Connector fokussierten :mcp-Server aus; docker/agent.compose.yml führt den Agenten (unveränderlicher Agenten-Digest) mit einem ko-lokalisierten :mcp-Sidecar aus.
Wissensgraph-Datenbank (epistemic-graph)
Sowohl [mcp] als auch [agent] bringen die epistemic-graph-Engine über die erforderliche Kernabhängigkeit Agent Utilities (epistemic-graph[full]) mit. Das Extra [mcp] hält den Server auf den Connector fokussiert; [agent] ermöglicht zusätzlich die Modell-Orchestrierung. Lokale Bereitstellungen können die gebündelte Engine verwenden. Für Produktion oder gemeinsam genutzten Zustand betreiben Sie epistemic-graph als dedizierten Datenbankdienst und konfigurieren Sie die Laufzeit so, dass sie diesen verwendet. Bereitstellungsrezepte (Single-Node + Raft-HA), Verbindungskonfiguration und Architekturdiagramme sind im Bereitstellungsleitfaden für epistemic-graph dokumentiert.
Dokumentation
Die vollständige Dokumentation ist als offizielle Dokumentationsseite veröffentlicht und ist die empfohlene Referenz für Installation, Bereitstellung und den täglichen Betrieb.
Seite | Inhalt |
pip, Quellcode, Extras, vorgefertigtes Docker-Image | |
Betreiben der MCP- und Agent-Server, Compose, Caddy + Technitium, env-Konfiguration | |
die MCP-Tools, der | |
GitLab mit Docker bereitstellen | |
die aktionsgesteuerte Tool-Oberfläche und Architektur | |
Konzeptregister ( |
Repository-Eigentümer
Mitwirken
Beiträge sind willkommen! Bitte stellen Sie die Codequalität sicher, indem Sie vor dem Einreichen von Pull Requests lokale Prüfungen ausführen:
Code mit
ruff format .formatierenCode mit
ruff check .lintenTypsicherheit mit
mypy .validierenTestsuiten mit
pytestausführen
Bereitstellung mit agent-utilities-deployment
Stellen Sie dieses Paket mit dem konsolidierten agent-utilities-deployment-Workflow bereit. Er wählt einen Pfad für ein installiertes Paket, eine editierbare Quelle oder einen unveränderlichen Container; erfasst nur Laufzeit-Secret- und TLS-Profil-Referenzen in AgentConfig; und führt Doctor-, Registrierungs-, Richtlinien-, Observability- und Rollback-Gates aus. Bitten Sie Ihren Agenten, "gitlab-api mit agent-utilities-deployment bereitzustellen".
Installationsmodus | Befehl |
Installiertes Paket |
|
Editierbare Quelle |
|
Unveränderlicher Container |
|
Das Repository enthält keine Bereitstellungsprofile, keine Anmeldeinformationswerte, keine Zertifikatspfade und keine umgebungsspezifischen Endpunkte. Stellen Sie diese zur Laufzeit über AgentConfig und den konfigurierten Secret-Provider bereit.
Vertrag für verwaltete Fähigkeiten
Dieses Paket enthält eine kompakte kanonische Skill-Oberfläche mit spezialisierten Prozeduren, die als referenzierte Workflows vorgehalten werden. Die aktuellen MCP-Tools, Skill-Metadaten, connector_manifest.yml, Ontologie, Mappings, Shapes, Fixtures, Migrationen, Tool-Schema-Fingerabdrücke und Zertifizierungsmetadaten bilden einen versionierten Fähigkeitenvertrag. Validieren Sie sie gemeinsam; verlassen Sie sich nicht auf veraltete Tool-Namen oder historische aufgabenspezifische Skill-Wrapper.
Laufzeit-Endpunkte, Anmeldeinformationen, Zertifikatsvertrauen, Mandantenidentität, Aufbewahrung und Observability-Richtlinie sind Bereitstellungsinputs und niemals im Paket enthaltene Werte. Siehe Konfiguration, Vertrauen und Datenschutz, bevor Sie einen Netzwerktransport, Connector-Ingestion, GraphOS-Delegierung oder Trace-Export aktivieren.
This server cannot be deployed
Maintenance
Related MCP Connectors
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
A MCP server built for developers enabling Git based project management with project and personal…
GitLab MCP — wraps the GitLab REST API v4 (BYO API key)
Related MCP Servers
- -licenseAqualityAmaintenanceMCP Server for the GitLab API, enabling project management, file operations, and more.95,547 npm91,120MIT
- AlicenseNot gradedqualityDmaintenanceProduction-ready MCP server providing GitLab integration with OAuth authentication, enabling AI assistants to manage projects, issues, merge requests, branches, files, and commits across GitLab instances.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with GitLab API, supporting both self-hosted instances and gitlab.com. Provides tools for managing issues, merge requests, code review, pipelines, milestones, releases, search, and file access.351 npmMIT
- AlicenseNot gradedqualityAmaintenanceMCP server for the GitLab REST API providing tools to manage projects, merge requests, pipelines, CI/CD variables, approvals, issues, and code reviews.9,306 PyPI6MIT