Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat
Serwery MCPMCP Salesforce

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.

SerwerPoziom dostępuProdukcyjny URLURL środowiska testowego (sandbox)
SObject ReadsOdczyt, zapytania, wyszukiwanie, relacjehttps://api.salesforce.com/platform/mcp/v1/platform/sobject-readshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads
SObject MutationsOdczyt, tworzenie, aktualizacja, brak usuwaniahttps://api.salesforce.com/platform/mcp/v1/platform/sobject-mutationshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations
SObject DeletesPrzepływy pracy skupione na usuwaniuhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-deleteshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes
SObject AllPełne tworzenie, odczyt, aktualizacja, usuwaniehttps://api.salesforce.com/platform/mcp/v1/platform/sobject-allhttps://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:3080 w przypadku lokalnego środowiska programistycznego lub https://chat.example.com w ś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.

  1. W Quick Find wyszukaj MCP Servers.
  2. Otwórz MCP Servers w sekcji API Catalog.
  3. Włącz serwer, którego chcesz użyć. W przypadku pierwszej konfiguracji włącz platform/sobject-reads.
  4. 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:

  1. W Quick Find wyszukaj External Client App Manager.
  2. Kliknij New External Client App.
  3. Wypełnij podstawowe informacje o aplikacji. Użyj jasnej nazwy, takiej jak LibreChat Salesforce MCP.
  4. Rozwiń API (Enable OAuth Settings) i włącz OAuth.
  5. Dodaj adres URL wywołania zwrotnego (callback URL) LibreChat.

Do lokalnego programowania:

http://localhost:3080/api/mcp/salesforce/oauth/callback

W środowisku produkcyjnym zastąp adres bazowy swoim publicznym adresem URL LibreChat:

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

Konfiguracja zakresów (scopes) OAuth i bezpieczeństwa

W ustawieniach OAuth zewnętrznej aplikacji klienckiej dodaj następujące zakresy (scopes):

mcp_api
refresh_token

Nie 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-key

Jeśli włączyłeś Require Secret for Web Server Flow, dodaj również:

SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secret

Dodawanie 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żeniePolecenie
Dockerdocker compose up -d
LokalneZatrzymaj 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 MCP

Połącz Salesforce w LibreChat

Otwórz LibreChat, a następnie otwórz MCP Settings lub rozwijane menu MCP Servers w polu wprowadzania czatu.

  1. Kliknij Connect dla serwera Salesforce.
  2. Dokończ proces OAuth Salesforce.
  3. Przejrzyj wymagane zakresy mcp_api oraz refresh_token.
  4. 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ś:

SerwerPrompt
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

SymptomCo sprawdzić
Salesforce zwraca redirect_uri_mismatchAdres 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 VerifierStan 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 requiredSerwer 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 tokenPotwierdź, ż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-allSerwer 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ędziPołą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 LibreChatJeś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.

Jaka jest ta instrukcja?