PL
Gemini CLI · Serwer MCP

Serwer MCP dla Gemini CLI: wiadomości, e-mail i kalendarz

Jedno polecenie gemini mcp add podłącza serwer Unipile MCP. Agent buduje potem w projekcie funkcje LinkedIn, WhatsApp, e-mail i kalendarza.
7 dni za darmo, bez karty kredytowej.
Gemini CLI · booking-app
Unipile MCP połączony
Sarah
Dodaj planowanie w kalendarzu do mojej aplikacji rezerwacyjnej.
Odczyt endpointuGET /v2/{account_id}/calendarsschemat wczytany
Dodano endpoint dostępności i endpoint rezerwacji. Wydarzenia trafiają do kalendarza podłączonego przez użytkownika.
3 zmienione pliki · przetestowane w aplikacji Development
Opisz kolejną funkcję…
Zadanie

Co trzeba zrobić

Dodanie do produktu połączenia z LinkedIn, WhatsApp, e-mailem lub kalendarzem oznacza lekturę dokumentacji API, wybór właściwych endpointów, podłączenie Hosted Auth i jego callbacków, a potem pilnowanie właściwych ID od wyszukiwania po wiadomość. Z serwerem Unipile MCP w Gemini CLI agent czyta to wszystko za Państwa i pisze kod w Państwa stacku, prosto z terminala.
Podłącz serwer Unipile MCP do Gemini CLIUnipile MCP połączony
Wybierz kanały do podłączeniadeveloper.unipile.com/mcp
Podłącz wszystkie kanały9 kanałów
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
↑↓nawigacja spacjawybór ↵połączjeden URL, jeden nagłówek
Bez tego Karty, zgadywanie, kod klejący
Gemini CLI zgaduje nazwy endpointów i payloady na podstawie danych treningowych i myli ID.
Schematy z dokumentacji wkleja się do czatu ręcznie, endpoint po endpoincie.
Pierwsze prawdziwe wywołanie następuje na produkcji, już po code review.
Z serwerem Unipile MCP Efekt w aplikacji
Endpoint połączenia i przycisk w Ustawieniach: każdy użytkownik podłącza własne konto przez Hosted Auth.
Odbiornik webhooków i inbox, który pokazuje wiadomości i e-maile na bieżąco.
Każde żądanie wykonane już raz w aplikacji Development, zanim przejrzą Państwo diff.
settings.json, użytkownik lub projekt

Dodaj serwer Unipile MCP do Gemini CLI

Serwer jest zdalny: jeden URL przez streamable HTTP i jeden nagłówek. Bez npx, bez lokalnego procesu. Jedno polecenie zapisuje wpis w settings.json, użytkownika lub projektu, a Gemini CLI łączy się przy następnym uruchomieniu.
Zainstalowany Gemini CLI (npm i -g @google/gemini-cli), zalogowany, w folderze oznaczonym jako zaufany.
Aplikacja Development w dashboardzie Unipile, ze Scope i kluczem Account API przypisanym do tego Scope.
Co najmniej jedno konto testowe podłączone do tego Scope przez Hosted Auth, aby agent mógł wykonywać prawdziwe żądania.
1
gemini mcp add, jedna liniazapisuje settings.json automatycznie
U
Ustawienia użytkownika~/.gemini/settings.json
P
Ustawienia projektu.gemini/settings.json (zakres domyślny)
E
Klucz ze zmiennej środowiskowej$UNIPILE_API_KEY w headers
?
Użytkownik czy projekt?Polecenie domyślnie używa zakresu project, czyli zapisuje .gemini/settings.json w bieżącym folderze. --scope user obejmuje wszystkie projekty na maszynie. Ustawienia projektu nadpisują ustawienia użytkownika, a oba wymagają zaufanego folderu, by się wczytać.
terminal
# Zarejestruj hostowany serwer Unipile MCP dla wszystkich projektów (zakres user) 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) # Weryfikacja, albo wpisz /mcp w sesji 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" } } } } // Commitowany z repozytorium: klucz trzymaj w środowisku, nie w pliku.
{ "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 przed uruchomieniem gemini
Zapisz plik i uruchom gemini w zaufanym folderze. gemini mcp list pokazuje unipile jako Connected, a /mcp w sesji wyświetla serwer. Sprawdzone na gemini-cli 0.60.0.
Co robi każda flaga, sprawdzone na gemini-cli 0.60.0
--transport httpWymagana: domyślnie jest stdio, czyli lokalny proces. Serwer Unipile jest zdalny, przez streamable HTTP. CLI zapisuje go jako "type": "http".
--scope userZapisuje ~/.gemini/settings.json. Bez niej wpis trafia do .gemini/settings.json w bieżącym folderze, czyli do zakresu project.
--header "X-API-KEY: …"Można powtarzać. Klucz Account API przypisany do Scope, nigdy klucz Service ani globalny klucz Account. Działa w dowolnym miejscu polecenia.
unipile "https://developer.unipile.com/mcp?branch=v2.0"Nazwa jest dowolna. URL trzeba ująć w cudzysłów: znak zapytania to w zsh znak glob.
"$UNIPILE_API_KEY"W settings.json $VAR lub ${VAR} jest odczytywane ze środowiska przy uruchomieniu, więc plik projektu można zacommitować bez sekretu.
--timeout 30000Opcjonalne, w milisekundach. Warto podnieść tylko wtedy, gdy pierwszy handshake nie udaje się w wolnej sieci lub za proxy.
Część tylko dla Gemini CLI

httpUrl, url, trust i klucz API

Trzy elementy settings.json, które decydują o tym, czy serwer się połączy, i których żaden inny klient nie ma w tej postaci.
1httpUrl czy urlDokumentacja przypisuje httpUrl do streamable HTTP, a url do SSE. Polecenie gemini mcp add zapisuje url z "type": "http" i obie formy się łączą. Przy ręcznym pisaniu pliku należy użyć httpUrl: samo url bez typu jest odczytywane jako SSE, co jest najczęściej wskazywaną przyczyną statusu Disconnected."httpUrl": "https://developer.unipile.com/mcp?branch=v2.0"
2$VAR w headersGemini CLI rozwija $NAME i ${NAME} w settings.json, także w nagłówkach. Plik projektu można zacommitować bez sekretu, a każdy developer eksportuje własny klucz Account API przypisany do Scope."headers": { "X-API-KEY": "$UNIPILE_API_KEY" } export UNIPILE_API_KEY=your-scoped-api-key
3Zaufany folder i nieustawione trustW niezaufanym folderze każdy serwer ma status Disabled, także na poziomie użytkownika. Folder należy oznaczyć jako zaufany przy pierwszym pytaniu albo poleceniem trust. Opcję trust serwera lepiej zostawić nieustawioną: pomijałaby potwierdzenie przed każdą akcją.gemini trust
Weryfikacja

Sprawdzenie połączenia

Trzy testy: w CLI, w sesji, a potem z promptem, który tylko czyta specyfikację. Żaden nie dotyka podłączonego konta.
1Z terminalalist wypisuje po jednym wierszu na serwer z transportem i stanem. Znacznik i Connected oznaczają udany handshake; kółko i Disabled oznaczają, że folder nie jest zaufany.gemini mcp list # ✓ unipile: … (http) - Connected
2W sesjiWpisz /mcp, aby zobaczyć wszystkie skonfigurowane serwery z ich stanem: Connected, Disconnected lub Disabled. Serwer Unipile pojawia się z akcjami gotowymi do wywołania./mcp # lub /mcp desc, aby zobaczyć opis każdej akcji
3Na czacie, bez dotykania kontaWystarczy zapytać o coś, co wymaga tylko odczytu specyfikacji API. Jeśli agent odpowie prawdziwymi endpointami i parametrami, serwer jest podłączony.Korzystając z Unipile MCP, wypisz endpointy wyszukiwania osób na LinkedIn i ich wymagane parametry.
Prompty zamiast kodu klejącego

Prompt dla agenta

Trzy zadania integracyjne, a przy każdym dokładny prompt do wklejenia w Gemini CLI, endpointy Unipile, które agent czyta i wywołuje, oraz to, co trafia do projektu. Ścieżki są pełne, względem bazowego URL API https://api.unipile.com, z kluczem przypisanym do Scope w nagłówku X-API-KEY każdego żądania.
Gemini CLI · booking-appAplikacja Development
Dodaj planowanie w kalendarzu do mojej aplikacji rezerwacyjnej: odczytuj dostępność każdego użytkownika w ciągu tygodnia i twórz spotkanie w kalendarzu, który podłączył, Google lub Outlook.
Odczyt endpointuGET /v2/{account_id}/calendars/{calendar_id}/eventsschemat wczytany
Wykonaj zapytaniePOST /v2/{account_id}/calendars/{calendar_id}/events201 Created
Dodano GET /api/availability (wydarzenia w żądanym przedziale, zajęte terminy liczone po stronie serwera) oraz POST /api/bookings, który tworzy wydarzenie z uczestnikami w kalendarzu użytkownika i zapisuje zwrócone ID wydarzenia. Strefy czasowe pochodzą z kalendarza. Utworzono testowe wydarzenie w aplikacji Development.4 zmienione pliki · przetestowane w aplikacji Development

Dostępność i tworzenie wydarzeń w kalendarzu podłączonym przez użytkownika

Google Calendar i Outlook Calendar mają te same endpointy kalendarza. Gemini CLI czyta przez serwer schematy kalendarza, wydarzenia i uczestnika, pisze obliczanie dostępności i endpoint rezerwacji, a przed przeglądem diffu tworzy jedno wydarzenie w kalendarzu testowym.
Endpointy używane przez agenta
GET/v2/{account_id}/calendarsGET/v2/{account_id}/calendars/{calendar_id}/eventsPOST/v2/{account_id}/calendars/{calendar_id}/events
Częsty błąd: Liczenie dostępności w strefie czasowej przeglądarki. Należy użyć strefy czasowej kalendarza z odpowiedzi API, inaczej termin przesunie się o kilka godzin dla zdalnego uczestnika.
Wszystkie kanały na serwerze Unipile MCP
Gemini CLI · support-inboxAplikacja Development
Nasz inbox już synchronizuje LinkedIn i WhatsApp przez Unipile. Dodaj Instagram i Telegram z tym samym modelem wątków i tym samym endpointem odpowiedzi.
Wyszukiwanie endpointów"chats messages attendees"3 wyniki
Wykonaj zapytanieGET /v2/{account_id}/chats200 OK
Bez nowego modelu: czaty z Instagram i Telegram przychodzą tymi samymi endpointami czatów i wiadomości, więc zadanie synchronizacji iteruje teraz po wszystkich podłączonych kontach niezależnie od dostawcy, a endpoint odpowiedzi wysyła z konta, do którego należy czat. Dodano dwie etykiety dostawców i uruchomiono synchronizację w aplikacji Development z jednym testowym kontem Instagram i jednym Telegram.3 zmienione pliki · 4 kanały na jednej liście

Te same endpointy, dwa kolejne kanały, bez nowego modelu

Ponieważ każdy dostawca komunikatora jest udostępniany przez te same endpointy czatów, rozszerzenie inboxu sprowadza się do podłączenia kont przez Hosted Auth i objęcia ich synchronizacją. Agent sprawdza w schematach pola specyficzne dla dostawcy, np. identyfikatory uczestników, i pozostawia model wątków bez zmian.
Endpointy używane przez agenta
GET/v2/accountsGET/v2/{account_id}/chatsGET/v2/{account_id}/chats/{chat_id}/messagesPOST/v2/{account_id}/chats/{chat_id}/messages/send
Częsty błąd: Wpisanie dostawcy na sztywno w synchronizacji. Należy iterować po endpoincie kont i pozwolić, by pole provider każdego konta sterowało etykietą, a nie ścieżką w kodzie.
Zbuduj ujednolicony inbox z agentem
Gemini CLI · crm-appAplikacja Development
Przejrzyj moją obecną integrację Unipile pod kątem błędnych ID, niebezpiecznych ponowień i wywołań, które powinny być webhookami, i zaproponuj poprawki.
Odczyt endpointuPOST /v2/{account_id}/chats/{chat_id}/messages/sendschemat wczytany
Odczyt endpointuPOST /v2/webhooks/endpoints/schemat wczytany
Znaleziono trzy problemy: wywołanie wysyłki używało pierwszego konta workspace zamiast konta czatu; wrapper ponowień wysyłał wiadomości ponownie po timeoucie; inbox odpytywał endpoint czatów co 30 sekund. Zaproponowane poprawki: ID konta brane z czatu, ponowienia ograniczone do odczytów, endpoint webhooka dla zdarzeń wiadomości. Zastosowano i sprawdzono w aplikacji Development.3 ustalenia · 3 poprawki · sprawdzone w aplikacji Development

Audyt względem prawdziwego kontraktu, a nie pamięci

Agent porównuje kod ze schematami żądań i odpowiedzi, które czyta przez serwer: które pole niesie konto, które wywołania są idempotentne, które pętle odpytywania zastępują zdarzenia webhooków. Przegląd trafia jako diff gotowy do zastosowania, przetestowany w aplikacji Development.
Endpointy używane przez agenta
GET/v2/accounts/{account_id}POST/v2/{account_id}/chats/{chat_id}/messages/sendPOST/v2/webhooks/endpoints/GET/v2/webhooks/conversations/
Częsty błąd: Akceptowanie poprawki, która ponawia zapis. Wiadomość lub e-mail wychodzi tylko raz; bezpieczne ponowienie dotyczy odczytów, a źródłem prawdy jest webhook.
Webhooki podłączone przez agenta
Od Development do produkcji

Najpierw testy w aplikacji Development

Dashboard Unipile oddziela aplikację Development od aplikacji Production. Gemini CLI dostaje klucz przypisany do Scope z aplikacji Development i jedno lub dwa konta testowe podłączone przez Hosted Auth. Agent wykonuje prawdziwe żądania na tych kontach, w imieniu uwierzytelnionego użytkownika, który je podłączył, w granicach limitów każdego dostawcy, a konta użytkowników pozostają nietknięte aż do wdrożenia. Na etapie budowania warto zostawić opcję trust nieustawioną we wpisie serwera, aby CLI pytało przed każdą akcją zapisu.
Sprawdzić przepływ połączenia od początku do końca: link auth tworzony po stronie serwera, ID konta zapisane przy użytkowniku.
Sprawdzić jeden odczyt i jeden zapis na funkcję: lista czatów, wysłanie wiadomości z konta testowego.
Sprawdzić dostarczenie webhooka oraz stan ponownego połączenia lub checkpointu przed przełączeniem klucza na Production.
crm-app · DevelopmentUżywana przez Gemini CLI
Scopedev-tests · 2 konta
Kluczklucz Account API przypisany do Scope
KontaTestowe konto LinkedIn, testowa skrzynka Gmail
Webhooki1 endpoint · zdarzenia wiadomości
crm-app · ProductionNietknięta
Scopejeden na workspace
Kluczklucze przypisane do Scope, tylko w backendzie
Kontawłasne konta użytkowników, przez Hosted Auth
Rozwiązywanie problemów

Częste błędy i ich znaczenie

Co pokazują gemini mcp list i /mcp, gdy wpis jest nieprawidłowy, i rozwiązanie dla każdego przypadku. Większość sprowadza się do klucza transportu, zakresu, zaufania folderu albo klucza API.
No MCP servers configured.
gemini mcp list nie znajduje żadnego wpisu z bieżącego folderu. RozwiązaniePlik musi być w ~/.gemini/settings.json lub .gemini/settings.json w katalogu głównym folderu, z którego uruchomiono gemini, z kluczem mcpServers na najwyższym poziomie JSON-a. Przecinek na końcu sprawia, że cały plik jest ignorowany.
Disconnected
Serwer jest na liście z krzyżykiem i statusem Disconnected. RozwiązanieNajpierw sprawdź klucz transportu: httpUrl dla streamable HTTP albo url wraz z "type": "http" tak jak zapisuje to polecenie. Samo pole url jest odczytywane jako SSE. Następnie sam URL, z ?branch=v2.0, oraz ewentualne proxy firmowe.
Disabled, niezaufany folder
Każdy serwer, także na poziomie użytkownika, ma kółko i status Disabled z ostrzeżeniem o folderze. RozwiązanieGemini CLI wczytuje serwery MCP tylko w zaufanym folderze. Zaakceptuj pytanie przy pierwszym uruchomieniu albo uruchom gemini trust w projekcie, a potem ponownie wyświetl listę.
Dodany w złym miejscu
Wpis działa w jednym projekcie, a w innym go brakuje. Rozwiązaniegemini mcp add domyślnie używa zakresu project i zapisuje .gemini/settings.json w bieżącym folderze. Dodaj --scope user dla wszystkich projektów i pamiętaj, że plik projektu nadpisuje plik użytkownika dla tej samej nazwy serwera.
401 Unauthorized przy żądaniach
Serwer ma status Connected, agent czyta specyfikację, ale wykonanie akcji kończy się błędem. RozwiązanieConnected nie sprawdza klucza. Brakuje nagłówka, zmienna wskazana w headers nie jest wyeksportowana w powłoce, która uruchomiła gemini, wokół wartości jest zbędna spacja albo klucz to klucz Service lub globalny klucz Account zamiast klucza Account API przypisanego do Scope.
Przekroczony czas
Handshake lub akcja przekracza limit. RozwiązanieDomyślny timeout wynosi 600000 ms. Serwer jest zdalny i nie ma procesu do uruchomienia: timeout przy starcie wskazuje na sieć, proxy lub URL. Ustaw timeout we wpisie dopiero po wykluczeniu tych trzech przyczyn.
6000+ Firmy, które wprowadzają innowacje z Unipile
Zaufali nam liderzy branży
1 API
Usprawnij obsługę wszystkich głównych kanałów komunikacji
2 dni
Szybkie uruchomienie integracji przy minimalnej konfiguracji
30%
Mniej pracy i zasobów na utrzymanie

Wbudowane bezpieczeństwo i zgodność

Ochrona klasy enterprise dla danych i procesów Więcej o naszym bezpieczeństwie
SOC 2 Type II
SOC 2 Type II
Certyfikat
Niezależnie audytowane mechanizmy bezpieczeństwa, które zapewniają ochronę danych i ciągłość działania.
GDPR
GDPR
Zgodność
Pełna zgodność z europejskimi przepisami o ochronie danych osobowych.
99.9%
Dostępności platformy w ciągu ostatnich 24 miesięcy
24/7
Globalne wsparcie i wydajne API

FAQ: serwer MCP w Gemini CLI

Pytania, które ludzie naprawdę wpisują: httpUrl czy url, gdzie leży settings.json, jedno polecenie zamiast JSON-a, klucz poza plikiem, Disconnected, No MCP servers configured, rozszerzenie VS Code i klucze.
Dokumentacja definiuje httpUrl jako endpoint streamable HTTP, a url jako endpoint SSE. Polecenie gemini mcp add --transport http zapisuje url razem z "type": "http", i obie formy łączą się w aktualnych wersjach. Przy ręcznym pisaniu pliku należy użyć httpUrl: samo url bez typu jest odczytywane jako SSE, co jest najczęściej wskazywaną przyczyną statusu Disconnected.
Ustawienia użytkownika w ~/.gemini/settings.json, ustawienia projektu w .gemini/settings.json w katalogu głównym projektu, oba pod kluczem mcpServers i ustawienia projektu nadpisują ustawienia użytkownika. Uwaga na domyślne zachowanie polecenia: gemini mcp add zapisuje do zakresu project, chyba że poda się --scope user.
Tak, i to zalecana droga: gemini mcp add --transport http --scope user --header "X-API-KEY: your-scoped-api-key" unipile "https://developer.unipile.com/mcp?branch=v2.0". Flaga --header może się powtarzać i stać w dowolnym miejscu polecenia. Sprawdzone na gemini-cli 0.60.0.
Wartość nagłówka należy zapisać jako "$UNIPILE_API_KEY" lub "${UNIPILE_API_KEY}". Gemini CLI rozwija zmienne środowiskowe w settings.json, także w nagłówkach, więc plik projektu można zacommitować bez sekretu, a każdy developer eksportuje własny klucz Account API przypisany do Scope przed uruchomieniem gemini.
Po kolei: klucz transportu (httpUrl dla streamable HTTP albo url wraz z "type": "http"), plik settings.json projektu, który nadpisuje ustawienia użytkownika lub odwrotnie, zaufanie folderu (niezaufany folder wyłącza wszystkie serwery), a na końcu status Disconnected przy działających akcjach, który wynika z opcjonalnego pinga w specyfikacji. Uruchom gemini mcp list, a potem /mcp w sesji.
Gemini CLI nie znajduje wpisu mcpServers w konfiguracji, którą czyta z bieżącego folderu. Sprawdź, czy plik jest w ~/.gemini/ lub w .gemini/ w katalogu głównym projektu, czy mcpServers jest na najwyższym poziomie JSON-a i czy JSON jest poprawny: wystarczy przecinek na końcu, by plik został zignorowany.
Ta strona dotyczy Gemini CLI w terminalu, a opisana konfiguracja to settings.json czytany przez CLI. Rozszerzenie ma własne ustawienia MCP w VS Code; przed założeniem, że plik jest współdzielony, warto sprawdzić jego dokumentację.
Serwer odpowiada bez klucza, gdy agent tylko czyta specyfikację API. Aby wykonywać prawdziwe żądania, należy utworzyć Scope w aplikacji Development, przypisać konta testowe i wygenerować dla tego Scope klucz Account API. Klientowi MCP nigdy nie należy dawać klucza Service ani globalnego klucza Account.