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 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 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.
- 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 :
http://localhost:3080/api/mcp/salesforce/oauth/callbackPour la production, remplacez l'URL de base par votre URL publique LibreChat :
https://chat.example.com/api/mcp/salesforce/oauth/callbackConfigurer les scopes OAuth et la sécurité
Dans les paramètres OAuth de l'application cliente externe, ajoutez ces scopes :
mcp_api
refresh_tokenN'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-keySi vous avez activé Require Secret for Web Server Flow, ajoutez également :
SALESFORCE_MCP_CLIENT_SECRET=your-salesforce-client-secretAjouter 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é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 :
docker logs LibreChat --tail 200 | grep MCPConnecter 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 Salesforce.
- Vérifiez les scopes
mcp_apietrefresh_tokendemandés. - 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é :
| Serveur | Invite |
|---|---|
| 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_mismatch | L'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 Verifier | L'é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 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 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 outil | Connectez 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 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 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.
Pages associées
Que pensez-vous de ce guide ?