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

Salesforce MCP

Konfigurieren Sie gehostete Salesforce MCP-Server in LibreChat mit einer externen Client-App und benutzerbezogenem OAuth.

Salesforce Hosted MCP-Server ermöglichen es LibreChat-Benutzern, sich über per-user OAuth mit Salesforce zu verbinden. Jeder Tool-Aufruf wird mit den Berechtigungen des authentifizierten Salesforce-Benutzers ausgeführt, einschließlich Feldebene-Sicherheit, Objektberechtigungen und Freigaberegeln.

Eine externe Client-App verwenden

Salesforce Hosted MCP-Server erfordern eine External Client App. Classic Salesforce Connected Apps werden für die Hosted MCP-Authentifizierung nicht unterstützt.

Was Sie konfigurieren werden

Dieser Leitfaden beginnt mit dem schreibgeschützten SObject-Server, da dies die sicherste erste Verbindung ist. Sobald dies funktioniert, können Sie zu einem umfassenderen Salesforce-Server wechseln.

ServerZugriffsebeneProduktions-URLSandbox- oder Scratch-URL
SObject ReadsLesen, Abfragen, Suchen, Beziehungenhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-readshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads
SObject MutationsLesen, Erstellen, Aktualisieren, kein Löschenhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-mutationshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations
SObject DeletesLösch-fokussierte Workflowshttps://api.salesforce.com/platform/mcp/v1/platform/sobject-deleteshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes
SObject AllVollständiges Erstellen, Lesen, Aktualisieren, Löschenhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-allhttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all

OAuth-Callback-Pfad

Der MCP OAuth-Callback-Pfad von LibreChat lautet BASE_URL/api/mcp/SERVER_NAME/oauth/callback. SERVER_NAME ist der Schlüssel unter mcpServers in der librechat.yaml. Die folgenden Beispiele verwenden salesforce, daher lautet der lokale Callback http://localhost:3080/api/mcp/salesforce/oauth/callback.

Voraussetzungen

  • Eine Salesforce-Org, die Hosted MCP-Server und API-Zugriff unterstützt.
  • Systemadministrator-Berechtigungen oder gleichwertige Berechtigungen zum Erstellen von External Client Apps und zum Aktivieren von MCP-Servern.
  • Eine laufende LibreChat-Instanz, bei der librechat.yaml eingebunden oder anderweitig geladen ist.
  • Die öffentliche Basis-URL, die Benutzer verwenden, um LibreChat zu öffnen, zum Beispiel http://localhost:3080 für die lokale Entwicklung oder https://chat.example.com für die Produktion.

Wenn Sie noch keine Salesforce-Org haben, erstellen Sie eine kostenlose Developer Edition-Org unter developer.salesforce.com/signup, bestätigen Sie das Konto per E-Mail und melden Sie sich dann unter login.salesforce.com an. Wenn die Salesforce-Setup-Menüs in dieser Anleitung in der Org nicht sichtbar sind, verwenden Sie eine unterstützte Produktions-, Sandbox- oder Test-Org mit aktivierten Hosted MCP-Servern.

Einrichtung

Aktivieren des Salesforce MCP-Servers

Öffnen Sie in Salesforce Setup.

  1. Suchen Sie in Quick Find nach MCP Servers.
  2. Öffnen Sie MCP Servers unter API Catalog.
  3. Aktivieren Sie den Server, den Sie verwenden möchten. Aktivieren Sie für die Ersteinrichtung platform/sobject-reads.
  4. Warten Sie bis zu 2 Minuten, bis der Server aktiv ist.

Wenn Sie das Beispiel mit vollem Zugriff verwenden möchten, aktivieren Sie stattdessen platform/sobject-all.

Externe Client-App erstellen

In Salesforce Setup:

  1. Suchen Sie in Quick Find nach External Client App Manager.
  2. Klicken Sie auf New External Client App.
  3. Geben Sie die grundlegenden App-Informationen ein. Verwenden Sie einen eindeutigen Namen, wie z. B. LibreChat Salesforce MCP.
  4. Erweitern Sie API (Enable OAuth Settings) und aktivieren Sie OAuth.
  5. Fügen Sie die LibreChat Callback-URL hinzu.

Für die lokale Entwicklung:

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

Für die Produktion ersetzen Sie die Basis-URL durch Ihre öffentliche LibreChat-URL:

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

OAuth-Scopes und Sicherheit konfigurieren

Fügen Sie in den OAuth-Einstellungen der externen Client-App diese Scopes hinzu:

mcp_api
refresh_token

Verwenden Sie nicht den standardmäßigen Salesforce api scope für gehostete MCP-Server. Der MCP-Server erwartet den mcp_api scope.

In den Sicherheitseinstellungen der External Client App:

  • Wählen Sie Issue JSON Web Token (JWT)-based access tokens for named users.
  • Wählen Sie Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows aus.
  • Lassen Sie Require Secret for Web Server Flow für die grundlegende Einrichtung in dieser Anleitung deaktiviert.
  • Lassen Sie Require Secret for Refresh Token Flow für die grundlegende Einrichtung in dieser Anleitung deaktiviert.

Klicken Sie auf Create, öffnen Sie dann die App-Einstellungen und kopieren Sie den Consumer Key. Salesforce gibt an, dass es bis zu 30 Minuten dauern kann, bis eine neue External Client App verfügbar ist.

Optionales Client-Secret

LibreChat kann ein Client-Secret serverseitig speichern. Wenn Ihr Salesforce-Administrator Require Secret for Web Server Flow aktiviert, generieren Sie ebenfalls ein Client-Secret und fügen Sie die optionalen client_secret-Felder hinzu, die später in dieser Anleitung gezeigt werden.

Fügen Sie die Salesforce-Client-ID zur .env hinzu

Fügen Sie den Consumer-Key der External Client App zu Ihrer LibreChat .env Datei hinzu:

SALESFORCE_MCP_CLIENT_ID=your-salesforce-consumer-key

Wenn Sie Require Secret for Web Server Flow aktiviert haben, fügen Sie außerdem Folgendes hinzu:

SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secret

Salesforce MCP zu librechat.yaml hinzufügen

Dieses Beispiel konfiguriert den schreibgeschützten SObject-Server für eine Produktions- oder Developer Edition-Org:

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'

Verwenden Sie für eine Sandbox oder Scratch Org die Sandbox MCP URL und die Salesforce Sandbox OAuth endpoints:

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'

Wenn Ihre externe Client-App ein Client-Secret erfordert, fügen Sie diese Felder innerhalb von oauth hinzu:

oauth:
  client_secret: '${SALESFORCE_MCP_CLIENT_SECRET}'
  token_exchange_method: default_post
  token_endpoint_auth_methods_supported: ['client_secret_post']

Wenn LibreChat unter einer öffentlichen URL bereitgestellt wird, aktualisieren Sie redirect_uri so, dass sie exakt mit der in Salesforce registrierten Callback-URL übereinstimmt.

Strenge MCP-Domain-Allowlists

Wenn Ihre librechat.yaml auch mcpSettings.allowedDomains konfiguriert, fügen Sie api.salesforce.com hinzu. Wenn Sie Salesforce-Sandbox-OAuth-endpoints verwenden und Ihre Richtlinie auch für OAuth-Hosts gilt, erlauben Sie zusätzlich test.salesforce.com oder Ihren Sandbox-My-Domain-Host.

Bei Bedarf zum vollständigen Salesforce-Zugriff wechseln

Nachdem der schreibgeschützte Server funktioniert, können Sie zu einem anderen aktivierten Salesforce-Server wechseln, indem Sie die url ändern.

Für den vollständigen SObject-Zugriff in einer Produktions- oder Developer Edition-Org:

url: 'https://api.salesforce.com/platform/mcp/v1/platform/sobject-all'

Für vollständigen SObject-Zugriff in einer Sandbox oder Scratch Org:

url: 'https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all'

Stellen Sie Server, die Mutationen oder Löschvorgänge ausführen können, nur Benutzern zur Verfügung, die berechtigt sein sollen, Salesforce-Datensätze über einen Assistenten zu erstellen, zu aktualisieren oder zu löschen.

LibreChat neu starten

Starten Sie LibreChat neu, damit .env und librechat.yaml neu geladen werden.

BereitstellungBefehl
Dockerdocker compose up -d
LokalStoppen Sie den Server und starten Sie ihn dann erneut

Um zu bestätigen, dass der Server in Docker geladen wurde, überprüfen Sie die API-Logs:

docker logs LibreChat --tail 200 | grep MCP

Salesforce in LibreChat verbinden

Öffnen Sie LibreChat und dann MCP Settings oder das Dropdown-Menü MCP Servers in der Chateingabe.

  1. Klicken Sie auf Connect für den Salesforce-Server.
  2. Schließen Sie den Salesforce OAuth-Flow ab.
  3. Überprüfen Sie die angeforderten mcp_api- und refresh_token-Scopes.
  4. Kehren Sie zu LibreChat zurück, nachdem sich die OAuth-Erfolgsseite geschlossen hat.

Nachdem OAuth erfolgreich war und die MCP-Verbindung initialisiert wurde, stehen Salesforce-Tools im Chat und im Agent Builder zur Verfügung.

Testen

Probiere Prompts aus, die zu dem von dir aktivierten Server passen:

ServerPrompt
Any SObject server"Wer bin ich in Salesforce?"
SObject Reads"Zeige mir meine fünf zuletzt angesehenen Accounts."
SObject Reads"Finde offene Fälle mit Bezug zu Acme Corp und fasse sie zusammen."
SObject Mutations"Erstelle eine Folgeaufgabe für diesen Account. Frage mich, bevor du etwas speicherst."
SObject All"Aktualisiere diese Opportunity-Phase auf 'Closed Won', nachdem der genaue Datensatz bestätigt wurde."

Für eine grundlegende Überprüfung führen Sie einen Test desselben Salesforce-Servers mit Postman oder dem MCP Inspector durch. Wenn dies funktioniert, LibreChat jedoch nicht, vergleichen Sie die LibreChat Callback-URL, die OAuth-Scopes und die Server-URL mit dem funktionierenden Client.

Fehlerbehebung

SymptomWas zu prüfen ist
Salesforce meldet redirect_uri_mismatchDie Callback-URL der External Client App muss exakt mit der redirect_uri in librechat.yaml übereinstimmen, einschließlich Protokoll, Hostname, Port, Servername und Pfad.
Salesforce Login-Verlauf meldet Invalid Code VerifierDer PKCE-Status stimmte nicht mit dem Callback überein. Vermeiden Sie es, mehrere OAuth-Flows gleichzeitig zu starten. Stellen Sie bei Bereitstellungen mit mehreren Replikaten sicher, dass LibreChat einen gemeinsamen OAuth-Flow-Speicher wie Redis verwendet, damit Autorisierungs- und Callback-Anfragen sicher auf verschiedenen Replikaten landen können.
Salesforce meldet JWT Token is requiredDer Server wird ohne ein Salesforce MCP-Zugriffstoken aufgerufen. Schließen Sie OAuth über LibreChat ab, bestätigen Sie requiresOAuth: true und stellen Sie sicher, dass der Benutzer die External Client App autorisiert hat.
Salesforce meldet Invalid tokenBestätigen Sie, dass die External Client App mcp_api verwendet, JWT-basierte Zugriffstoken ausstellt und PKCE aktiviert hat. Stellen Sie außerdem sicher, dass die MCP-URL und die OAuth-endpoints auf denselben Organisationstyp verweisen (Produktion vs. Sandbox).
Salesforce meldet Server definition not found for: sobject-allDer Server ist nicht aktiviert, befindet sich noch in der Bereitstellung oder die URL verwendet den falschen Pfad für Produktion bzw. Sandbox. Aktivieren Sie den Server in Salesforce Setup und warten Sie bis zu 2 Minuten.
Token-Aktualisierung schlägt mit einem bereichsbezogenen Fehler fehlVerwenden Sie mcp_api refresh_token als konfigurierten Scope. Ersetzen Sie für Hosted MCP nicht den regulären Salesforce api-Scope.
LibreChat zeigt Salesforce an, aber keine ToolsVerbinden Sie den Server über die LibreChat-Benutzeroberfläche. OAuth-fähige Remote-Server stellen Tools erst bereit, nachdem der Benutzer sich authentifiziert hat und der Server initialisiert wurde.
MCP-Anfragen werden durch die LibreChat-Domain-Richtlinie blockiertWenn mcpSettings.allowedDomains konfiguriert ist, erlauben Sie api.salesforce.com sowie jeden Salesforce OAuth-Host, den Ihre Bereitstellung verwendet.

Sicherheitshinweise

  • Beginnen Sie mit platform/sobject-reads, es sei denn, Benutzer benötigen tatsächlich Schreib- oder Löschzugriff.
  • Salesforce erzwingt die Berechtigungen des authentifizierten Benutzers, aber der Assistent kann dennoch weitreichende Aktionen vorschlagen. Überprüfen Sie Schreib- und Löschvorgänge sorgfältig.
  • Verwenden Sie Salesforce-Berechtigungssätze und Richtlinien für externe Client-Apps, um einzuschränken, wer den MCP-Client autorisieren darf.
  • Behandle Salesforce-Datensätze als nicht vertrauenswürdige Eingabe. Datensätze können indirekte Prompt-Injection-Versuche enthalten, die versuchen, den Assistenten zu beeinflussen.
  • Für Produktionsbereitstellungen mit mehreren LibreChat API-Replikaten verwenden Sie einen gemeinsamen Speicher für den OAuth-Flow-Status, damit PKCE-Callbacks über Replikate hinweg persistent bleiben.

Wie finden Sie diese Anleitung?