MCP Google Workspace
Konfigurasikan server MCP Workspace jarak jauh Google untuk Gmail, Drive, Calendar, People, dan Chat di LibreChat.
Google menyediakan server remote Model Context Protocol (MCP) untuk produk-produk Google Workspace. Di LibreChat, setiap produk Google Workspace dikonfigurasi sebagai server remote MCP yang mendukung OAuth miliknya sendiri.
Pratinjau Pengembang
Google menandai server MCP Google Workspace sebagai bagian dari Google Workspace Developer Preview Program. Tinjau dokumentasi Google saat ini sebelum menyebarkannya secara luas, karena produk, cakupan, dan persyaratan verifikasi yang tersedia dapat berubah.
Apa yang Akan Anda Konfigurasi
Google Workspace MCP bukanlah satu server gabungan. Konfigurasikan hanya produk yang ingin Anda ekspos kepada pengguna:
| Produk | URL 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 |
Setiap pengguna menghubungkan setiap server dari UI LibreChat. LibreChat menyimpan token OAuth per pengguna, sehingga akses ke Gmail, Drive, Calendar, People, dan Chat mengikuti akun Google yang memberikan otorisasi pada koneksi tersebut.
Prasyarat
- Sebuah Google Cloud project.
- Izin untuk mengaktifkan API dan membuat klien OAuth di proyek tersebut.
gcloudterinstal dan terautentikasi, atau akses ke konsol Google Cloud.- Instans LibreChat yang sedang berjalan dengan
librechat.yamlyang telah dipasang (mounted) atau dimuat dengan cara lain. - URL dasar publik yang digunakan pengguna untuk membuka LibreChat, contohnya
http://localhost:3080untuk pengembangan lokal atauhttps://chat.example.comuntuk produksi.
Jalur callback OAuth
Jalur callback OAuth MCP LibreChat adalah BASE_URL/api/mcp/SERVER_NAME/oauth/callback.
SERVER_NAME adalah kunci di bawah mcpServers dalam librechat.yaml, seperti gmail atau drive.
Pengaturan
Aktifkan Google Workspace API
Ganti PROJECT_ID dengan ID proyek Google Cloud Anda:
gcloud services enable gmail.googleapis.com \
drive.googleapis.com \
calendar-json.googleapis.com \
chat.googleapis.com \
people.googleapis.com \
--project=PROJECT_IDAktifkan layanan MCP Google Workspace
Aktifkan layanan MCP untuk produk yang ingin Anda konfigurasi:
gcloud services enable gmailmcp.googleapis.com \
drivemcp.googleapis.com \
calendarmcp.googleapis.com \
chatmcp.googleapis.com \
people.googleapis.com \
--project=PROJECT_IDKonfigurasi Google Chat, jika diperlukan
Server MCP Google Chat memerlukan aplikasi Chat di dalam project Google Cloud yang sama.
Di konsol Google Cloud, buka Google Chat API > Manage > Configuration dan buat aplikasi Chat:
- Nama aplikasi:
Chat MCP - URL Avatar:
https://developers.google.com/chat/images/quickstart-app-avatar.png - Deskripsi:
Chat MCP server - Fungsionalitas: matikan Enable interactive features
- Logs: pilih Log errors to Logging
Klik Save.
Akun Workspace diperlukan untuk Chat
Konfigurasi aplikasi Google Chat mungkin tidak tersedia untuk akun Google konsumen. Jika konsol menyatakan bahwa Google Chat API hanya tersedia untuk pengguna Google Workspace, abaikan server MCP chat atau gunakan proyek/akun yang didukung Workspace.
Konfigurasi Google Auth Platform
Di konsol Google Cloud, buka Google Auth Platform.
Jika Google Auth Platform belum dikonfigurasi, klik Get Started dan berikan:
- Nama aplikasi: gunakan nama yang jelas, seperti
LibreChat Google Workspace MCP. - Email dukungan pengguna: email dukungan atau Google group Anda.
- Audience: pilih Internal untuk organisasi Google Workspace, atau External jika pengguna berada di luar organisasi Anda atau Anda menggunakan akun Google pribadi.
- Informasi kontak pengembang: alamat email tempat Google dapat memberi tahu Anda tentang proyek tersebut.
Jika Anda memilih External dan membiarkan aplikasi dalam mode pengujian, tambahkan diri Anda dan pengguna lain yang diizinkan di bawah Audience > Test users.
Tambahkan cakupan Akses Data
Buka Data Access > Add or Remove Scopes. Di bawah Manually add scopes, tempel scope untuk server yang ingin Anda gunakan.
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.readonlyKlik Add to Table, Update, lalu Save.
Cakupan sensitif dan terbatas
Cakupan Gmail, Drive, Chat, Contacts, dan Directory dapat memicu tinjauan cakupan sensitif atau terbatas dari Google. Untuk penggunaan pribadi atau pengembangan terbatas, pengguna mungkin akan melihat peringatan aplikasi yang belum diverifikasi dan batas 100 pengguna. Untuk penggunaan publik atau di seluruh organisasi, selesaikan proses verifikasi OAuth Google dan tinjauan cakupan terbatas apa pun yang diperlukan.
Membuat klien OAuth aplikasi Web
Di Google Auth Platform > Clients, buatlah klien OAuth:
- Tipe aplikasi:
Web application - Name: gunakan nama yang deskriptif, seperti
LibreChat Google Workspace MCP
Tambahkan URI pengalihan (redirect URI) yang diotorisasi untuk setiap server yang Anda konfigurasi. Untuk pengembangan lokal:
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/callbackUntuk produksi, ganti http://localhost:3080 dengan URL LibreChat Anda:
https://chat.example.com/api/mcp/gmail/oauth/callbackKlik Create, lalu salin Client ID dan Client secret.
Tambahkan kredensial OAuth ke .env
Tambahkan nilai klien OAuth ke file .env LibreChat Anda:
GOOGLE_WORKSPACE_MCP_CLIENT_ID=your-oauth-client-id
GOOGLE_WORKSPACE_MCP_CLIENT_SECRET=your-oauth-client-secretAnda dapat menggunakan nama variabel lingkungan yang berbeda jika Anda juga memperbarui referensi di librechat.yaml.
Tambahkan server MCP ke librechat.yaml
Tambahkan server yang Anda inginkan di bawah mcpServers. Contoh ini menggunakan semua server MCP Google Workspace yang saat ini didokumentasikan:
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']Jika LibreChat di-deploy pada URL publik, perbarui setiap redirect_uri agar sesuai dengan URI pengalihan yang tepat yang didaftarkan di Google Cloud.
Daftar izin domain MCP yang ketat
Jika librechat.yaml Anda juga mengonfigurasi mcpSettings.allowedDomains, tambahkan host Google MCP yang Anda gunakan, seperti gmailmcp.googleapis.com, drivemcp.googleapis.com, calendarmcp.googleapis.com, chatmcp.googleapis.com, dan people.googleapis.com.
Restart LibreChat
Mulai ulang LibreChat agar memuat ulang .env dan librechat.yaml.
| Deployment | Command |
|---|---|
| Docker | docker compose up -d |
| Lokal | Hentikan server, lalu mulai kembali |
Untuk mengonfirmasi server yang dimuat di Docker, periksa log API:
docker logs LibreChat --tail 200 | grep MCPHubungkan setiap server di LibreChat
Buka LibreChat, lalu buka MCP Settings atau menu drop-down MCP Servers di input obrolan.
Untuk setiap server Google Workspace:
- Klik Connect.
- Selesaikan alur Google OAuth di peramban.
- Tinjau cakupan yang diminta.
- Klik Allow.
Setelah OAuth berhasil, alat server akan tersedia di obrolan dan di Agent Builder.
Pengujian
Coba prompt yang menargetkan satu server dalam satu waktu:
| Server | Prompt |
|---|---|
| People | "Menurut profil Google saya, siapa nama saya?" |
| Drive | "Cari file bernama Marketing Plan dan buat ringkasannya." |
| Gmail | "Cari email terbaru saya tentang marketing plan." |
| Gmail | "Draf email ke [email protected] yang menyatakan saya menyetujui marketing plan." |
| Calendar | "Kapan rapat saya berikutnya dengan Ariel?" |
| Chat | "Cari pesan Google Chat terbaru tentang marketing plan." |
Pemecahan Masalah
| Gejala | Apa yang perlu diperiksa |
|---|---|
Google menampilkan redirect_uri_mismatch | URI pengalihan klien Google OAuth harus sama persis dengan redirect_uri di librechat.yaml, termasuk protokol, nama host, port, nama server, dan path. |
| LibreChat menampilkan server tetapi tidak ada tools | Hubungkan server dari UI LibreChat. Server jarak jauh yang mendukung OAuth akan menampilkan tools setelah pengguna melakukan autentikasi. |
| Google menampilkan peringatan aplikasi tidak terverifikasi | Ini adalah hal yang wajar untuk aplikasi tidak terverifikasi yang meminta cakupan (scope) sensitif atau terbatas. Untuk penggunaan pribadi atau pengembangan terbatas, pengguna dapat melanjutkan melewati peringatan tersebut hingga proyek mencapai batas pengguna tidak terverifikasi dari Google. |
| OAuth berfungsi saat pengujian tetapi kemudian kedaluwarsa | Aplikasi eksternal dalam mode pengujian dapat menerima token penyegaran (refresh token) yang kedaluwarsa setelah 7 hari. Publikasikan aplikasi ke produksi untuk mendapatkan token penyegaran yang lebih tahan lama, atau lakukan autentikasi ulang selama pengembangan. |
| Konfigurasi Google Chat dinonaktifkan | Gunakan proyek/akun yang didukung Google Workspace untuk Chat, atau hilangkan server chat. |
| Permintaan MCP diblokir oleh kebijakan domain LibreChat | Jika mcpSettings.allowedDomains dikonfigurasi, tambahkan nama host server Google MCP yang Anda gunakan. |
Catatan Keamanan
- Hubungkan server MCP Google Workspace hanya ke instance LibreChat yang Anda percayai.
- Minta hanya produk dan cakupan yang benar-benar dibutuhkan pengguna.
- Tinjau tindakan yang disarankan asisten sebelum mengirim email, memposting pesan Chat, mengunggah file, atau mengubah acara kalender.
- Anggap pesan email, dokumen, dan pesan obrolan sebagai input yang tidak tepercaya. Pesan-pesan tersebut dapat berisi upaya injeksi prompt tidak langsung yang mencoba memengaruhi asisten.
- Untuk penerapan publik atau skala organisasi, selesaikan verifikasi Google OAuth dan ikuti kontrol akses aplikasi pihak ketiga di organisasi Anda.
Halaman Terkait
Bagaimana panduan ini?