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 OAuth
  • run_soql_query - Ejecutar consultas SOQL
  • run_sosl_search - Ejecutar búsquedas SOSL
  • get_object_fields - Obtener metadatos de objetos de Salesforce
  • get_record - Recuperar registros específicos por ID
  • create_record - Crear nuevos registros
  • update_record - Actualizar registros existentes
  • delete_record - Eliminar registros
  • tooling_execute - Ejecutar solicitudes de la API de herramientas
  • apex_execute - Ejecutar solicitudes Apex REST
  • restful - Realizar llamadas directas a la API REST

Inicio rápido con Docker

Requisitos previos

  1. 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
  2. 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 conectada
  • SALESFORCE_CLIENT_SECRET - Secreto de consumidor de tu aplicación conectada
  • SALESFORCE_USERNAME - Tu nombre de usuario de Salesforce
  • SALESFORCE_PASSWORD - Tu contraseña de Salesforce
  • SALESFORCE_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 directo
  • SALESFORCE_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_SECRET
  • SF_USERNAME / SF_PASSWORD / SF_SECURITY_TOKEN

Usando Docker Compose

  1. Crear un archivo .env con 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
  1. 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

  1. 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
  2. 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
  3. 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.

Enlaces