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:
| Prodotto | URL del server 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 |
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.
gcloudinstallato e autenticato, oppure accesso alla console di Google Cloud.- Un'istanza di LibreChat in esecuzione con
librechat.yamlmontato o caricato in altro modo. - L'URL di base pubblico che gli utenti utilizzano per aprire LibreChat, ad esempio
http://localhost:3080per lo sviluppo locale ohttps://chat.example.comper 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_IDAbilita 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_IDConfigura 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.readonlyFai 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/callbackPer la produzione, sostituisci http://localhost:3080 con il tuo URL di LibreChat:
https://chat.example.com/api/mcp/gmail/oauth/callbackFai 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-secretPuoi 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.
| Deployment | Command |
|---|---|
| Docker | docker compose up -d |
| Locale | Ferma 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 MCPConnetti 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:
- Fai clic su Connect.
- Completa il flusso Google OAuth nel browser.
- Rivedi gli ambiti richiesti.
- 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:
| Server | Prompt |
|---|---|
| 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
| Sintomo | Cosa controllare |
|---|---|
Google restituisce redirect_uri_mismatch | L'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 strumenti | Connetti 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 verificata | Questo è 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 seguito | Le 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 è disabilitata | Utilizza un progetto/account supportato da Google Workspace per Chat, o ometti il server chat. |
| Le richieste MCP sono bloccate dalla policy di dominio di LibreChat | Se 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.
Pagine correlate
Com’è questa guida?