MCP Salesforce
Konfigurasikan server MCP yang di-host Salesforce di LibreChat dengan External Client App dan OAuth per-pengguna.
Server MCP yang dihosting Salesforce memungkinkan pengguna LibreChat untuk terhubung ke Salesforce melalui OAuth per-pengguna. Setiap panggilan alat dijalankan dengan izin pengguna Salesforce yang terautentikasi, termasuk keamanan tingkat bidang, izin objek, dan aturan berbagi.
Gunakan Aplikasi Klien Eksternal
Server MCP yang dihosting di Salesforce memerlukan External Client App. Classic Salesforce Connected Apps tidak didukung untuk autentikasi MCP yang dihosting.
Apa yang Akan Anda Konfigurasi
Panduan ini dimulai dengan server SObject read-only karena merupakan koneksi pertama yang paling aman. Setelah itu berhasil, Anda dapat beralih ke server Salesforce yang lebih luas.
| Server | Tingkat akses | URL Produksi | URL Sandbox atau scratch |
|---|---|---|---|
| SObject Reads | Baca, kueri, cari, relasi | https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads |
| SObject Mutations | Baca, buat, perbarui, tanpa hapus | https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations |
| SObject Deletes | Alur kerja yang berfokus pada penghapusan | https://api.salesforce.com/platform/mcp/v1/platform/sobject-deletes | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes |
| SObject All | Buat, baca, perbarui, hapus penuh | https://api.salesforce.com/platform/mcp/v1/platform/sobject-all | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all |
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. Contoh di bawah ini menggunakan
salesforce, jadi callback lokalnya adalah http://localhost:3080/api/mcp/salesforce/oauth/callback.
Prasyarat
- Sebuah org Salesforce yang mendukung server MCP yang di-host dan akses API.
- Izin Administrator Sistem, atau izin yang setara untuk membuat External Client Apps dan mengaktifkan server MCP.
- 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.
Jika Anda belum memiliki org Salesforce, buatlah org Developer Edition gratis dari developer.salesforce.com/signup, verifikasi akun melalui email, lalu masuk di login.salesforce.com. Jika menu Pengaturan Salesforce dalam panduan ini tidak terlihat di org tersebut, gunakan org produksi, sandbox, atau trial yang didukung dengan server MCP yang di-host diaktifkan.
Pengaturan
Aktifkan server MCP Salesforce
Di Salesforce, buka Setup.
- Di Quick Find, cari
MCP Servers. - Buka MCP Servers di bawah API Catalog.
- Aktifkan server yang ingin Anda gunakan. Untuk pengaturan awal, aktifkan
platform/sobject-reads. - Tunggu hingga 2 menit agar server menjadi aktif.
Jika Anda berencana untuk menggunakan contoh akses penuh, aktifkan platform/sobject-all sebagai gantinya.
Membuat Aplikasi Klien Eksternal
Di Pengaturan Salesforce:
- Di Quick Find, cari
External Client App Manager. - Klik New External Client App.
- Isi informasi dasar aplikasi. Gunakan nama yang jelas, seperti
LibreChat Salesforce MCP. - Perluas API (Enable OAuth Settings) dan aktifkan OAuth.
- Tambahkan URL callback LibreChat.
Untuk pengembangan lokal:
http://localhost:3080/api/mcp/salesforce/oauth/callbackUntuk produksi, ganti base URL dengan URL LibreChat publik Anda:
https://chat.example.com/api/mcp/salesforce/oauth/callbackKonfigurasi scope OAuth dan keamanan
Di pengaturan OAuth External Client App, tambahkan scope berikut:
mcp_api
refresh_tokenJangan gunakan scope api Salesforce standar untuk server MCP yang di-host. Server MCP mengharapkan scope mcp_api.
Di pengaturan keamanan External Client App:
- Pilih Issue JSON Web Token (JWT)-based access tokens for named users.
- Pilih Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows.
- Biarkan Require Secret for Web Server Flow tetap dinonaktifkan untuk pengaturan dasar dalam panduan ini.
- Biarkan Require Secret for Refresh Token Flow tetap dinonaktifkan untuk pengaturan dasar dalam panduan ini.
Klik Create, lalu buka pengaturan aplikasi dan salin Consumer Key. Salesforce menyatakan bahwa External Client App baru dapat memakan waktu hingga 30 menit untuk tersedia.
Client secret opsional
LibreChat dapat menyimpan client secret di sisi server. Jika admin Salesforce Anda mengaktifkan Require Secret for Web Server Flow, buat juga client secret dan sertakan kolom opsional client_secret yang ditunjukkan nanti dalam panduan ini.
Tambahkan client ID Salesforce ke .env
Tambahkan consumer key External Client App ke file .env LibreChat Anda:
SALESFORCE_MCP_CLIENT_ID=your-salesforce-consumer-keyJika Anda mengaktifkan Require Secret for Web Server Flow, tambahkan juga:
SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secretTambahkan Salesforce MCP ke librechat.yaml
Contoh ini mengonfigurasi server SObject baca-saja untuk org produksi atau Developer Edition:
mcpServers:
salesforce:
type: streamable-http
url: 'https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads'
timeout: 90000
initTimeout: 150000
requiresOAuth: true
startup: false
oauth:
authorization_url: 'https://login.salesforce.com/services/oauth2/authorize'
token_url: 'https://login.salesforce.com/services/oauth2/token'
client_id: '${SALESFORCE_MCP_CLIENT_ID}'
scope: 'mcp_api refresh_token'
redirect_uri: 'http://localhost:3080/api/mcp/salesforce/oauth/callback'Untuk sandbox atau scratch org, gunakan URL MCP sandbox dan endpoint OAuth sandbox Salesforce:
mcpServers:
salesforce:
type: streamable-http
url: 'https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads'
timeout: 90000
initTimeout: 150000
requiresOAuth: true
startup: false
oauth:
authorization_url: 'https://test.salesforce.com/services/oauth2/authorize'
token_url: 'https://test.salesforce.com/services/oauth2/token'
client_id: '${SALESFORCE_MCP_CLIENT_ID}'
scope: 'mcp_api refresh_token'
redirect_uri: 'http://localhost:3080/api/mcp/salesforce/oauth/callback'Jika Aplikasi Klien Eksternal Anda memerlukan client secret, tambahkan kolom-kolom ini di dalam oauth:
oauth:
client_secret: '${SALESFORCE_MCP_CLIENT_SECRET}'
token_exchange_method: default_post
token_endpoint_auth_methods_supported: ['client_secret_post']Jika LibreChat di-deploy pada URL publik, perbarui redirect_uri agar sesuai dengan URL callback yang tepat yang terdaftar di Salesforce.
Daftar izin domain MCP yang ketat
Jika librechat.yaml Anda juga mengonfigurasi mcpSettings.allowedDomains, tambahkan api.salesforce.com.
Jika Anda menggunakan endpoint OAuth sandbox Salesforce dan kebijakan Anda juga berlaku untuk host OAuth, izinkan juga test.salesforce.com atau host My Domain sandbox Anda.
Beralih ke akses Salesforce penuh, jika diperlukan
Setelah server read-only berfungsi, Anda dapat beralih ke server Salesforce lain yang diaktifkan dengan mengubah url.
Untuk akses SObject penuh di org produksi atau Developer Edition:
url: 'https://api.salesforce.com/platform/mcp/v1/platform/sobject-all'Untuk akses SObject penuh di sandbox atau scratch org:
url: 'https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all'Hanya ekspos server yang memiliki kemampuan mutasi atau hapus kepada pengguna yang memang diizinkan untuk membuat, memperbarui, atau menghapus catatan Salesforce melalui asisten.
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 telah dimuat di Docker, periksa log API:
docker logs LibreChat --tail 200 | grep MCPMenghubungkan Salesforce di LibreChat
Buka LibreChat, lalu buka MCP Settings atau menu drop-down MCP Servers di input obrolan.
- Klik Connect untuk server Salesforce.
- Selesaikan alur OAuth Salesforce.
- Tinjau scope
mcp_apidanrefresh_tokenyang diminta. - Kembali ke LibreChat setelah halaman sukses OAuth ditutup.
Setelah OAuth berhasil dan koneksi MCP diinisialisasi, alat Salesforce akan tersedia di dalam obrolan dan di Agent Builder.
Pengujian
Coba prompt yang sesuai dengan server yang Anda aktifkan:
| Server | Prompt |
|---|---|
| Any SObject server | "Siapa saya di Salesforce?" |
| SObject Reads | "Tunjukkan lima akun yang paling baru saya lihat." |
| SObject Reads | "Cari kasus terbuka yang terkait dengan Acme Corp dan buat ringkasannya." |
| SObject Mutations | "Buat tugas tindak lanjut untuk akun ini. Tanya saya sebelum menyimpan apa pun." |
| SObject All | "Perbarui tahap peluang ini menjadi Closed Won setelah mengonfirmasi catatan yang tepat." |
Untuk pemeriksaan kewarasan tingkat rendah, uji server Salesforce yang sama dengan Postman atau MCP Inspector. Jika itu berhasil tetapi LibreChat tidak, bandingkan URL callback, cakupan OAuth, dan URL server LibreChat dengan klien yang berfungsi.
Pemecahan Masalah
| Gejala | Apa yang harus diperiksa |
|---|---|
Salesforce mengatakan redirect_uri_mismatch | URL callback External Client App harus sama persis dengan redirect_uri di librechat.yaml, termasuk protokol, nama host, port, nama server, dan path. |
Salesforce Login History mengatakan Invalid Code Verifier | Status PKCE tidak cocok dengan callback. Hindari memulai beberapa alur OAuth sekaligus. Dalam deployment multi-replika, pastikan LibreChat menggunakan penyimpanan alur OAuth bersama, seperti Redis, agar permintaan otorisasi dan callback dapat diarahkan ke replika yang berbeda dengan aman. |
Salesforce mengembalikan JWT Token is required | Server dipanggil tanpa token akses MCP Salesforce. Selesaikan OAuth dari LibreChat, konfirmasi requiresOAuth: true, dan konfirmasi bahwa pengguna telah mengotorisasi External Client App tersebut. |
Salesforce mengembalikan Invalid token | Konfirmasi bahwa External Client App menggunakan mcp_api, menerbitkan token akses berbasis JWT, dan mengaktifkan PKCE. Konfirmasi juga bahwa URL MCP dan endpoint OAuth mengarah ke jenis organisasi yang sama, antara produksi atau sandbox. |
Salesforce mengembalikan Server definition not found for: sobject-all | Server belum diaktifkan, masih dalam proses propagasi, atau URL menggunakan path produksi versus sandbox yang salah. Aktifkan server di Salesforce Setup dan tunggu hingga 2 menit. |
| Penyegaran token gagal dengan kesalahan terkait scope | Gunakan mcp_api refresh_token sebagai scope yang dikonfigurasi. Jangan mengganti scope api Salesforce biasa untuk Hosted MCP. |
| LibreChat menampilkan Salesforce tetapi tidak ada alat | Hubungkan server dari UI LibreChat. Server jarak jauh yang mengaktifkan OAuth akan menampilkan alat setelah pengguna melakukan autentikasi dan server telah diinisialisasi. |
| Permintaan MCP diblokir oleh kebijakan domain LibreChat | Jika mcpSettings.allowedDomains dikonfigurasi, izinkan api.salesforce.com dan host OAuth Salesforce apa pun yang digunakan oleh deployment Anda. |
Catatan Keamanan
- Mulai dengan
platform/sobject-readskecuali pengguna benar-benar memerlukan akses tulis atau hapus. - Salesforce memberlakukan izin pengguna yang terautentikasi, namun asisten masih dapat mengusulkan tindakan yang luas. Tinjau operasi tulis dan hapus dengan cermat.
- Gunakan permission sets Salesforce dan kebijakan External Client App untuk membatasi siapa yang dapat mengotorisasi klien MCP.
- Anggap catatan Salesforce sebagai input yang tidak tepercaya. Catatan dapat berisi upaya injeksi prompt tidak langsung yang mencoba memengaruhi asisten.
- Untuk penyebaran produksi dengan beberapa replika API LibreChat, gunakan penyimpanan bersama untuk status alur OAuth agar callback PKCE tetap persisten di seluruh replika.
Halaman Terkait
Bagaimana panduan ini?