DE
Gemini CLI · MCP Server

Gemini CLI MCP Server: Messaging, E-Mail und Kalender

Ein einziger gemini mcp add-Befehl verbindet den Unipile MCP-Server. Ihr Agent baut dann LinkedIn-, WhatsApp-, E-Mail- und Kalender-Features in Ihr Projekt ein.
7 Tage kostenlos testen, ohne Kreditkarte.
Gemini CLI · booking-app
Unipile MCP verbunden
Sarah
Ergänze meine Buchungs-App um Kalenderplanung.
Endpoint lesenGET /v2/{account_id}/calendarsSchema geladen
Verfügbarkeits-Route und Buchungs-Route ergänzt. Termine landen im Kalender, den der Nutzer verbunden hat.
3 Dateien geändert · in der Development-App getestet
Nächstes Feature beschreiben…
Die Aufgabe

Was Sie erreichen wollen

Ihr Produkt um eine LinkedIn-, WhatsApp-, E-Mail- oder Kalenderverbindung erweitern. Das heißt: eine API-Referenz lesen, die richtigen Endpoints wählen, Hosted Auth und seine Callbacks verkabeln und dann die richtigen IDs von der Suche bis zur Nachricht behalten. Mit dem Unipile MCP-Server in Gemini CLI übernimmt der Agent das Lesen und schreibt den Code in Ihrem Stack, aus dem Terminal.
Den Unipile MCP-Server mit Gemini CLI verbindenUnipile MCP verbunden
Wählen Sie die Kanäle, die Sie verbinden möchtendeveloper.unipile.com/mcp
Alle Kanäle verbinden9 Kanäle
LinkedInLinkedIn/v2/{account_id}/chats
WhatsAppWhatsApp/v2/{account_id}/chats
InstagramInstagram/v2/{account_id}/chats
TelegramTelegram/v2/{account_id}/chats
GmailGmail/v2/{account_id}/emails
OutlookOutlook/v2/{account_id}/emails
IMAPIMAP/v2/{account_id}/emails
Google CalendarGoogle Calendar/v2/{account_id}/calendars
Outlook CalendarOutlook Calendar/v2/{account_id}/calendars
↑↓navigieren Leertasteauswählen ↵verbindeneine URL, ein Header
Ohne Tabs, Raten, Glue Code
Gemini CLI rät Endpoint-Namen und Payloads aus Trainingsdaten und liegt bei den IDs falsch.
Sie kopieren Schemas aus der Referenz in den Chat, einen Endpoint nach dem anderen.
Der erste echte Aufruf passiert in Production, nach dem Code-Review.
Mit dem Unipile MCP-Server Das Ergebnis in Ihrer Anwendung
Eine Connect-Route und ein Settings-Button: Jeder Nutzer verbindet sein eigenes Konto über Hosted Auth.
Ein Webhook-Empfänger und ein Posteingang, der Nachrichten und E-Mails zeigt, sobald sie ankommen.
Jede Anfrage bereits einmal in Ihrer Development-Anwendung ausgeführt, bevor Sie den Diff prüfen.
settings.json, User oder Projekt

Unipile MCP-Server für Gemini CLI

Der Server ist remote: eine URL über streamable HTTP und ein Header. Kein npx, kein lokaler Prozess. Ein Befehl schreibt den Eintrag in settings.json, für den User oder das Projekt, und Gemini CLI verbindet sich beim nächsten Start.
Gemini CLI installiert (npm i -g @google/gemini-cli) und angemeldet, in einem Ordner, dem Sie vertrauen.
Eine Development-Anwendung im Unipile-Dashboard, mit einem Scope und einem Scoped Account API Key.
Mindestens ein Testkonto, das über Hosted Auth mit diesem Scope verbunden ist, damit der Agent echte Anfragen ausführen kann.
1
gemini mcp add, eine Zeileschreibt settings.json für Sie
U
User-Einstellungen~/.gemini/settings.json
P
Projekteinstellungen.gemini/settings.json (Standard-Scope)
U
Key aus einer Umgebungsvariablen$UNIPILE_API_KEY in headers
?
User oder Projekt?Der Befehl nutzt standardmäßig den Projekt-Scope und schreibt .gemini/settings.json im aktuellen Ordner. Übergeben Sie --scope user für jedes Projekt auf der Maschine. Projekteinstellungen überschreiben User-Einstellungen, und beide laden nur in einem vertrauenswürdigen Ordner.
Terminal
# Den gehosteten Unipile MCP-Server für jedes Projekt registrieren (User-Scope) gemini mcp add --transport http --scope user \ --header "X-API-KEY: your-scoped-api-key" \ unipile "https://developer.unipile.com/mcp?branch=v2.0" # MCP server "unipile" added to user settings. (http) # Prüfen, oder /mcp in einer Session tippen gemini mcp list # ✓ unipile: https://developer.unipile.com/mcp?branch=v2.0 (http) - Connected
{ "mcpServers": { "unipile": { "url": "https://developer.unipile.com/mcp?branch=v2.0", "type": "http", "headers": { "X-API-KEY": "your-scoped-api-key" } } } }
{ "mcpServers": { "unipile": { "url": "https://developer.unipile.com/mcp?branch=v2.0", "type": "http", "headers": { "X-API-KEY": "$UNIPILE_API_KEY" } } } } // Mit dem Repository eingecheckt: Den Key in der Umgebung halten, nicht in der Datei.
{ "mcpServers": { "unipile": { "url": "https://developer.unipile.com/mcp?branch=v2.0", "type": "http", "headers": { "X-API-KEY": "${{UNIPILE_API_KEY}}" } } } } // export UNIPILE_API_KEY=your-scoped-api-key vor dem Start von gemini
Speichern Sie die Datei und starten Sie gemini in einem vertrauenswürdigen Ordner. gemini mcp list zeigt unipile als Connected, und /mcp listet den Server innerhalb einer Session. Geprüft mit gemini-cli 0.60.0.
Was jedes Flag tut, geprüft mit gemini-cli 0.60.0
--transport httpPflicht: Der Standard ist stdio, also ein lokaler Prozess. Der Unipile-Server ist remote über streamable HTTP. Die CLI schreibt ihn als "type": "http".
--scope userSchreibt ~/.gemini/settings.json. Ohne das Flag landet der Eintrag in .gemini/settings.json im aktuellen Ordner, dem Projekt-Scope.
--header "X-API-KEY: …"Wiederholbar. Ihr Scoped Account API Key, nie ein Service- oder globaler Account-Key. Jede Position im Befehl funktioniert.
unipile "https://developer.unipile.com/mcp?branch=v2.0"Der Name gehört Ihnen. Setzen Sie die URL in Anführungszeichen: Das Fragezeichen ist in zsh ein Glob-Zeichen.
"$UNIPILE_API_KEY"In settings.json wird $VAR oder ${VAR} beim Start aus der Umgebung gelesen, eine Projektdatei lässt sich also ohne Secret einchecken.
--timeout 30000Optional, in Millisekunden. Erhöhen Sie den Wert nur, wenn der erste Handshake in einem langsamen Netz oder hinter einem Proxy fehlschlägt.
Der Teil, den es nur bei Gemini CLI gibt

httpUrl, url, Vertrauen und Ihr API Key

Drei Dinge in settings.json, die darüber entscheiden, ob sich der Server verbindet, und die kein anderer Client in dieser Form hat.
1httpUrl oder urlDie Dokumentation ordnet httpUrl dem streamable HTTP zu und url dem SSE. Der Befehl gemini mcp add schreibt url mit "type": "http", und beide verbinden sich. Schreiben Sie die Datei von Hand, nutzen Sie httpUrl: Ein bloßes url ohne type wird als SSE gelesen, die meistgenannte Ursache für den Status Disconnected."httpUrl": "https://developer.unipile.com/mcp?branch=v2.0"
2$VAR innerhalb von headersGemini CLI löst $NAME und ${NAME} in settings.json auf, Header eingeschlossen. Die Projektdatei lässt sich ohne Secret einchecken, und jeder Entwickler exportiert seinen eigenen Scoped Account API Key."headers": { "X-API-KEY": "$UNIPILE_API_KEY" } export UNIPILE_API_KEY=your-scoped-api-key
3Ein vertrauenswürdiger Ordner, und trust ungesetzt lassenIn einem nicht vertrauenswürdigen Ordner wird jeder Server als Disabled gelistet, auch auf User-Ebene. Vertrauen Sie dem Ordner beim ersten Dialog oder über den trust-Befehl. Lassen Sie die Option trust des Servers ungesetzt: Sie würde die Bestätigung vor jeder Aktion überspringen.gemini trust
Prüfen

Die Verbindung prüfen

Drei Prüfungen: in der CLI, innerhalb einer Session und dann mit einem Prompt, der nur die Spezifikation liest. Keine davon berührt ein verbundenes Konto.
1Aus dem Terminallist gibt eine Zeile pro Server mit Transport und Status aus. Ein Häkchen und Connected bedeutet, dass der Handshake geklappt hat; ein Kreis und Disabled bedeutet, dass dem Ordner nicht vertraut wird.gemini mcp list # ✓ unipile: … (http) - Connected
2Innerhalb einer SessionTippen Sie /mcp, um jeden konfigurierten Server mit seinem Zustand zu sehen: Connected, Disconnected oder Disabled. Der Unipile-Server erscheint mit seinen aufrufbaren Actions./mcp # oder /mcp desc für die Beschreibung jeder Action
3Im Chat, ohne ein Konto zu berührenFragen Sie etwas, das nur die API-Spezifikation liest. Antwortet der Agent mit echten Routen und Parametern, ist der Server verkabelt.Liste über den Unipile MCP die Endpoints für die LinkedIn-Personensuche und ihre Pflichtparameter auf.
Prompts statt Glue Code

Geben Sie Ihrem Agenten den Prompt

Drei Integrationsaufgaben, jeweils mit dem exakten Prompt zum Einfügen in Gemini CLI, den Unipile-Endpoints, die der Agent liest und aufruft, und dem, was in Ihrem Projekt landet. Die Pfade sind vollständig, auf der API-Basis-URL https://api.unipile.com, mit Ihrem Scoped Key im X-API-KEY Header.
Gemini CLI · booking-appDevelopment-App
Ergänze meine Booking-App um Terminplanung: Lies die Verfügbarkeit jedes Nutzers über eine Woche und erstelle den Termin im Kalender, den er verbunden hat, Google oder Outlook.
Endpoint lesenGET /v2/{account_id}/calendars/{calendar_id}/eventsSchema geladen
Anfrage ausführenPOST /v2/{account_id}/calendars/{calendar_id}/events201 Created
Ergänzt GET /api/availability (Termine im angefragten Zeitfenster, belegte Slots serverseitig berechnet) und POST /api/bookings, das den Termin mit Teilnehmern im Kalender des Nutzers erstellt und die zurückgegebene Event-ID speichert. Die Zeitzonen kommen aus dem Kalender. Testtermin in der Development-App erstellt.4 Dateien geändert · in der Development-App getestet

Verfügbarkeit und Terminerstellung im Kalender, den Ihr Nutzer verbunden hat

Google Calendar und Outlook Calendar teilen sich dieselben Kalender-Routen. Gemini CLI liest die Schemas für Kalender, Termine und Teilnehmer über den Server, schreibt die Verfügbarkeitsberechnung und die Buchungs-Route und erstellt vor Ihrem Review einen Termin in einem Testkalender.
Endpoints, die der Agent nutzt
GET/v2/{account_id}/calendarsGET/v2/{account_id}/calendars/{calendar_id}/eventsPOST/v2/{account_id}/calendars/{calendar_id}/events
Häufiger Fehler: Die Verfügbarkeit in der Zeitzone des Browsers berechnen. Nutzen Sie die Zeitzone des Kalenders aus der API-Response, sonst liegt der Slot für einen entfernten Teilnehmer um Stunden daneben.
Alle Kanäle des Unipile MCP-Servers ansehen
Gemini CLI · support-inboxDevelopment-App
Unser Posteingang synchronisiert LinkedIn und WhatsApp bereits mit Unipile. Ergänze Instagram und Telegram mit demselben Thread-Modell und demselben Antwort-Endpoint.
Endpoints suchen"chats messages attendees"3 Treffer
Anfrage ausführenGET /v2/{account_id}/chats200 OK
Kein neues Modell: Instagram- und Telegram-Chats laufen über dieselben Chat- und Nachrichten-Routen, der Sync-Job iteriert jetzt also unabhängig vom Anbieter über jedes verbundene Konto, und der Antwort-Endpoint sendet über das Konto des jeweiligen Chats. Die zwei Anbieter-Badges ergänzt und den Sync in der Development-App mit je einem Instagram- und Telegram-Testkonto ausgeführt.3 Dateien geändert · 4 Kanäle in einer Liste

Dieselben Routen, zwei Kanäle mehr, kein neues Modell

Weil jeder Messaging-Anbieter über dieselben Chat-Routen bereitsteht, ist das Erweitern eines Posteingangs eine Frage davon, Konten über Hosted Auth zu verbinden und den Sync darüber laufen zu lassen. Der Agent prüft die anbieterspezifischen Felder in den Schemas, etwa die IDs der Teilnehmer, und lässt das Thread-Modell unverändert.
Endpoints, die der Agent nutzt
GET/v2/accountsGET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Häufiger Fehler: Den Anbieter im Sync hart verdrahten. Iterieren Sie über die Accounts-Route und lassen Sie das Feld provider jedes Kontos das Badge bestimmen, nicht den Code-Pfad.
Eine Unified Inbox mit einem Agenten bauen
Gemini CLI · crm-appDevelopment-App
Prüfe meine aktuelle Unipile-Integration auf falsche IDs, unsichere Retries und Aufrufe, die Webhooks sein sollten, und schlage die Korrekturen vor.
Endpoint lesenPOST /v2/{account_id}/chats/{chat_id}/messages/sendSchema geladen
Endpoint lesenPOST /v2/webhooks/endpoints/Schema geladen
Drei Befunde: Der Send-Aufruf nutzte das erste Konto des Workspace statt das Konto des Chats; der Retry-Wrapper sendete Nachrichten bei einem Timeout erneut; der Posteingang fragte die Chats-Route alle 30 Sekunden ab. Vorgeschlagene Patches: Konto-ID aus dem Chat, Retries nur auf Lesevorgänge, ein Webhook-Endpoint für Message-Events. In der Development-App angewendet und verifiziert.3 Befunde · 3 Patches · in der Development-App verifiziert

Ein Audit gegen den echten Vertrag, nicht gegen das Gedächtnis

Der Agent vergleicht Ihren Code mit den Request- und Response-Schemas, die er über den Server liest: welches Feld das Konto trägt, welche Aufrufe idempotent sind, welche Polling-Schleifen die Webhook-Events ersetzen. Der Review landet als Diff, den Sie anwenden können, getestet in Ihrer Development-Anwendung.
Endpoints, die der Agent nutzt
GET/v2/accounts/{account_id}POST/v2/{account_id}/chats/{chat_id}/messages/sendPOST/v2/webhooks/endpoints/GET/v2/webhooks/conversations/
Häufiger Fehler: Eine Korrektur akzeptieren, die einen Schreibvorgang wiederholt. Eine Nachricht oder E-Mail geht einmal raus; der sichere Retry liegt auf der Leseseite, mit dem Webhook als verlässlicher Quelle.
Webhooks mit einem Agenten einrichten
Von Development zu Production

Zuerst in einer Development-Anwendung testen

Das Unipile-Dashboard trennt eine Development-Anwendung von einer Production-Anwendung. Geben Sie Gemini CLI einen Scoped Key aus der Development-Anwendung, mit ein oder zwei über Hosted Auth verbundenen Testkonten. Der Agent führt echte Anfragen auf diesen Konten aus, im Namen des authentifizierten Nutzers, der sie verbunden hat, innerhalb der Limits jedes Anbieters, und bis zum Release wird kein Konto Ihrer Nutzer berührt. Lassen Sie trust am Servereintrag während der Entwicklung ungesetzt, damit die CLI vor jeder schreibenden Aktion fragt.
Validieren Sie den Connect-Flow end-to-end: Auth-Link serverseitig erstellt, Konto-ID am Nutzer gespeichert.
Validieren Sie pro Feature einen Lese- und einen Schreibvorgang: Chats auflisten, eine Nachricht über das Testkonto senden.
Validieren Sie eine Webhook-Zustellung und einen Reconnect- oder Checkpoint-Zustand, bevor Sie den Key auf Production umstellen.
crm-app · DevelopmentVon Gemini CLI genutzt
Scopedev-tests · 2 Konten
Keyscoped Account API key
KontenLinkedIn-Testkonto, Gmail-Testpostfach
Webhooks1 Endpoint · Message-Events
crm-app · ProductionUnberührt
Scopeeiner pro Workspace
Keyscoped keys, in your backend only
Kontendie eigenen Konten Ihrer Nutzer, über Hosted Auth
Fehlerbehebung

Häufige Fehler und was sie bedeuten

Was gemini mcp list und /mcp zeigen, wenn ein Eintrag nicht stimmt, und die jeweilige Lösung. Meistens liegt es am Transport-Key, am Scope, am Vertrauen für den Ordner oder am Key.
No MCP servers configured.
gemini mcp list findet aus dem aktuellen Ordner keinen Eintrag. LösungDie Datei muss ~/.gemini/settings.json oder .gemini/settings.json im Wurzelverzeichnis des Ordners sein, aus dem Sie gemini gestartet haben, mit mcpServers auf oberster Ebene des JSON. Ein überzähliges Komma sorgt dafür, dass die ganze Datei ignoriert wird.
Disconnected
Der Server ist mit einem Kreuz und Disconnected gelistet. LösungPrüfen Sie zuerst den Transport-Key: httpUrl für streamable HTTP, oder url ein, mit "type": "http" , so wie der Befehl es schreibt. Ein bloßes url wird als SSE gelesen. Danach die URL selbst, mit ?branch=v2.0, und einen möglichen Unternehmens-Proxy.
Disabled, Ordner nicht vertrauenswürdig
Jeder Server, auch auf User-Ebene, zeigt einen Kreis und Disabled mit einer Warnung zum Ordner. LösungGemini CLI lädt MCP-Server nur in einem vertrauenswürdigen Ordner. Bestätigen Sie den Dialog beim ersten Start oder führen Sie gemini trust im Projekt aus und listen Sie erneut auf.
An der falschen Stelle hinzugefügt
Der Eintrag funktioniert in einem Projekt und fehlt in einem anderen. Lösunggemini mcp add nutzt standardmäßig den Projekt-Scope und schreibt .gemini/settings.json im aktuellen Ordner. Ergänzen Sie --scope user für jedes Projekt, und denken Sie daran, dass eine Projektdatei die User-Datei beim selben Servernamen überschreibt.
401 Unauthorized bei Anfragen
Der Server zeigt Connected, der Agent liest die Spezifikation, aber eine Action schlägt fehl. LösungConnected prüft den Key nicht. Der Header fehlt, die in headers genannte Variable ist nicht in der Shell exportiert, die gemini gestartet hat, es steht ein überflüssiges Leerzeichen um den Wert, oder der Key ist ein Service- oder globaler Account-Key statt eines Scoped Account API Key.
Timed out
Der Handshake oder eine Action überschreitet das Limit. LösungDer Standardwert von timeout liegt bei 600000 ms. Der Server ist remote, es gibt keinen Prozess zu starten: Ein Timeout beim Start deutet auf das Netzwerk, einen Proxy oder die URL hin. Setzen Sie timeout erst dann am Eintrag, wenn diese drei ausgeschlossen sind.
6000+ Unternehmen, die mit Unipile innovieren
Vertrauen bei Branchenführern
1 API
Rationalisierung der Abläufe für alle wichtigen Kommunikationskanäle
2 Tage
Schnelle Live-Integration mit minimaler Einrichtung
30%
Verringerung des Wartungsaufwands und der Ressourcen

Integrierte Sicherheit und Compliance

Unternehmensgerechter Schutz für Ihre Daten und Arbeitsabläufe Erfahren Sie mehr über unsere Sicherheit
SOC 2 Typ II
SOC 2 Typ II
Zertifiziert
Unabhängig geprüfte Sicherheitskontrollen zur Gewährleistung des Datenschutzes und der betrieblichen Integrität.
GDPR
GDPR
Konform
Vollständige Einhaltung der europäischen Datenschutzbestimmungen zum Schutz der Privatsphäre der Nutzer.
99.9%
Betriebszeit der Plattform in den letzten 24 Monaten
24/7
Globaler Support mit leistungsstarker API

FAQ zum Gemini CLI MCP-Server

Die Fragen, die wirklich gestellt werden: httpUrl oder url, wo settings.json liegt, ein Befehl statt JSON, den Key aus der Datei halten, Disconnected, No MCP servers configured, die VS-Code-Erweiterung und Keys.
Die Dokumentation definiert httpUrl als streamable-HTTP-Endpoint und url als SSE-Endpoint. Der Befehl gemini mcp add --transport http schreibt url zusammen mit "type": "http", und beide Formen verbinden sich in aktuellen Versionen. Schreiben Sie die Datei von Hand, nutzen Sie httpUrl: Ein bloßes url ohne type wird als SSE gelesen, die meistgenannte Ursache für einen Disconnected-Server.
User-Einstellungen in ~/.gemini/settings.json, Projekteinstellungen in .gemini/settings.json im Wurzelverzeichnis Ihres Projekts, beide unter dem Key mcpServers , und Projekteinstellungen überschreiben User-Einstellungen. Beachten Sie den Standard des Befehls: gemini mcp add schreibt in den Projekt-Scope, es sei denn, Sie übergeben --scope user.
Ja, und das ist der empfohlene Weg: gemini mcp add --transport http --scope user --header "X-API-KEY: your-scoped-api-key" unipile "https://developer.unipile.com/mcp?branch=v2.0". Das Flag --header ist wiederholbar und kann an beliebiger Stelle im Befehl stehen. Geprüft mit gemini-cli 0.60.0.
Schreiben Sie den Header-Wert als "$UNIPILE_API_KEY" oder "${UNIPILE_API_KEY}". Gemini CLI löst Umgebungsvariablen in settings.json auf, Header eingeschlossen, die Projektdatei lässt sich also ohne Secret einchecken, und jeder Entwickler exportiert vor dem Start von gemini seinen eigenen Scoped Account API Key.
Der Reihe nach: den Transport-Key (httpUrl für streamable HTTP, oder url ein, mit "type": "http"), eine Projekt-settings.json, die Ihre überschreibt, oder umgekehrt, das Vertrauen für den Ordner (ein nicht vertrauenswürdiger Ordner deaktiviert jeden Server), und schließlich einen als Disconnected angezeigten Status, während die Actions funktionieren, was von einem optionalen Ping in der Spezifikation kommt. Führen Sie gemini mcp listaus, danach /mcp in einer Session.
Gemini CLI hat in der Konfiguration, die es aus dem aktuellen Ordner liest, keinen Eintrag mcpServers gefunden. Prüfen Sie, dass die Datei in ~/.gemini/ oder in .gemini/ im Projektwurzelverzeichnis liegt, dass mcpServers auf oberster Ebene des JSON steht und dass das JSON gültig ist: Ein überzähliges Komma genügt, damit die Datei ignoriert wird.
Diese Seite behandelt Gemini CLI im Terminal, und die hier beschriebene Konfiguration ist die settings.json, die die CLI liest. Die Erweiterung hat ihre eigenen MCP-Einstellungen in VS Code; prüfen Sie deren Dokumentation, bevor Sie davon ausgehen, dass die Datei geteilt wird.
Der Server antwortet ohne Key, solange der Agent nur die API-Spezifikation liest. Für echte Anfragen erstellen Sie in Ihrer Development-Anwendung einen Scope, weisen die Testkonten zu und erzeugen einen Scoped Account API Key für diesen Scope. Geben Sie einem MCP-Client nie einen Service-Key oder einen globalen Account-Key.