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

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 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 possédez pas encore d'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 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'ID 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 Salesforce.
  3. Vérifiez les scopes mcp_api et refresh_token demandés.
  4. Retournez sur LibreChat une fois la page de succès OAuth fermée.

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 le plus 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, y compris 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 à la fois. Dans les déploiements à plusieurs répliques, assurez-vous que LibreChat utilise un stockage de flux OAuth partagé, tel que Redis, afin que les requêtes d'autorisation et de rappel puissent aboutir sur différentes répliques 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 toujours en cours de propagation, ou l'URL utilise le mauvais chemin (production vs sandbox). Activez le serveur dans la configuration Salesforce et attendez jusqu'à 2 minutes.
Le rafraîchissement du jeton échoue avec une erreur liée à la portée (scope)Utilisez mcp_api refresh_token comme portée configurée. Ne remplacez pas la portée api standard de Salesforce par Hosted MCP.
LibreChat affiche Salesforce mais aucun outilConnectez le serveur depuis l'interface utilisateur de LibreChat. Les serveurs distants activés pour 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 les personnes autorisées à authentifier le client MCP.
  • Traitez les enregistrements Salesforce comme des entrées non fiables. Les enregistrements peuvent contenir des tentatives d'injection indirecte de prompt 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 ?