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

MCP Salesforce

Configurer les serveurs MCP hébergés par Salesforce dans LibreChat avec une application client externe et OAuth par utilisateur.

Les serveurs MCP hébergés par Salesforce permettent aux utilisateurs de LibreChat de se connecter à Salesforce via OAuth par utilisateur. Chaque appel d'outil s'exécute avec les autorisations de l'utilisateur Salesforce authentifié, y compris la sécurité au niveau du champ, les autorisations d'objet et les règles de partage.

Utiliser une application cliente externe

Les serveurs MCP hébergés par Salesforce nécessitent une External Client App. Les Classic Salesforce Connected Apps ne sont pas prises en charge pour l'authentification MCP hébergée.

Ce que vous allez configurer

Ce guide commence par le serveur SObject en lecture seule, car il s'agit de la première connexion la plus sûre. Une fois que cela fonctionne, vous pouvez passer à un serveur Salesforce plus large.

ServeurNiveau d'accèsURL de productionURL de sandbox ou de test
SObject ReadsLecture, requête, recherche, relationshttps://api.salesforce.com/platform/mcp/v1/platform/sobject-readshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads
SObject MutationsLecture, création, mise à jour, pas de suppressionhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-mutationshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations
SObject DeletesFlux de travail axés sur la suppressionhttps://api.salesforce.com/platform/mcp/v1/platform/sobject-deleteshttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes
SObject AllCréation, lecture, mise à jour, suppression complètehttps://api.salesforce.com/platform/mcp/v1/platform/sobject-allhttps://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-all

Chemin de rappel OAuth

Le chemin de rappel OAuth MCP de LibreChat est BASE_URL/api/mcp/SERVER_NAME/oauth/callback. SERVER_NAME est la clé sous mcpServers dans librechat.yaml. Les exemples ci-dessous utilisent salesforce, donc le rappel local est http://localhost:3080/api/mcp/salesforce/oauth/callback.

Prérequis

  • Une organisation Salesforce qui prend en charge les serveurs MCP hébergés et l'accès à l'API.
  • Autorisations d'administrateur système, ou autorisations équivalentes pour créer des External Client Apps et activer des serveurs MCP.
  • Une instance LibreChat en cours d'exécution avec librechat.yaml monté ou chargé d'une autre manière.
  • L'URL de base publique que les utilisateurs utilisent pour ouvrir LibreChat, par exemple http://localhost:3080 pour le développement local ou https://chat.example.com pour la production.

Si vous ne disposez pas encore d'une organisation Salesforce, créez une organisation Developer Edition gratuite sur developer.salesforce.com/signup, vérifiez le compte par e-mail, puis connectez-vous sur login.salesforce.com. Si les menus de configuration Salesforce (Setup) mentionnés dans ce guide ne sont pas visibles dans l'organisation, utilisez une organisation de production, sandbox ou d'essai prise en charge avec les serveurs MCP hébergés activés.

Configuration

Activer le serveur MCP Salesforce

Dans Salesforce, ouvrez Setup.

  1. Dans Quick Find, recherchez MCP Servers.
  2. Ouvrez MCP Servers sous API Catalog.
  3. Activez le serveur que vous souhaitez utiliser. Pour la première configuration, activez platform/sobject-reads.
  4. Attendez jusqu'à 2 minutes que le serveur devienne actif.

Si vous prévoyez d'utiliser l'exemple d'accès complet, activez plutôt platform/sobject-all.

Créer une application cliente externe

Dans la configuration de Salesforce :

  1. Dans Quick Find, recherchez External Client App Manager.
  2. Cliquez sur New External Client App.
  3. Remplissez les informations de base de l'application. Utilisez un nom clair, tel que LibreChat Salesforce MCP.
  4. Développez API (Enable OAuth Settings) et activez OAuth.
  5. Ajoutez l'URL de rappel LibreChat.

Pour le développement local :

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

Pour la production, remplacez l'URL de base par votre URL publique LibreChat :

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

Configurer les scopes OAuth et la sécurité

Dans les paramètres OAuth de l'application cliente externe, ajoutez ces scopes :

mcp_api
refresh_token

N'utilisez pas la portée api standard de Salesforce pour les serveurs MCP hébergés. Le serveur MCP attend la portée mcp_api.

Dans les paramètres de sécurité de l'External Client App :

  • Sélectionnez Émettre des jetons d'accès basés sur des JSON Web Tokens (JWT) pour les utilisateurs nommés.
  • Sélectionnez Require Proof Key for Code Exchange (PKCE) extension for Supported Authorization Flows.
  • Laissez Require Secret for Web Server Flow désactivé pour la configuration de base dans ce guide.
  • Laissez Require Secret for Refresh Token Flow désactivé pour la configuration de base dans ce guide.

Cliquez sur Create, puis ouvrez les paramètres de l'application et copiez la Consumer Key. Salesforce indique qu'une nouvelle External Client App peut prendre jusqu'à 30 minutes avant d'être disponible.

Secret client optionnel

LibreChat peut stocker un client secret côté serveur. Si votre administrateur Salesforce active Require Secret for Web Server Flow, générez également un client secret et incluez les champs optionnels client_secret indiqués plus loin dans ce guide.

Ajouter l'identifiant client Salesforce à .env

Ajoutez la clé consommateur de l'application cliente externe à votre fichier .env de LibreChat :

SALESFORCE_MCP_CLIENT_ID=your-salesforce-consumer-key

Si vous avez activé Require Secret for Web Server Flow, ajoutez également :

SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secret

Ajouter Salesforce MCP à librechat.yaml

Cet exemple configure le serveur SObject en lecture seule pour une organisation de production ou une 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'

Pour un environnement sandbox ou une scratch org, utilisez l'URL MCP sandbox et les endpoints OAuth Salesforce sandbox :

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'

Si votre application cliente externe nécessite un secret client, ajoutez ces champs à l'intérieur de oauth :

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

Si LibreChat est déployé sur une URL publique, mettez à jour redirect_uri pour qu'elle corresponde exactement à l'URL de rappel enregistrée dans Salesforce.

Listes d'autorisation strictes de domaines MCP

Si votre librechat.yaml configure également mcpSettings.allowedDomains, ajoutez api.salesforce.com. Si vous utilisez des endpoints OAuth de sandbox Salesforce et que votre politique s'applique également aux hôtes OAuth, autorisez également test.salesforce.com ou l'hôte My Domain de votre sandbox.

Passer à un accès complet à Salesforce, si nécessaire

Une fois que le serveur en lecture seule fonctionne, vous pouvez passer à un autre serveur Salesforce activé en modifiant l'url.

Pour un accès complet aux SObject dans une organisation de production ou Developer Edition :

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

Pour un accès complet aux SObject dans une sandbox ou une scratch org :

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

N'exposez les serveurs capables d'effectuer des mutations ou des suppressions qu'aux utilisateurs autorisés à créer, mettre à jour ou supprimer des enregistrements Salesforce via un assistant.

Redémarrer LibreChat

Redémarrez LibreChat pour qu'il recharge .env et librechat.yaml.

DéploiementCommande
Dockerdocker compose up -d
LocalArrêtez le serveur, puis redémarrez-le

Pour confirmer que le serveur a bien été chargé dans Docker, vérifiez les logs de l'API :

docker logs LibreChat --tail 200 | grep MCP

Connecter Salesforce dans LibreChat

Ouvrez LibreChat, puis ouvrez MCP Settings ou le menu déroulant MCP Servers dans la zone de saisie du chat.

  1. Cliquez sur Connect pour le serveur Salesforce.
  2. Terminez le flux OAuth de Salesforce.
  3. Examinez les portées mcp_api et refresh_token demandées.
  4. Retournez sur LibreChat une fois que la page de succès OAuth se ferme.

Une fois l'authentification OAuth réussie et la connexion MCP initialisée, les outils Salesforce deviennent disponibles dans le chat et dans l'Agent Builder.

Test

Essayez des prompts qui correspondent au serveur que vous avez activé :

ServeurInvite
Serveur SObject quelconque"Qui suis-je dans Salesforce ?"
Lectures SObject"Montre-moi mes cinq comptes consultés récemment."
Lectures SObject"Trouve les dossiers ouverts liés à Acme Corp et résume-les."
Mutations SObject"Crée une tâche de suivi pour ce compte. Demande-moi avant d'enregistrer quoi que ce soit."
SObject Tous"Mets à jour cette étape d'opportunité à Closed Won après avoir confirmé l'enregistrement exact."

Pour une vérification de base plus approfondie, testez le même serveur Salesforce avec Postman ou MCP Inspector. Si cela fonctionne mais que LibreChat ne fonctionne pas, comparez l'URL de rappel, les portées OAuth et l'URL du serveur de LibreChat avec ceux du client fonctionnel.

Dépannage

SymptômeÀ vérifier
Salesforce indique redirect_uri_mismatchL'URL de rappel de l'External Client App doit correspondre exactement au redirect_uri dans librechat.yaml, incluant le protocole, le nom d'hôte, le port, le nom du serveur et le chemin.
L'historique de connexion Salesforce indique Invalid Code VerifierL'état PKCE ne correspondait pas au rappel. Évitez de lancer plusieurs flux OAuth simultanément. Dans les déploiements à plusieurs réplicas, assurez-vous que LibreChat utilise un stockage partagé pour les flux OAuth, tel que Redis, afin que les requêtes d'autorisation et de rappel puissent aboutir sur des réplicas différents en toute sécurité.
Salesforce renvoie JWT Token is requiredLe serveur est appelé sans jeton d'accès MCP Salesforce. Terminez l'OAuth depuis LibreChat, confirmez requiresOAuth: true et confirmez que l'utilisateur a autorisé l'External Client App.
Salesforce renvoie Invalid tokenConfirmez que l'External Client App utilise mcp_api, émet des jetons d'accès basés sur JWT et a le PKCE activé. Confirmez également que l'URL MCP et les endpoints OAuth pointent vers le même type d'organisation, production ou sandbox.
Salesforce renvoie Server definition not found for: sobject-allLe serveur n'est pas activé, est en cours de propagation, ou l'URL utilise le mauvais chemin (production vs sandbox). Activez le serveur dans la configuration Salesforce (Setup) et attendez jusqu'à 2 minutes.
Le rafraîchissement du jeton échoue avec une erreur liée au scopeUtilisez mcp_api refresh_token comme scope configuré. Ne remplacez pas le scope Salesforce api standard par Hosted MCP.
LibreChat affiche Salesforce mais aucun outilConnectez le serveur depuis l'interface utilisateur de LibreChat. Les serveurs distants activés par OAuth exposent les outils une fois que l'utilisateur s'est authentifié et que le serveur a été initialisé.
Les requêtes MCP sont bloquées par la politique de domaine de LibreChatSi mcpSettings.allowedDomains est configuré, autorisez api.salesforce.com et tout hôte OAuth Salesforce utilisé par votre déploiement.

Notes sur la sécurité

  • Commencez par platform/sobject-reads à moins que les utilisateurs n'aient réellement besoin d'un accès en écriture ou en suppression.
  • Salesforce applique les autorisations de l'utilisateur authentifié, mais l'assistant peut toujours proposer des actions étendues. Examinez attentivement les opérations d'écriture et de suppression.
  • Utilisez les ensembles d'autorisations Salesforce et les politiques d'application client externe pour restreindre qui peut autoriser le client MCP.
  • Traitez les enregistrements Salesforce comme des entrées non fiables. Les enregistrements peuvent contenir des tentatives d'injection de prompt indirectes visant à influencer l'assistant.
  • Pour les déploiements en production avec plusieurs répliques de l'API LibreChat, utilisez un stockage partagé pour l'état du flux OAuth afin que les rappels PKCE soient persistants entre les répliques.

Que pensez-vous de ce guide ?