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

MCP di Google Workspace

Configura i server MCP remoti di Google Workspace per Gmail, Drive, Calendar, People e Chat in LibreChat.

Google fornisce server remoti di Model Context Protocol (MCP) per i prodotti Google Workspace. In LibreChat, ogni prodotto Google Workspace viene configurato come un proprio server MCP remoto abilitato per OAuth.

Anteprima per sviluppatori

Google contrassegna i server MCP di Google Workspace come parte del Google Workspace Developer Preview Program. Consulta la documentazione attuale di Google prima di distribuirli su larga scala, poiché i prodotti disponibili, gli ambiti (scopes) e i requisiti di verifica potrebbero cambiare.

Cosa configurerai

Google Workspace MCP non è un unico server combinato. Configura solo i prodotti che desideri esporre agli utenti:

ProdottoURL del server 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

Ogni utente si connette a ciascun server dall'interfaccia utente di LibreChat. LibreChat memorizza i token OAuth per utente, pertanto l'accesso a Gmail, Drive, Calendar, People e Chat segue l'account Google che ha autorizzato la connessione.

Prerequisiti

  • Un progetto Google Cloud.
  • Autorizzazione per abilitare le API e creare client OAuth in quel progetto.
  • gcloud installato e autenticato, oppure accesso alla console di Google Cloud.
  • Un'istanza di LibreChat in esecuzione con librechat.yaml montato o caricato in altro modo.
  • L'URL di base pubblico che gli utenti utilizzano per aprire LibreChat, ad esempio http://localhost:3080 per lo sviluppo locale o https://chat.example.com per la produzione.

Percorso di callback OAuth

Il percorso di callback OAuth MCP di LibreChat è BASE_URL/api/mcp/SERVER_NAME/oauth/callback. SERVER_NAME è la chiave sotto mcpServers in librechat.yaml, come gmail o drive.

Setup

Abilitare le Google Workspace API

Sostituisci PROJECT_ID con il tuo ID progetto Google Cloud:

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

Abilita i servizi MCP di Google Workspace

Abilita i servizi MCP per i prodotti che intendi configurare:

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

Configura Google Chat, se necessario

Il server MCP di Google Chat richiede un'app Chat nello stesso progetto Google Cloud.

Nella console di Google Cloud, apri Google Chat API > Manage > Configuration e crea un'app Chat:

  • Nome app: Chat MCP
  • URL dell'avatar: https://developers.google.com/chat/images/quickstart-app-avatar.png
  • Descrizione: Chat MCP server
  • Funzionalità: disattivare Enable interactive features
  • Log: seleziona Log errors to Logging

Fai clic su Save.

Account Workspace richiesto per la Chat

La configurazione dell'app Google Chat potrebbe non essere disponibile per gli account Google consumer. Se la console indica che la Google Chat API è disponibile solo per gli utenti Google Workspace, ometti il server MCP chat o utilizza un progetto/account supportato da Workspace.

Configura la piattaforma Google Auth

Nella console di Google Cloud, vai su Google Auth Platform.

Se la Google Auth Platform non è ancora configurata, fai clic su Get Started e fornisci:

  • Nome dell'app: usa un nome chiaro, come LibreChat Google Workspace MCP.
  • Email di supporto utente: la tua email di supporto o il gruppo Google.
  • Pubblico: scegli Interno per un'organizzazione Google Workspace, o Esterno se gli utenti sono al di fuori della tua organizzazione o se stai utilizzando un account Google personale.
  • Informazioni di contatto dello sviluppatore: un'email dove Google può inviarti notifiche riguardo al progetto.

Se scegli External e mantieni l'app in modalità di test, aggiungi te stesso e qualsiasi altro utente autorizzato sotto Audience > Test users.

Aggiungi ambiti di accesso ai dati (Data Access scopes)

Apri Data Access > Add or Remove Scopes. Sotto Manually add scopes, incolla gli scope per i server che desideri utilizzare.

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

Fai clic su Add to Table, Update, quindi su Save.

Ambiti sensibili e limitati

Gli scope Gmail, Drive, Chat, Contacts e Directory possono attivare la revisione di Google per gli scope sensibili o limitati. Per uso personale o di sviluppo limitato, gli utenti potrebbero visualizzare un avviso di app non verificata e un limite di 100 utenti. Per l'uso pubblico o a livello di organizzazione, completare il processo di verifica OAuth di Google e qualsiasi revisione richiesta per gli scope limitati.

Crea un client OAuth per l'applicazione Web

In Google Auth Platform > Clients, crea un client OAuth:

  • Tipo di applicazione: Web application
  • Nome: usa un nome descrittivo, come LibreChat Google Workspace MCP

Aggiungi un URI di reindirizzamento autorizzato per ogni server che configuri. Per lo sviluppo locale:

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

Per la produzione, sostituisci http://localhost:3080 con il tuo URL di LibreChat:

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

Fai clic su Create, quindi copia il Client ID e il Client secret.

Aggiungi le credenziali OAuth a .env

Aggiungi i valori del client OAuth al tuo file .env di LibreChat:

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

Puoi utilizzare nomi di variabili d'ambiente differenti se aggiorni anche i riferimenti in librechat.yaml.

Aggiungi i server MCP a librechat.yaml

Aggiungi i server che desideri sotto mcpServers. Questo esempio utilizza tutti i server MCP di Google Workspace attualmente documentati:

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']

Se LibreChat è distribuito su un URL pubblico, aggiorna ogni redirect_uri affinché corrisponda esattamente all'URI di reindirizzamento registrato in Google Cloud.

Whitelist rigorose dei domini MCP

Se il tuo librechat.yaml configura anche mcpSettings.allowedDomains, aggiungi gli host MCP di Google che utilizzi, come gmailmcp.googleapis.com, drivemcp.googleapis.com, calendarmcp.googleapis.com, chatmcp.googleapis.com e people.googleapis.com.

Riavviare LibreChat

Riavvia LibreChat in modo che ricarichi .env e librechat.yaml.

DeploymentCommand
Dockerdocker compose up -d
LocaleFerma il server, quindi riavvialo

Per confermare che i server siano stati caricati in Docker, controlla i log dell'API:

docker logs LibreChat --tail 200 | grep MCP

Connetti ogni server in LibreChat

Apri LibreChat, quindi apri MCP Settings o il menu a discesa MCP Servers nell'input della chat.

Per ogni server Google Workspace:

  1. Fai clic su Connect.
  2. Completa il flusso Google OAuth nel browser.
  3. Rivedi gli ambiti richiesti.
  4. Fai clic su Allow.

Dopo che OAuth ha avuto successo, gli strumenti del server diventano disponibili nella chat e nel Agent Builder.

Testing

Prova prompt che puntano a un server alla volta:

ServerPrompt
People"In base al mio profilo Google, qual è il mio nome?"
Drive"Trova un file chiamato Marketing Plan e riassumilo."
Gmail"Trova la mia ultima email riguardo al marketing plan."
Gmail"Scrivi una bozza di email per [email protected] dicendo che approvo il marketing plan."
Calendar"Quando è la mia prossima riunione con Ariel?"
Chat"Cerca i messaggi recenti di Google Chat riguardo al marketing plan."

Risoluzione dei problemi

SintomoCosa controllare
Google restituisce redirect_uri_mismatchL'URI di reindirizzamento del client OAuth di Google deve corrispondere esattamente al redirect_uri in librechat.yaml, inclusi protocollo, hostname, porta, nome del server e percorso.
LibreChat mostra il server ma non gli strumentiConnetti il server dall'interfaccia utente di LibreChat. I server remoti abilitati per OAuth espongono gli strumenti dopo che l'utente si è autenticato.
Google mostra un avviso di app non verificataQuesto è previsto per le app non verificate che richiedono ambiti sensibili o limitati. Per uso personale o di sviluppo limitato, gli utenti possono ignorare l'avviso finché il progetto non raggiunge il limite di utenti non verificati di Google.
OAuth funziona durante i test ma scade in seguitoLe app esterne in modalità test possono ricevere token di aggiornamento che scadono dopo 7 giorni. Pubblica l'app in produzione per token di aggiornamento a lunga durata, o ri-autenticati durante lo sviluppo.
La configurazione di Google Chat è disabilitataUtilizza un progetto/account supportato da Google Workspace per Chat, o ometti il server chat.
Le richieste MCP sono bloccate dalla policy di dominio di LibreChatSe mcpSettings.allowedDomains è configurato, aggiungi gli hostname del server MCP di Google che utilizzi.

Note sulla sicurezza

  • Connetti i server MCP di Google Workspace solo a istanze di LibreChat di cui ti fidi.
  • Richiedi solo i prodotti e gli ambiti di cui gli utenti hanno effettivamente bisogno.
  • Esamina le azioni suggerite dall'assistente prima di inviare email, pubblicare messaggi in Chat, caricare file o modificare eventi del calendario.
  • Tratta i messaggi email, i documenti e i messaggi di chat come input non attendibili. Possono contenere tentativi di prompt injection indiretta che cercano di influenzare l'assistente.
  • Per distribuzioni pubbliche o a livello di organizzazione, completa la verifica Google OAuth e segui i controlli di accesso alle app di terze parti della tua organizzazione.

Com’è questa guida?