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:
| Produkt | Adres URL serwera MCP |
|---|---|
| Gmail | https://gmailmcp.googleapis.com/mcp/v1 |
| Google Drive | https://drivemcp.googleapis.com/mcp/v1 |
| Google Calendar | https://calendarmcp.googleapis.com/mcp/v1 |
| People API | https://people.googleapis.com/mcp/v1 |
| Google Chat | https://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.
gcloudzainstalowane 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:3080w przypadku lokalnego środowiska programistycznego lubhttps://chat.example.comw ś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_IDWłą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_IDSkonfiguruj 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.readonlyKliknij 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/callbackW środowisku produkcyjnym zastąp http://localhost:3080 swoim adresem URL LibreChat:
https://chat.example.com/api/mcp/gmail/oauth/callbackKliknij 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-secretMoż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żenie | Polecenie |
|---|---|
| Docker | docker compose up -d |
| Lokalne | Zatrzymaj 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 MCPPołą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:
- Kliknij Connect.
- Dokończ proces Google OAuth w przeglądarce.
- Przejrzyj żądane zakresy (scopes).
- 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:
| Serwer | Prompt |
|---|---|
| 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
| Symptom | What to check |
|---|---|
Google zgłasza redirect_uri_mismatch | Identyfikator 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ędzi | Połą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 aplikacji | Jest 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 wygasa | Zewnę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łączona | Użyj projektu/konta wspieranego przez Google Workspace dla Chat lub pomiń serwer chat. |
| Żądania MCP są blokowane przez politykę domen LibreChat | Jeś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.
Powiązane strony
Jaka jest ta instrukcja?
Przewodniki po serwerach MCP
Przewodniki krok po kroku dotyczące konfigurowania konkretnych serwerów MCP w LibreChat.
MCP Salesforce
Skonfiguruj hostowane serwery MCP Salesforce w LibreChat za pomocą zewnętrznej aplikacji klienckiej (External Client App) i uwierzytelniania OAuth dla każdego użytkownika.