Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

MCP Google Workspace

Skonfiguruj zdalne serwery MCP Google Workspace dla Gmaila, Dysku, Kalendarza, Kontaktu i Chatu w LibreChat.

Google udostępnia zdalne serwery Model Context Protocol (MCP) dla produktów Google Workspace. W LibreChat każdy produkt Google Workspace jest konfigurowany jako osobny zdalny serwer MCP z obsługą OAuth.

Wersja poglądowa dla programistów

Google oznacza serwery MCP Google Workspace jako część programu Google Workspace Developer Preview Program. Przed szerokim wdrożeniem zapoznaj się z aktualną dokumentacją Google, ponieważ dostępne produkty, zakresy (scopes) oraz wymagania weryfikacyjne mogą ulec zmianie.

Co skonfigurujesz

Google Workspace MCP nie jest jednym połączonym serwerem. Skonfiguruj tylko te produkty, które chcesz udostępnić użytkownikom:

ProduktAdres URL serwera MCP
Gmailhttps://gmailmcp.googleapis.com/mcp/v1
Google Drivehttps://drivemcp.googleapis.com/mcp/v1
Google Calendarhttps://calendarmcp.googleapis.com/mcp/v1
People APIhttps://people.googleapis.com/mcp/v1
Google Chathttps://chatmcp.googleapis.com/mcp/v1

Każdy użytkownik łączy się z każdym serwerem z poziomu interfejsu LibreChat. LibreChat przechowuje tokeny OAuth dla każdego użytkownika, więc dostęp do Gmaila, Drive, Kalendarza, Kontaktu i Czatu jest zgodny z kontem Google, które autoryzowało połączenie.

Wymagania wstępne

  • Projekt Google Cloud.
  • Uprawnienia do włączania interfejsów API i tworzenia klientów OAuth w tym projekcie.
  • gcloud zainstalowane i uwierzytelnione lub dostęp do konsoli Google Cloud.
  • Działająca instancja LibreChat z zamontowanym lub w inny sposób wczytanym plikiem librechat.yaml.
  • Publiczny bazowy adres URL, którego użytkownicy używają do otwarcia LibreChat, na przykład http://localhost:3080 w przypadku lokalnego środowiska programistycznego lub https://chat.example.com w środowisku produkcyjnym.

Ścieżka wywołania zwrotnego OAuth

Ścieżka wywołania zwrotnego OAuth MCP w LibreChat to BASE_URL/api/mcp/SERVER_NAME/oauth/callback. SERVER_NAME to klucz w sekcji mcpServers w pliku librechat.yaml, taki jak gmail lub drive.

Konfiguracja

Włącz interfejsy API Google Workspace

Zastąp PROJECT_ID swoim identyfikatorem projektu Google Cloud:

gcloud services enable gmail.googleapis.com \
  drive.googleapis.com \
  calendar-json.googleapis.com \
  chat.googleapis.com \
  people.googleapis.com \
  --project=PROJECT_ID

Włącz usługi MCP Google Workspace

Włącz usługi MCP dla produktów, które planujesz skonfigurować:

gcloud services enable gmailmcp.googleapis.com \
  drivemcp.googleapis.com \
  calendarmcp.googleapis.com \
  chatmcp.googleapis.com \
  people.googleapis.com \
  --project=PROJECT_ID

Skonfiguruj Google Chat, jeśli to konieczne

Serwer MCP Google Chat wymaga aplikacji Chat w tym samym projekcie Google Cloud.

W konsoli Google Cloud otwórz Google Chat API > Manage > Configuration i utwórz aplikację Chat:

  • Nazwa aplikacji: Chat MCP
  • Adres URL awatara: https://developers.google.com/chat/images/quickstart-app-avatar.png
  • Opis: Chat MCP server
  • Funkcjonalność: wyłącz Enable interactive features
  • Logi: wybierz Loguj błędy do Logging

Kliknij Save.

Wymagane konto Workspace do czatu

Konfiguracja aplikacji Google Chat może być niedostępna dla konsumenckich kont Google. Jeśli konsola informuje, że interfejs Google Chat API jest dostępny tylko dla użytkowników Google Workspace, pomiń serwer MCP chat lub użyj projektu/konta powiązanego z usługą Workspace.

Skonfiguruj platformę Google Auth

W konsoli Google Cloud przejdź do Google Auth Platform.

Jeśli platforma Google Auth nie została jeszcze skonfigurowana, kliknij Get Started i podaj:

  • Nazwa aplikacji: użyj jasnej nazwy, takiej jak LibreChat Google Workspace MCP.
  • Adres e-mail wsparcia użytkownika: Twój adres e-mail wsparcia lub grupa Google.
  • Audience: wybierz Internal dla organizacji Google Workspace lub External, jeśli użytkownicy znajdują się poza Twoją organizacją lub korzystasz z osobistego konta Google.
  • Dane kontaktowe programisty: adres e-mail, pod którym Google może powiadomić Cię o projekcie.

Jeśli wybierzesz External i pozostawisz aplikację w trybie testowym, dodaj siebie oraz wszystkich innych dozwolonych użytkowników w sekcji Audience > Test users.

Dodawanie zakresów dostępu do danych (Data Access scopes)

Otwórz Data Access > Add or Remove Scopes. W sekcji Manually add scopes wklej zakresy (scopes) dla serwerów, których chcesz używać.

https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.compose
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/drive.file
https://www.googleapis.com/auth/calendar.calendarlist.readonly
https://www.googleapis.com/auth/calendar.events.freebusy
https://www.googleapis.com/auth/calendar.events.readonly
https://www.googleapis.com/auth/directory.readonly
https://www.googleapis.com/auth/userinfo.profile
https://www.googleapis.com/auth/contacts.readonly
https://www.googleapis.com/auth/chat.spaces.readonly
https://www.googleapis.com/auth/chat.memberships.readonly
https://www.googleapis.com/auth/chat.messages.readonly
https://www.googleapis.com/auth/chat.messages.create
https://www.googleapis.com/auth/chat.users.readstate.readonly

Kliknij Add to Table, Update, a następnie Save.

Wrażliwe i ograniczone zakresy

Zakresy Gmail, Drive, Chat, Contacts oraz Directory mogą wywołać proces weryfikacji wrażliwych lub ograniczonych zakresów Google. W przypadku użytku osobistego lub ograniczonego programowania, użytkownicy mogą zobaczyć ostrzeżenie o niezweryfikowanej aplikacji oraz limit 100 użytkowników. W przypadku użytku publicznego lub w całej organizacji należy ukończyć proces weryfikacji OAuth Google oraz wszelkie wymagane przeglądy ograniczonych zakresów.

Tworzenie klienta OAuth aplikacji internetowej

W Google Auth Platform > Clients, utwórz klienta OAuth:

  • Typ aplikacji: Web application
  • Name: użyj opisowej nazwy, takiej jak LibreChat Google Workspace MCP

Dodaj autoryzowany identyfikator URI przekierowania dla każdego konfigurowanego serwera. W przypadku lokalnego środowiska programistycznego:

http://localhost:3080/api/mcp/gmail/oauth/callback
http://localhost:3080/api/mcp/drive/oauth/callback
http://localhost:3080/api/mcp/calendar/oauth/callback
http://localhost:3080/api/mcp/people/oauth/callback
http://localhost:3080/api/mcp/chat/oauth/callback

W środowisku produkcyjnym zastąp http://localhost:3080 swoim adresem URL LibreChat:

https://chat.example.com/api/mcp/gmail/oauth/callback

Kliknij Create, a następnie skopiuj Client ID oraz Client secret.

Dodaj poświadczenia OAuth do .env

Dodaj wartości klienta OAuth do swojego pliku .env w LibreChat:

GOOGLE_WORKSPACE_MCP_CLIENT_ID=your-oauth-client-id
GOOGLE_WORKSPACE_MCP_CLIENT_SECRET=your-oauth-client-secret

Możesz użyć innych nazw zmiennych środowiskowych, jeśli zaktualizujesz również odniesienia w librechat.yaml.

Dodaj serwery MCP do librechat.yaml

Dodaj serwery, których chcesz używać, w sekcji mcpServers. Ten przykład wykorzystuje wszystkie obecnie udokumentowane serwery MCP Google Workspace:

mcpServers:
  gmail:
    type: streamable-http
    url: 'https://gmailmcp.googleapis.com/mcp/v1'
    timeout: 60000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent'
      token_url: 'https://oauth2.googleapis.com/token'
      client_id: '${GOOGLE_WORKSPACE_MCP_CLIENT_ID}'
      client_secret: '${GOOGLE_WORKSPACE_MCP_CLIENT_SECRET}'
      scope: 'https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/gmail.compose'
      redirect_uri: 'http://localhost:3080/api/mcp/gmail/oauth/callback'
      token_exchange_method: default_post
      token_endpoint_auth_methods_supported: ['client_secret_post']

  drive:
    type: streamable-http
    url: 'https://drivemcp.googleapis.com/mcp/v1'
    timeout: 60000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent'
      token_url: 'https://oauth2.googleapis.com/token'
      client_id: '${GOOGLE_WORKSPACE_MCP_CLIENT_ID}'
      client_secret: '${GOOGLE_WORKSPACE_MCP_CLIENT_SECRET}'
      scope: 'https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/drive.file'
      redirect_uri: 'http://localhost:3080/api/mcp/drive/oauth/callback'
      token_exchange_method: default_post
      token_endpoint_auth_methods_supported: ['client_secret_post']

  calendar:
    type: streamable-http
    url: 'https://calendarmcp.googleapis.com/mcp/v1'
    timeout: 60000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent'
      token_url: 'https://oauth2.googleapis.com/token'
      client_id: '${GOOGLE_WORKSPACE_MCP_CLIENT_ID}'
      client_secret: '${GOOGLE_WORKSPACE_MCP_CLIENT_SECRET}'
      scope: 'https://www.googleapis.com/auth/calendar.calendarlist.readonly https://www.googleapis.com/auth/calendar.events.freebusy https://www.googleapis.com/auth/calendar.events.readonly'
      redirect_uri: 'http://localhost:3080/api/mcp/calendar/oauth/callback'
      token_exchange_method: default_post
      token_endpoint_auth_methods_supported: ['client_secret_post']

  people:
    type: streamable-http
    url: 'https://people.googleapis.com/mcp/v1'
    timeout: 60000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent'
      token_url: 'https://oauth2.googleapis.com/token'
      client_id: '${GOOGLE_WORKSPACE_MCP_CLIENT_ID}'
      client_secret: '${GOOGLE_WORKSPACE_MCP_CLIENT_SECRET}'
      scope: 'https://www.googleapis.com/auth/directory.readonly https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/contacts.readonly'
      redirect_uri: 'http://localhost:3080/api/mcp/people/oauth/callback'
      token_exchange_method: default_post
      token_endpoint_auth_methods_supported: ['client_secret_post']

  chat:
    type: streamable-http
    url: 'https://chatmcp.googleapis.com/mcp/v1'
    timeout: 60000
    initTimeout: 150000
    requiresOAuth: true
    startup: false
    oauth:
      authorization_url: 'https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&prompt=consent'
      token_url: 'https://oauth2.googleapis.com/token'
      client_id: '${GOOGLE_WORKSPACE_MCP_CLIENT_ID}'
      client_secret: '${GOOGLE_WORKSPACE_MCP_CLIENT_SECRET}'
      scope: 'https://www.googleapis.com/auth/chat.spaces.readonly https://www.googleapis.com/auth/chat.memberships.readonly https://www.googleapis.com/auth/chat.messages.readonly https://www.googleapis.com/auth/chat.messages.create https://www.googleapis.com/auth/chat.users.readstate.readonly'
      redirect_uri: 'http://localhost:3080/api/mcp/chat/oauth/callback'
      token_exchange_method: default_post
      token_endpoint_auth_methods_supported: ['client_secret_post']

Jeśli LibreChat jest wdrożony pod publicznym adresem URL, zaktualizuj każdy redirect_uri, aby odpowiadał dokładnie adresowi przekierowania zarejestrowanemu w Google Cloud.

Ścisłe listy dozwolonych domen MCP

Jeśli Twój librechat.yaml konfiguruje również mcpSettings.allowedDomains, dodaj hosty Google MCP, z których korzystasz, takie jak gmailmcp.googleapis.com, drivemcp.googleapis.com, calendarmcp.googleapis.com, chatmcp.googleapis.com oraz people.googleapis.com.

Restart LibreChat

Zrestartuj LibreChat, aby ponownie wczytać .env oraz librechat.yaml.

WdrożeniePolecenie
Dockerdocker compose up -d
LokalneZatrzymaj serwer, a następnie uruchom go ponownie

Aby potwierdzić, że serwery zostały załadowane w Docker, sprawdź logi API:

docker logs LibreChat --tail 200 | grep MCP

Połącz każdy serwer w LibreChat

Otwórz LibreChat, a następnie otwórz MCP Settings lub rozwijane menu MCP Servers w polu wprowadzania czatu.

Dla każdego serwera Google Workspace:

  1. Kliknij Connect.
  2. Dokończ proces Google OAuth w przeglądarce.
  3. Przejrzyj żądane zakresy (scopes).
  4. Kliknij Allow.

Po pomyślnym zakończeniu OAuth, narzędzia serwera stają się dostępne na czacie oraz w Agent Builder.

Testowanie

Wypróbuj prompty, które kierują zapytania do jednego serwera na raz:

SerwerPrompt
People"According to my Google profile, what's my name?"
Drive"Find a file named Marketing Plan and summarize it."
Gmail"Find my latest email about the marketing plan."
Gmail"Draft an email to [email protected] saying I approve the marketing plan."
Calendar"When is my next meeting with Ariel?"
Chat"Search recent Google Chat messages about the marketing plan."

Rozwiązywanie problemów

SymptomWhat to check
Google zgłasza redirect_uri_mismatchIdentyfikator URI przekierowania klienta Google OAuth musi dokładnie odpowiadać redirect_uri w librechat.yaml, włącznie z protokołem, nazwą hosta, portem, nazwą serwera i ścieżką.
LibreChat pokazuje serwer, ale brak narzędziPołącz serwer z poziomu interfejsu LibreChat. Zdalne serwery z włączonym OAuth udostępniają narzędzia dopiero po uwierzytelnieniu użytkownika.
Google pokazuje ostrzeżenie o niezweryfikowanej aplikacjiJest to oczekiwane zachowanie w przypadku niezweryfikowanych aplikacji żądających dostępu do wrażliwych lub ograniczonych zakresów. Do użytku osobistego lub ograniczonego rozwoju, użytkownicy mogą zignorować ostrzeżenie, dopóki projekt nie osiągnie limitu niezweryfikowanych użytkowników Google.
OAuth działa w testach, ale później wygasaZewnętrzne aplikacje w trybie testowym mogą otrzymywać tokeny odświeżania, które wygasają po 7 dniach. Opublikuj aplikację w wersji produkcyjnej, aby uzyskać długoterminowe tokeny odświeżania, lub ponownie uwierzytelniaj się podczas prac rozwojowych.
Konfiguracja Google Chat jest wyłączonaUżyj projektu/konta wspieranego przez Google Workspace dla Chat lub pomiń serwer chat.
Żądania MCP są blokowane przez politykę domen LibreChatJeśli skonfigurowano mcpSettings.allowedDomains, dodaj nazwy hostów serwerów Google MCP, z których korzystasz.

Uwagi dotyczące bezpieczeństwa

  • Podłączaj serwery MCP Google Workspace tylko do instancji LibreChat, którym ufasz.
  • Proś tylko o produkty i zakresy (scopes), których użytkownicy faktycznie potrzebują.
  • Przeglądaj działania sugerowane przez asystenta przed wysłaniem wiadomości e-mail, opublikowaniem wiadomości na czacie, przesłaniem plików lub zmianą wydarzeń w kalendarzu.
  • Traktuj wiadomości e-mail, dokumenty oraz wiadomości na czacie jako niezaufane dane wejściowe. Mogą one zawierać próby pośredniego wstrzykiwania promptów (indirect prompt injection), które mają na celu wpłynięcie na asystenta.
  • W przypadku wdrożeń publicznych lub wewnątrz organizacji, należy ukończyć weryfikację Google OAuth i postępować zgodnie z kontrolami dostępu do aplikacji zewnętrznych w swojej organizacji.

Jaka jest ta instrukcja?