Salesforce TypeScript Connector
Interactúa con datos de Salesforce usando consultas SOQL, búsquedas SOSL y operaciones CRUD a través de un servidor MCP TypeScript.
Documentación
Conector MCP de Salesforce TypeScript
Una implementación en TypeScript de un servidor de Model Context Protocol (MCP) para la integración con Salesforce, que permite a los LLMs interactuar con los datos de Salesforce mediante consultas SOQL, búsquedas SOSL y operaciones CRUD.
Características
- 🔐 Autenticación simplificada por contraseña: Flujo seguro de credenciales de contraseña de propietario de recurso OAuth 2.0
- 📊 SOQL y SOSL: Ejecutar consultas y búsquedas contra Salesforce
- 🔍 Acceso a metadatos: Recuperar campos de objetos, etiquetas y tipos
- ✏️ Operaciones CRUD: Crear, leer, actualizar y eliminar registros
- 🛠️ API de herramientas: Ejecutar solicitudes de la API de herramientas
- ⚡ Apex REST: Ejecutar solicitudes Apex REST
- 🌐 API REST: Realizar llamadas directas a la API REST de Salesforce
- 🐳 Listo para Docker: Sin valores codificados, totalmente configurable mediante variables de entorno
- 🔄 Refresco de token: Refresco automático de token para sesiones de larga duración
Herramientas disponibles
authenticate_password- Autenticar usando nombre de usuario/contraseña con OAuthrun_soql_query- Ejecutar consultas SOQLrun_sosl_search- Ejecutar búsquedas SOSLget_object_fields- Obtener metadatos de objetos de Salesforceget_record- Recuperar registros específicos por IDcreate_record- Crear nuevos registrosupdate_record- Actualizar registros existentesdelete_record- Eliminar registrostooling_execute- Ejecutar solicitudes de la API de herramientasapex_execute- Ejecutar solicitudes Apex RESTrestful- Realizar llamadas directas a la API REST
Inicio rápido con Docker
Requisitos previos
-
Crear una aplicación conectada en Salesforce:
- Ir a Configuración → Aplicaciones → Administrador de aplicaciones → Nueva aplicación conectada
- Completar la información básica (Nombre de la aplicación, Nombre de la API, Correo de contacto)
- Habilitar la configuración de OAuth
- Establecer la URL de devolución de llamada:
http://localhost:8080/callback(requerida pero no utilizada) - Seleccionar los alcances de OAuth:
- Acceder a tu información básica (id, perfil, correo, dirección, teléfono)
- Realizar solicitudes en tu nombre en cualquier momento (refresh_token, offline_access)
- Acceder y gestionar tus datos (api)
- Guardar y anotar la Clave de consumidor y el Secreto de consumidor
-
Obtener tu token de seguridad:
- Ir a Configuración → Mi información personal → Restablecer token de seguridad
- Revisar tu correo para obtener el nuevo token de seguridad
Usando la imagen de Docker
Extraer y ejecutar la imagen más reciente de Docker:
# Pull the image
docker pull steffensbola/salesforce-mcp-ts:latest
# Run with your credentials
docker run -p 3000:3000 \
-e SALESFORCE_CLIENT_ID=your_consumer_key \
-e SALESFORCE_CLIENT_SECRET=your_consumer_secret \
-e SALESFORCE_USERNAME=your_username@domain.com \
-e SALESFORCE_PASSWORD=your_password \
-e SALESFORCE_SECURITY_TOKEN=your_security_token \
-e SALESFORCE_SANDBOX=true \
steffensbola/salesforce-mcp-ts:latest
Configuración de MCP
VS Code usando imagen de Docker
Agregar a tu .vscode/mcp.json:
{
"servers": {
"salesforce": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "SALESFORCE_CLIENT_ID=your_consumer_key",
"-e", "SALESFORCE_CLIENT_SECRET=your_consumer_secret",
"-e", "SALESFORCE_USERNAME=your_username@domain.com",
"-e", "SALESFORCE_PASSWORD=your_password",
"-e", "SALESFORCE_SECURITY_TOKEN=your_token",
"-e", "SALESFORCE_SANDBOX=true",
"steffensbola/salesforce-mcp-ts:latest"
]
}
}
}
También puedes usar volúmenes para montar un archivo de configuración en lugar de pasar variables de entorno:
{
"servers": {
"salesforce": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v", "${workspaceFolder}/.env:/app/.env",
"steffensbola/salesforce-mcp-ts:latest"
]
}
}
}
Claude Desktop usando imagen de Docker
Agregar a tu claude_desktop_config.json:
{
"mcpServers": {
"salesforce": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "SALESFORCE_CLIENT_ID=your_consumer_key",
"-e", "SALESFORCE_CLIENT_SECRET=your_consumer_secret",
"-e", "SALESFORCE_USERNAME=your_username@domain.com",
"-e", "SALESFORCE_PASSWORD=your_password",
"-e", "SALESFORCE_SECURITY_TOKEN=your_token",
"-e", "SALESFORCE_SANDBOX=true",
"steffensbola/salesforce-mcp-ts:latest"
]
}
}
}
Variables de entorno
El servidor requiere las siguientes variables de entorno:
Requeridas (Autenticación OAuth)
SALESFORCE_CLIENT_ID- Clave de consumidor de tu aplicación conectadaSALESFORCE_CLIENT_SECRET- Secreto de consumidor de tu aplicación conectadaSALESFORCE_USERNAME- Tu nombre de usuario de SalesforceSALESFORCE_PASSWORD- Tu contraseña de SalesforceSALESFORCE_SECURITY_TOKEN- Tu token de seguridad de Salesforce
Opcionales
SALESFORCE_SANDBOX- Establecer a"true"para sandbox,"false"para producción (predeterminado:"false")
Alternativa (Autenticación directa con token)
En lugar de nombre de usuario/contraseña, puedes usar:
SALESFORCE_ACCESS_TOKEN- Token de acceso directoSALESFORCE_INSTANCE_URL- URL de la instancia de Salesforce (por ejemplo,https://your-instance.my.salesforce.com)
Compatibilidad hacia atrás
El servidor también admite nombres de variables alternativos:
SF_CONSUMER_KEY/SF_CONSUMER_SECRETSF_USERNAME/SF_PASSWORD/SF_SECURITY_TOKEN
Usando Docker Compose
- Crear un archivo
.envcon tus variables de entorno:
SALESFORCE_CLIENT_ID=your_consumer_key
SALESFORCE_CLIENT_SECRET=your_consumer_secret
SALESFORCE_USERNAME=your_username@domain.com
SALESFORCE_PASSWORD=your_password
SALESFORCE_SECURITY_TOKEN=your_token
SALESFORCE_SANDBOX=true
DOCKER_HUB_USERNAME=steffensbola
- Ejecutar usando Docker Compose:
docker-compose up -d
Ejemplos
Usando las herramientas
Una vez conectado, puedes usar las herramientas a través de tu cliente MCP:
Autenticación:
Please authenticate with Salesforce using my credentials
Consultar datos:
Run this SOQL query: SELECT Id, Name, Industry FROM Account WHERE Industry = 'Technology' LIMIT 10
Buscar:
Search for contacts named "John" using SOSL
Obtener metadatos:
Get all the fields for the Contact object
Crear registro:
Create a new Account with Name "Test Company" and Industry "Technology"
Solución de problemas
Problemas comunes
-
Error de autenticación
- Verificar que las credenciales sean correctas
- Comprobar que los alcances de OAuth de la aplicación conectada incluyan "Acceder y gestionar tus datos (api)"
- Asegurarse de que el token de seguridad esté actualizado (restablecer si es necesario)
- Verificar que la configuración de sandbox coincida con el tipo de tu organización
-
El contenedor no se inicia
- Asegurarse de que tanto CLIENT_ID como CLIENT_SECRET estén proporcionados
- Comprobar que todas las variables de entorno requeridas estén configuradas
- Verificar que Docker tenga acceso para extraer la imagen
-
Errores de red
- Comprobar la conexión a internet
- Verificar el estado del servicio de Salesforce
- Comprobar que la configuración del firewall permita conexiones HTTPS salientes
Modo de depuración
Para registro detallado, agregar la variable de entorno de depuración:
docker run -e DEBUG=true \
-e SALESFORCE_CLIENT_ID=... \
# ... other variables
steffensbola/salesforce-mcp-ts:latest
Contribuciones
Ver CONTRIBUTING.md para información sobre:
- Arquitectura del proyecto y configuración de desarrollo
- Ejecución desde el código fuente
- Directrices de contribución y proceso de solicitudes de extracción
Licencia
Licencia MIT - ver el archivo LICENSE para más detalles.