Connecteur TypeScript MCP Salesforce
Une implémentation TypeScript d'un serveur Model Context Protocol (MCP) pour l'intégration Salesforce, permettant aux LLM d'interagir avec les données Salesforce par le biais de requêtes SOQL, de recherches SOSL et d'opérations CRUD.
Caractéristiques
- authentification simplifiée par mot de passe: Flux d'informations d'identification par mot de passe du propriétaire de la ressource OAuth 2.0 sécurisé
- 📊SOQL & SOSL: Exécution de requêtes et de recherches dans Salesforce
- 🔍 Accès aux métadonnées: Récupérer les champs, les étiquettes et les types d'objets
- ✏️ Opérations CRUD: Créer, lire, mettre à jour et supprimer des enregistrements
- 🛠️ Tooling API: Exécuter les requêtes de l'API d'outillage
- apex REST: Exécuter les requêtes Apex REST
- 🌐 REST API: Effectuer des appels API REST directs vers Salesforce
- 🐳 Docker Ready: Pas de valeurs codées en dur, entièrement configurables via des variables d'environnement
- 🔄 Rafraîchissement des jetons: Rafraîchissement automatique des jetons pour les sessions de longue durée
Outils disponibles
authenticate_password
- Authentification par nom d'utilisateur/mot de passe avec OAuthrun_soql_query
- Exécuter des requêtes SOQLrun_sosl_search
- Exécute des recherches SOSLget_object_fields
- Obtenir des métadonnées pour les objets Salesforceget_record
- Récupération d'enregistrements spécifiques par IDcreate_record
- Créer de nouveaux enregistrementsupdate_record
- Mise à jour des enregistrements existantsdelete_record
- Supprimer des enregistrementstooling_execute
- Exécuter les requêtes de l'API Toolingapex_execute
- Exécuter les requêtes REST d'Apexrestful
- Effectuer des appels directs à l'API REST
Démarrage rapide avec Docker
Conditions préalables
Créez une application connectée dans Salesforce :
- Allez dans Configuration → Applications → Gestionnaire d'applications → Nouvelle application connectée
- Remplissez les informations de base (nom de l'application, nom de l'API, adresse électronique du contact)
- Activer les paramètres OAuth
- Définir l'URL de rappel
: http://localhost:8080/callback
(obligatoire mais non utilisé) - Sélectionnez les champs d'application OAuth
- Accéder à vos informations de base (identifiant, profil, email, adresse, téléphone)
- Effectuer des requêtes en votre nom à tout moment (refresh_token, offline_access)
- Accéder à vos données et les gérer (api)
- Enregistrez et notez la clé du consommateur et le secret du consommateur
Obtenez votre jeton de sécurité :
- Allez dans Configuration → Mes informations personnelles → Réinitialiser le jeton de sécurité
- Vérifiez votre courrier électronique pour obtenir le nouveau jeton de sécurité
Utiliser l'image Docker
Tirez et exécutez la dernière image Docker :
# Tirez l'image docker pull steffensbola/salesforce-mcp-ts:latest # Exécutez avec vos informations d'identification docker run -p 3000 :3000 \N -e SALESFORCE_CLIENT_ID=votre_clé_consommateur \N -e SALESFORCE_CLIENT_SECRET=votre_secret_consommateur \N -e SALESFORCE_USERNAME=your_username@domain.com \N -e SALESFORCE_PASSWORD=votre_mot_de_passe \N -e SALESFORCE_SECURITY_TOKEN=votre_token_de_sécurité \N -e SALESFORCE_SANDBOX=true \N steffensbola/salesforce-mcp-ts:latest
Configuration MCP
VS Code utilisant une image Docker
Ajoutez à votre .vscode/mcp.json
:
{ "servers" : { "salesforce" : { "command" : "docker", "args" : ["run", "--rm", "-i", "-e", "SALESFORCE_CLIENT_ID=votre_clé_consommateur", "-e", "SALESFORCE_CLIENT_SECRET=votre_secret_consommateur", "-e", "SALESFORCE_USERNAME=your_username@domain.com",
"-e", "SALESFORCE_PASSWORD=votre_mot_de_passe", "-e", "SALESFORCE_SECURITY_TOKEN=votre_token", "-e", "SALESFORCE_SANDBOX=true", "steffensbola/salesforce-mcp-ts :latest" ] } }
Vous pouvez également utiliser les volumes pour monter un fichier de configuration au lieu de passer des variables d'environnement :
{ "servers" : { "salesforce" : { "command" : "docker", "args" : [ "run", "--rm", "-i", "-v", "${workspaceFolder}/.env:/app/.env", "steffensbola/salesforce-mcp-ts:latest" ] } }
Claude Desktop à l'aide d'une image Docker
Ajoutez à votre claude_desktop_config.json
:
{ "mcpServers" : { "salesforce" : { "command" : "docker", "args" : ["run", "--rm", "-i", "-e", "SALESFORCE_CLIENT_ID=votre_clé_consommateur", "-e", "SALESFORCE_CLIENT_SECRET=votre_secret_consommateur", "-e", "SALESFORCE_USERNAME=your_username@domain.com",
"-e", "SALESFORCE_PASSWORD=votre_mot_de_passe", "-e", "SALESFORCE_SECURITY_TOKEN=votre_token", "-e", "SALESFORCE_SANDBOX=true", "steffensbola/salesforce-mcp-ts :latest" ] } }
Variables d'environnement
Le serveur nécessite les variables d'environnement suivantes :
Requis (authentification OAuth)
SALESFORCE_CLIENT_ID
- Clé de consommateur de votre application connectéeSALESFORCE_CLIENT_SECRET
- Secret du consommateur de votre application connectéeSALESFORCE_USERNAME
- Votre nom d'utilisateur SalesforceSALESFORCE_PASSWORD
- Votre mot de passe SalesforceSALESFORCE_SECURITY_TOKEN
- Votre jeton de sécurité Salesforce
Facultatif
SALESFORCE_SANDBOX
- Définir"true"
pour le bac à sable,"false"
pour la production (par défaut :"false"
)
Alternative (authentification directe par jeton)
Au lieu du nom d'utilisateur/mot de passe, vous pouvez utiliser :
SALESFORCE_ACCESS_TOKEN
- Jeton d'accès directSALESFORCE_INSTANCE_URL
- URL de l'instance Salesforce (par exemple,https://your-instance.my.salesforce.com)
Compatibilité ascendante
Le serveur prend également en charge d'autres noms de variables :
SF_CONSUMER_KEY
/SF_CONSUMER_SECRET
SF_USERNAME
/SF_PASSWORD
/SF_SECURITY_TOKEN
Utilisation de Docker Compose
- Créez un fichier
.env
avec vos variables d'environnement :
SALESFORCE_CLIENT_ID=votre_clé_consommateur SALESFORCE_CLIENT_SECRET=votre_secret_consommateur SALESFORCE_USERNAME=your_username@domain.com SALESFORCE_PASSWORD=votre_mot_de_passe SALESFORCE_SECURITY_TOKEN=votre_token SALESFORCE_SANDBOX=true DOCKER_HUB_USERNAME=steffensbola
- Exécutez en utilisant Docker Compose :
docker-compose up -d
Exemples d'utilisation de Docker Compose
Utiliser les outils
Une fois connecté, vous pouvez utiliser les outils via votre client MCP :
Authentification :
Veuillez vous authentifier auprès de Salesforce à l'aide de mes informations d'identification
Interroger les données :
Exécutez cette requête SOQL : SELECT Id, Name, Industry FROM Account WHERE Industry = 'Technology' LIMIT 10
Recherche :
Recherche de contacts nommés "John" à l'aide de SOSL
Obtenir des métadonnées :
Obtenir tous les champs de l'objet Contact
Créer un enregistrement :
Créer un nouveau compte avec le nom "Test Company" et le secteur "Technology"
Dépannage
Problèmes courants
Échec de l'authentification
- Vérifier que les informations d'identification sont correctes
- Vérifier que les champs d'application OAuth de l'application connectée incluent "Accéder et gérer vos données (api)"
- Vérifiez que le jeton de sécurité est à jour (réinitialisez-le si nécessaire)
- Vérifier que la configuration du bac à sable correspond à votre type d'organisation
Le conteneur ne démarre pas
- S'assurer que l'ID_CLIENT et le SECRET_CLIENT sont tous deux fournis
- Vérifier que toutes les variables d'environnement requises sont définies
- Vérifier que Docker a accès à l'image
Erreurs de réseau
- Vérifier la connexion Internet
- Vérifier l'état du service Salesforce
- Vérifier que les paramètres du pare-feu autorisent les connexions HTTPS sortantes
Mode débogage
Pour une journalisation verbeuse, ajoutez la variable d'environnement debug :
docker run -e DEBUG=true \N -e SALESFORCE_CLIENT_ID=... \N- # ... autres variables steffensbola/salesforce-mcp-ts:latest
Contribuer
Voir CONTRIBUTING.md pour plus d'informations :
- L'architecture du projet et la configuration du développement
- Exécution à partir du code source
- Directives de contribution et processus de demande d'extraction
Licence
Licence MIT - voir le fichier LICENSE pour plus de détails.