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.
| Serveur | Niveau d'accès | URL de production | URL de sandbox ou de test |
|---|---|---|---|
| SObject Reads | Lecture, requête, recherche, relations | https://api.salesforce.com/platform/mcp/v1/platform/sobject-reads | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-reads |
| SObject Mutations | Lecture, création, mise à jour, pas de suppression | https://api.salesforce.com/platform/mcp/v1/platform/sobject-mutations | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-mutations |
| SObject Deletes | Flux de travail axés sur la suppression | https://api.salesforce.com/platform/mcp/v1/platform/sobject-deletes | https://api.salesforce.com/platform/mcp/v1/sandbox/platform/sobject-deletes |
| SObject All | Création, lecture, mise à jour, suppression complète | https://api.salesforce.com/platform/mcp/v1/platform/sobject-all | https://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.yamlmonté ou chargé d'une autre manière. - L'URL de base publique que les utilisateurs utilisent pour ouvrir LibreChat, par exemple
http://localhost:3080pour le développement local ouhttps://chat.example.compour 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.
- Dans Quick Find, recherchez
MCP Servers. - Ouvrez MCP Servers sous API Catalog.
- Activez le serveur que vous souhaitez utiliser. Pour la première configuration, activez
platform/sobject-reads. - 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 :
- Dans Quick Find, recherchez
External Client App Manager. - Cliquez sur New External Client App.
- Remplissez les informations de base de l'application. Utilisez un nom clair, tel que
LibreChat Salesforce MCP. - Développez API (Enable OAuth Settings) et activez OAuth.
- Ajoutez l'URL de rappel LibreChat.
Pour le développement local :
Pour la production, remplacez l'URL de base par votre URL publique LibreChat :
Configurer les scopes OAuth et la sécurité
Dans les paramètres OAuth de l'application cliente externe, ajoutez ces scopes :
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 :
Si vous avez activé Require Secret for Web Server Flow, ajoutez également :
Ajouter Salesforce MCP à librechat.yaml
Cet exemple configure le serveur SObject en lecture seule pour une organisation de production ou une Developer Edition :
Pour un environnement sandbox ou une scratch org, utilisez l'URL MCP sandbox et les endpoints OAuth Salesforce sandbox :
Si votre application cliente externe nécessite un secret client, ajoutez ces champs à l'intérieur de oauth :
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 :
Pour un accès complet aux SObject dans une sandbox ou une scratch org :
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éploiement | Commande |
|---|---|
| Docker | docker compose up -d |
| Local | Arrê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 :
Connecter Salesforce dans LibreChat
Ouvrez LibreChat, puis ouvrez MCP Settings ou le menu déroulant MCP Servers dans la zone de saisie du chat.
- Cliquez sur Connect pour le serveur Salesforce.
- Terminez le flux OAuth de Salesforce.
- Examinez les portées
mcp_apietrefresh_tokendemandées. - 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é :
| Serveur | Invite |
|---|---|
| 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_mismatch | L'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 Verifier | L'é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 required | Le 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 token | Confirmez 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-all | Le 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 scope | Utilisez mcp_api refresh_token comme scope configuré. Ne remplacez pas le scope Salesforce api standard par Hosted MCP. |
| LibreChat affiche Salesforce mais aucun outil | Connectez 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 LibreChat | Si 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.
Pages associées
Que pensez-vous de ce guide ?