MCP Salesforce
Skonfiguruj hostowane serwery MCP Salesforce w LibreChat za pomocą zewnętrznej aplikacji klienckiej (External Client App) i uwierzytelniania OAuth dla każdego użytkownika.
Serwery MCP hostowane przez Salesforce pozwalają użytkownikom LibreChat łączyć się z Salesforce poprzez OAuth dla każdego użytkownika. Każde wywołanie narzędzia jest wykonywane z uprawnieniami uwierzytelnionego użytkownika Salesforce, w tym z uwzględnieniem zabezpieczeń na poziomie pola, uprawnień do obiektów oraz reguł udostępniania.
Użyj zewnętrznej aplikacji klienckiej
Serwery MCP hostowane przez Salesforce wymagają aplikacji External Client App. Klasyczne aplikacje Salesforce Connected Apps nie są obsługiwane w przypadku uwierzytelniania Hosted MCP.
Co skonfigurujesz
Ten przewodnik rozpoczyna się od serwera SObject tylko do odczytu, ponieważ jest to najbezpieczniejsze pierwsze połączenie. Gdy to zadziała, możesz przełączyć się na szerszy serwer Salesforce.
| Serwer | Poziom dostępu | Produkcyjny URL | URL środowiska testowego (sandbox) |
|---|---|---|---|
| SObject Reads | Odczyt, zapytania, wyszukiwanie, relacje | https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads |
| SObject Mutations | Odczyt, tworzenie, aktualizacja, brak usuwania | https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations |
| SObject Deletes | Przepływy pracy skupione na usuwaniu | https://api.salesforce.com/platform/mcp/v1/platform/sobject-deletes | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes |
| SObject All | Pełne tworzenie, odczyt, aktualizacja, usuwanie | https://api.salesforce.com/platform/mcp/v1/platform/sobject-all | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all |
Ścieżka wywołania zwrotnego OAuth
Ścieżka wywołania zwrotnego (callback) OAuth MCP w LibreChat to BASE_URL/api/mcp/SERVER_NAME/oauth/callback.
SERVER_NAME to klucz w sekcji mcpServers w pliku librechat.yaml. Poniższe przykłady używają salesforce, więc lokalny adres wywołania zwrotnego to http://localhost:3080/api/mcp/salesforce/oauth/callback.
Wymagania wstępne
- Organizacja Salesforce, która obsługuje serwery Hosted MCP oraz dostęp do API.
- Uprawnienia administratora systemu lub równoważne uprawnienia do tworzenia External Client Apps i włączania serwerów MCP.
- Działająca instancja LibreChat z zamontowanym lub w inny sposób wczytanym plikiem
librechat.yaml. - Publiczny bazowy adres URL, którego użytkownicy używają do otwarcia LibreChat, na przykład
http://localhost:3080w przypadku lokalnego środowiska programistycznego lubhttps://chat.example.comw środowisku produkcyjnym.
Jeśli nie masz jeszcze organizacji Salesforce, utwórz bezpłatną organizację Developer Edition pod adresem developer.salesforce.com/signup, zweryfikuj konto przez e-mail, a następnie zaloguj się na login.salesforce.com. Jeśli menu konfiguracji Salesforce opisane w tym przewodniku nie są widoczne w organizacji, użyj wspieranej organizacji produkcyjnej, typu sandbox lub próbnej z włączonymi serwerami Hosted MCP.
Konfiguracja
Aktywacja serwera MCP Salesforce
W Salesforce otwórz Setup.
- W Quick Find wyszukaj
MCP Servers. - Otwórz MCP Servers w sekcji API Catalog.
- Włącz serwer, którego chcesz użyć. W przypadku pierwszej konfiguracji włącz
platform/sobject-reads. - Poczekaj do 2 minut, aż serwer stanie się aktywny.
Jeśli planujesz użyć przykładu pełnego dostępu, włącz zamiast tego platform/sobject-all.
Tworzenie zewnętrznej aplikacji klienckiej
W konfiguracji Salesforce:
- W Quick Find wyszukaj
External Client App Manager. - Kliknij New External Client App.
- Wypełnij podstawowe informacje o aplikacji. Użyj jasnej nazwy, takiej jak
LibreChat Salesforce MCP. - Rozwiń API (Enable OAuth Settings) i włącz OAuth.
- Dodaj adres URL wywołania zwrotnego (callback URL) LibreChat.
Do lokalnego programowania:
http://localhost:3080/api/mcp/salesforce/oauth/callbackW środowisku produkcyjnym zastąp adres bazowy swoim publicznym adresem URL LibreChat:
https://chat.example.com/api/mcp/salesforce/oauth/callbackKonfiguracja zakresów (scopes) OAuth i bezpieczeństwa
W ustawieniach OAuth zewnętrznej aplikacji klienckiej dodaj następujące zakresy (scopes):
mcp_api
refresh_tokenNie używaj standardowego zakresu (scope) api Salesforce dla serwerów Hosted MCP. Serwer MCP oczekuje zakresu mcp_api.
W ustawieniach zabezpieczeń External Client App:
- Wybierz Wydawaj tokeny dostępu oparte na JSON Web Token (JWT) dla nazwanych użytkowników.
- Zaznacz Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows.
- Pozostaw opcję Require Secret for Web Server Flow wyłączoną na potrzeby podstawowej konfiguracji w tym przewodniku.
- Pozostaw opcję Require Secret for Refresh Token Flow wyłączoną dla podstawowej konfiguracji w tym przewodniku.
Kliknij Create, a następnie otwórz ustawienia aplikacji i skopiuj Consumer Key. Salesforce informuje, że udostępnienie nowej aplikacji External Client App może zająć do 30 minut.
Opcjonalny klucz tajny klienta (client secret)
LibreChat może przechowywać client secret po stronie serwera. Jeśli Twój administrator Salesforce włączy opcję Require Secret for Web Server Flow, wygeneruj również client secret i uwzględnij opcjonalne pola client_secret pokazane w dalszej części tego przewodnika.
Dodaj identyfikator klienta Salesforce do .env
Dodaj klucz konsumenta External Client App do swojego pliku .env w LibreChat:
SALESFORCE_MCP_CLIENT_ID=your-salesforce-consumer-keyJeśli włączyłeś Require Secret for Web Server Flow, dodaj również:
SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secretDodawanie Salesforce MCP do librechat.yaml
Ten przykład konfiguruje serwer SObject tylko do odczytu dla organizacji produkcyjnej lub 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'W przypadku środowiska typu sandbox lub scratch org, użyj adresu URL MCP dla sandboxa oraz punktów końcowych OAuth dla sandboxa 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'Jeśli Twoja zewnętrzna aplikacja kliencka wymaga klucza tajnego klienta (client secret), dodaj te pola wewnątrz oauth:
oauth:
client_secret: '${SALESFORCE_MCP_CLIENT_SECRET}'
token_exchange_method: default_post
token_endpoint_auth_methods_supported: ['client_secret_post']Jeśli LibreChat jest wdrożony pod publicznym adresem URL, zaktualizuj redirect_uri, aby odpowiadał dokładnemu adresowi URL wywołania zwrotnego (callback URL) zarejestrowanemu w Salesforce.
Ścisłe listy dozwolonych domen MCP
Jeśli Twój librechat.yaml konfiguruje również mcpSettings.allowedDomains, dodaj api.salesforce.com.
Jeśli używasz punktów końcowych OAuth środowiska piaskownicy (sandbox) Salesforce, a Twoja polityka dotyczy również hostów OAuth, zezwól także na test.salesforce.com lub hosta Twojej domeny My Domain w środowisku piaskownicy.
Przełącz na pełny dostęp do Salesforce, jeśli to konieczne
Gdy serwer tylko do odczytu zacznie działać, możesz przełączyć się na inny aktywny serwer Salesforce, zmieniając url.
Aby uzyskać pełny dostęp do SObject w organizacji produkcyjnej lub Developer Edition:
url: 'https://api.salesforce.com/platform/mcp/v1/platform/sobject-all'Aby uzyskać pełny dostęp do SObject w środowisku sandbox lub scratch org:
url: 'https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all'Udostępniaj serwery z możliwością modyfikacji lub usuwania tylko tym użytkownikom, którzy powinni mieć uprawnienia do tworzenia, aktualizowania lub usuwania rekordów Salesforce za pośrednictwem asystenta.
Restart LibreChat
Zrestartuj LibreChat, aby ponownie wczytać .env oraz librechat.yaml.
| Wdrożenie | Polecenie |
|---|---|
| Docker | docker compose up -d |
| Lokalne | Zatrzymaj serwer, a następnie uruchom go ponownie |
Aby potwierdzić, że serwer załadował się w Docker, sprawdź logi API:
docker logs LibreChat --tail 200 | grep MCPPołącz Salesforce w LibreChat
Otwórz LibreChat, a następnie otwórz MCP Settings lub rozwijane menu MCP Servers w polu wprowadzania czatu.
- Kliknij Connect dla serwera Salesforce.
- Dokończ proces OAuth Salesforce.
- Przejrzyj wymagane zakresy
mcp_apiorazrefresh_token. - Wróć do LibreChat po zamknięciu strony sukcesu OAuth.
Po pomyślnym zakończeniu OAuth i zainicjowaniu połączenia MCP, narzędzia Salesforce stają się dostępne na czacie oraz w Agent Builder.
Testowanie
Wypróbuj prompty pasujące do serwera, który włączyłeś:
| Serwer | Prompt |
|---|---|
| Dowolny serwer SObject | "Kim jestem w Salesforce?" |
| Odczyty SObject | "Pokaż mi moje pięć ostatnio przeglądanych kont." |
| Odczyty SObject | "Znajdź otwarte zgłoszenia powiązane z Acme Corp i podsumuj je." |
| Mutacje SObject | "Utwórz zadanie uzupełniające dla tego konta. Zapytaj mnie przed zapisaniem czegokolwiek." |
| Wszystkie SObject | "Zaktualizuj etap tej szansy sprzedaży na Closed Won po potwierdzeniu dokładnego rekordu." |
Aby przeprowadzić bardziej szczegółową weryfikację, przetestuj ten sam serwer Salesforce za pomocą Postman lub MCP Inspector. Jeśli to działa, a LibreChat nie, porównaj adres URL wywołania zwrotnego (callback URL), zakresy OAuth (scopes) oraz adres URL serwera w LibreChat z działającym klientem.
Rozwiązywanie problemów
| Symptom | Co sprawdzić |
|---|---|
Salesforce zwraca redirect_uri_mismatch | Adres URL wywołania zwrotnego (callback URL) zewnętrznej aplikacji klienckiej (External Client App) musi dokładnie odpowiadać redirect_uri w librechat.yaml, włącznie z protokołem, nazwą hosta, portem, nazwą serwera i ścieżką. |
Historia logowania Salesforce wskazuje Invalid Code Verifier | Stan PKCE nie pasuje do wywołania zwrotnego. Unikaj rozpoczynania wielu przepływów OAuth jednocześnie. W wdrożeniach z wieloma replikami upewnij się, że LibreChat korzysta ze współdzielonego magazynu przepływów OAuth, takiego jak Redis, aby żądania autoryzacji i wywołania zwrotnego mogły bezpiecznie trafiać do różnych replik. |
Salesforce zwraca JWT Token is required | Serwer jest wywoływany bez tokena dostępu Salesforce MCP. Ukończ proces OAuth z poziomu LibreChat, potwierdź ustawienie requiresOAuth: true i upewnij się, że użytkownik autoryzował zewnętrzną aplikację kliencką. |
Salesforce zwraca Invalid token | Potwierdź, że zewnętrzna aplikacja kliencka używa mcp_api, wydaje tokeny dostępu oparte na JWT i ma włączone PKCE. Potwierdź również, że adres URL MCP oraz punkty końcowe OAuth wskazują na ten sam typ organizacji (produkcyjna lub sandbox). |
Salesforce zwraca Server definition not found for: sobject-all | Serwer nie jest aktywowany, trwa jego propagacja lub adres URL używa błędnej ścieżki (produkcja vs sandbox). Włącz serwer w ustawieniach Salesforce (Salesforce Setup) i odczekaj do 2 minut. |
| Odświeżanie tokena kończy się błędem związanym z zakresem (scope) | Użyj mcp_api refresh_token jako skonfigurowanego zakresu. Nie zastępuj standardowego zakresu Salesforce api w przypadku Hosted MCP. |
| LibreChat pokazuje Salesforce, ale brak narzędzi | Połącz serwer z poziomu interfejsu LibreChat. Zdalne serwery z włączonym OAuth udostępniają narzędzia dopiero po uwierzytelnieniu użytkownika i zainicjowaniu serwera. |
| Żądania MCP są blokowane przez politykę domen LibreChat | Jeśli skonfigurowano mcpSettings.allowedDomains, dodaj api.salesforce.com oraz każdy host OAuth Salesforce używany w Twoim wdrożeniu. |
Uwagi dotyczące bezpieczeństwa
- Zacznij od
platform/sobject-reads, chyba że użytkownicy naprawdę potrzebują dostępu do zapisu lub usuwania. - Salesforce egzekwuje uprawnienia uwierzytelnionego użytkownika, ale asystent nadal może proponować szerokie działania. Należy dokładnie weryfikować operacje zapisu i usuwania.
- Użyj zestawów uprawnień Salesforce i zasad External Client App, aby ograniczyć dostęp do autoryzacji klienta MCP.
- Traktuj rekordy Salesforce jako niezaufane dane wejściowe. Rekordy mogą zawierać próby pośredniego wstrzykiwania promptów (indirect prompt injection), które mają na celu wpłynięcie na asystenta.
- W przypadku wdrożeń produkcyjnych z wieloma replikami API LibreChat, należy użyć współdzielonej pamięci masowej dla stanu przepływu OAuth, aby wywołania zwrotne PKCE były trwałe pomiędzy replikami.
Powiązane strony
Jaka jest ta instrukcja?