Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack ๐ŸŽ‰ Learn more
LibreChat

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:

ProdukURL 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

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.
  • gcloud terinstal dan terautentikasi, atau akses ke konsol Google Cloud.
  • Instans LibreChat yang sedang berjalan dengan librechat.yaml yang telah dipasang (mounted) atau dimuat dengan cara lain.
  • URL dasar publik yang digunakan pengguna untuk membuka LibreChat, contohnya http://localhost:3080 untuk pengembangan lokal atau https://chat.example.com untuk 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_ID

Aktifkan 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_ID

Konfigurasi 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.readonly

Klik 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/callback

Untuk produksi, ganti http://localhost:3080 dengan URL LibreChat Anda:

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

Klik 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-secret

Anda 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.

DeploymentCommand
Dockerdocker compose up -d
LokalHentikan server, lalu mulai kembali

Untuk mengonfirmasi server yang dimuat di Docker, periksa log API:

docker logs LibreChat --tail 200 | grep MCP

Hubungkan setiap server di LibreChat

Buka LibreChat, lalu buka MCP Settings atau menu drop-down MCP Servers di input obrolan.

Untuk setiap server Google Workspace:

  1. Klik Connect.
  2. Selesaikan alur Google OAuth di peramban.
  3. Tinjau cakupan yang diminta.
  4. 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:

ServerPrompt
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

GejalaApa yang perlu diperiksa
Google menampilkan redirect_uri_mismatchURI 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 toolsHubungkan server dari UI LibreChat. Server jarak jauh yang mendukung OAuth akan menampilkan tools setelah pengguna melakukan autentikasi.
Google menampilkan peringatan aplikasi tidak terverifikasiIni 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 kedaluwarsaAplikasi 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 dinonaktifkanGunakan proyek/akun yang didukung Google Workspace untuk Chat, atau hilangkan server chat.
Permintaan MCP diblokir oleh kebijakan domain LibreChatJika 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.

Bagaimana panduan ini?