Salesforce MCP Server
Integra Claude con Salesforce, permitiendo interacciones en lenguaje natural con tus datos y metadatos de Salesforce.
Documentación
Salesforce MCP Server
Una implementación de servidor MCP (Model Context Protocol) que integra Claude con Salesforce, permitiendo interacciones en lenguaje natural con tus datos y metadatos de Salesforce. Este servidor permite a Claude consultar, modificar y gestionar tus objetos y registros de Salesforce usando lenguaje cotidiano.
Características
- Gestión de Objetos y Campos: Crea y modifica objetos y campos personalizados usando lenguaje natural
- Búsqueda Inteligente de Objetos: Encuentra objetos de Salesforce usando coincidencias parciales de nombre
- Información Detallada del Esquema: Obtén detalles completos de campos y relaciones para cualquier objeto
- Consultas de Datos Flexibles: Consulta registros con soporte de relaciones y filtros complejos
- Manipulación de Datos: Inserta, actualiza, elimina y haz upsert de registros con facilidad
- Búsqueda entre Objetos: Busca en múltiples objetos usando SOSL
- Gestión de Código Apex: Lee, crea y actualiza clases y triggers de Apex
- Manejo de Errores Intuitivo: Retroalimentación clara con detalles de error específicos de Salesforce
Instalación
npm install -g @tsmztech/mcp-server-salesforce
Herramientas
salesforce_search_objects
Busca objetos estándar y personalizados:
- Busca por coincidencias parciales de nombre
- Encuentra tanto objetos estándar como personalizados
- Ejemplo: "Find objects related to Account" encontrará Account, AccountHistory, etc.
salesforce_describe_object
Obtén información detallada del esquema del objeto:
- Definiciones y propiedades de campos
- Detalles de relaciones
- Valores de picklist
- Ejemplo: "Show me all fields in the Account object"
salesforce_query_records
Consulta registros con soporte de relaciones:
- Relaciones de padre a hijo
- Relaciones de hijo a padre
- Condiciones WHERE complejas
- Ejemplo: "Get all Accounts with their related Contacts"
- Nota: Para consultas con GROUP BY o funciones agregadas, usa salesforce_aggregate_query
salesforce_aggregate_query
Ejecuta consultas agregadas con GROUP BY:
- GROUP BY en uno o varios campos
- Funciones agregadas: COUNT, COUNT_DISTINCT, SUM, AVG, MIN, MAX
- Cláusulas HAVING para filtrar resultados agrupados
- Funciones de agrupación por fecha/hora
- Ejemplo: "Count opportunities by stage" o "Find accounts with more than 10 opportunities"
salesforce_dml_records
Realiza operaciones de datos:
- Inserta nuevos registros
- Actualiza registros existentes
- Elimina registros
- Upsert usando IDs externos
- Ejemplo: "Update status of multiple accounts"
salesforce_manage_object
Crea y modifica objetos personalizados:
- Crea nuevos objetos personalizados
- Actualiza propiedades de objetos
- Configura ajustes de uso compartido
- Ejemplo: "Create a Customer Feedback object"
salesforce_manage_field
Gestiona campos de objetos:
- Añade nuevos campos personalizados
- Modifica propiedades de campos
- Crea relaciones
- Concede automáticamente Seguridad a Nivel de Campo (Field Level Security) al Administrador del Sistema por defecto
- Usa el parámetro
grantAccessTopara especificar diferentes perfiles - Ejemplo: "Add a Rating picklist field to Account"
salesforce_manage_field_permissions
Gestiona la Seguridad a Nivel de Campo (Permisos de Campo):
- Concede o revoca acceso de lectura/edición a campos para perfiles específicos
- Consulta los permisos de campo actuales
- Actualiza permisos en masa para múltiples perfiles
- Útil para gestionar permisos después de la creación de campos o para campos existentes
- Ejemplo: "Grant System Administrator access to Custom_Field__c on Account"
salesforce_search_all
Busca en múltiples objetos:
- Búsqueda basada en SOSL
- Soporte para múltiples objetos
- Fragmentos de campos
- Ejemplo: "Search for 'cloud' across Accounts and Opportunities"
salesforce_read_apex
Lee clases Apex:
- Obtén el código fuente completo de clases específicas
- Lista clases que coinciden con patrones de nombre
- Consulta metadatos de clase (versión de API, estado, etc.)
- Soporte para comodines (* y ?) en patrones de nombre
- Ejemplo: "Show me the AccountController class" o "Find all classes matching AccountCont"
salesforce_write_apex
Crea y actualiza clases Apex:
- Crea nuevas clases Apex
- Actualiza implementaciones de clases existentes
- Especifica versiones de API
- Ejemplo: "Create a new Apex class for handling account operations"
salesforce_read_apex_trigger
Lee triggers de Apex:
- Obtén el código fuente completo de triggers específicos
- Lista triggers que coinciden con patrones de nombre
- Consulta metadatos de triggers (versión de API, objeto, estado, etc.)
- Soporte para comodines (* y ?) en patrones de nombre
- Ejemplo: "Show me the AccountTrigger" o "Find all triggers for Contact object"
salesforce_write_apex_trigger
Crea y actualiza triggers de Apex:
- Crea nuevos triggers de Apex para objetos específicos
- Actualiza implementaciones de triggers existentes
- Especifica versiones de API y operaciones de eventos
- Ejemplo: "Create a new trigger for the Account object" o "Update the Lead trigger"
salesforce_execute_anonymous
Ejecuta código Apex anónimo:
- Ejecuta código Apex sin crear una clase permanente
- Consulta registros de depuración y resultados de ejecución
- Útil para operaciones de datos no soportadas directamente por otras herramientas
- Ejemplo: "Execute Apex code to calculate account metrics" o "Run a script to update related records"
salesforce_manage_debug_logs
Gestiona registros de depuración para usuarios de Salesforce:
- Habilita registros de depuración para usuarios específicos
- Deshabilita configuraciones activas de registros de depuración
- Recupera y consulta registros de depuración
- Configura niveles de registro (NONE, ERROR, WARN, INFO, DEBUG, FINE, FINER, FINEST)
- Ejemplo: "Enable debug logs for user@example.com" o "Retrieve recent logs for an admin user"
Configuración
Autenticación de Salesforce
Puedes conectarte a Salesforce usando uno de dos métodos de autenticación:
1. Autenticación con Usuario/Contraseña (Predeterminada)
- Configura tus credenciales de Salesforce
- Obtén tu token de seguridad (Restablécelo desde Configuración de Salesforce)
2. Flujo de Credenciales de Cliente OAuth 2.0
- Crea una aplicación conectada (Connected App) en Salesforce
- Habilita la configuración de OAuth y selecciona "Client Credentials Flow"
- Configura los ámbitos (scopes) apropiados (normalmente "api" es suficiente)
- Guarda el ID de Cliente y el Secreto de Cliente
- Importante: Anota tu URL de instancia (p. ej.,
https://your-domain.my.salesforce.com) ya que es necesaria para la autenticación
Uso con Claude Desktop
Añade a tu claude_desktop_config.json:
Para autenticación con Usuario/Contraseña:
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["-y", "@tsmztech/mcp-server-salesforce"],
"env": {
"SALESFORCE_CONNECTION_TYPE": "User_Password",
"SALESFORCE_USERNAME": "your_username",
"SALESFORCE_PASSWORD": "your_password",
"SALESFORCE_TOKEN": "your_security_token",
"SALESFORCE_INSTANCE_URL": "org_url" // Optional. Default value: https://login.salesforce.com
}
}
}
}
Para el flujo de Credenciales de Cliente OAuth 2.0:
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["-y", "@tsmztech/mcp-server-salesforce"],
"env": {
"SALESFORCE_CONNECTION_TYPE": "OAuth_2.0_Client_Credentials",
"SALESFORCE_CLIENT_ID": "your_client_id",
"SALESFORCE_CLIENT_SECRET": "your_client_secret",
"SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com" // REQUIRED: Must be your exact Salesforce instance URL
}
}
}
}
Nota: Para el flujo de Credenciales de Cliente OAuth 2.0, el
SALESFORCE_INSTANCE_URLdebe ser tu URL exacta de instancia de Salesforce (p. ej.,https://your-domain.my.salesforce.com). El endpoint de token se construirá como<instance_url>/services/oauth2/token.
Ejemplos de Uso
Búsqueda de Objetos
"Find all objects related to Accounts"
"Show me objects that handle customer service"
"What objects are available for order management?"
Obtención de Información del Esquema
"What fields are available in the Account object?"
"Show me the picklist values for Case Status"
"Describe the relationship fields in Opportunity"
Consulta de Registros
"Get all Accounts created this month"
"Show me high-priority Cases with their related Contacts"
"Find all Opportunities over $100k"
Consultas Agregadas
"Count opportunities by stage"
"Show me the total revenue by account"
"Find accounts with more than 10 opportunities"
"Calculate average deal size by sales rep and quarter"
"Get the number of cases by priority and status"
Gestión de Objetos Personalizados
"Create a Customer Feedback object"
"Add a Rating field to the Feedback object"
"Update sharing settings for the Service Request object"
Ejemplos con Seguridad a Nivel de Campo:
# Default - grants access to System Administrator automatically
"Create a Status picklist field on Custom_Object__c"
# Custom profiles - grants access to specified profiles
"Create a Revenue currency field on Account and grant access to Sales User and Marketing User profiles"
Gestión de Permisos de Campo
"Grant System Administrator access to Custom_Field__c on Account"
"Give read-only access to Rating__c field for Sales User profile"
"View which profiles have access to the Custom_Field__c"
"Revoke field access for specific profiles"
Búsqueda entre Objetos
"Search for 'cloud' in Accounts and Opportunities"
"Find mentions of 'network issue' in Cases and Knowledge Articles"
"Search for customer name across all relevant objects"
Gestión de Código Apex
"Show me all Apex classes with 'Controller' in the name"
"Get the full code for the AccountService class"
"Create a new Apex utility class for handling date operations"
"Update the LeadConverter class to add a new method"
Gestión de Triggers Apex
"List all triggers for the Account object"
"Show me the code for the ContactTrigger"
"Create a new trigger for the Opportunity object"
"Update the Case trigger to handle after delete events"
Ejecución de Código Apex Anónimo
"Execute Apex code to calculate account metrics"
"Run a script to update related records"
"Execute a batch job to process large datasets"
Gestión de Registros de Depuración
"Enable debug logs for user@example.com"
"Retrieve recent logs for an admin user"
"Disable debug logs for a specific user"
"Configure log level to DEBUG for a user"
Desarrollo
Compilación desde el código fuente
# Clone the repository
git clone https://github.com/tsmztech/mcp-server-salesforce.git
# Navigate to directory
cd mcp-server-salesforce
# Install dependencies
npm install
# Build the project
npm run build
Ejecución de un servidor HTTP local
Se proporciona un script auxiliar start-http.ts para iniciar el servidor MCP vía HTTP para pruebas locales. Después de compilar, ejecuta:
node start-http.cjs
Esto inicia el servidor en http://localhost:3000.
Endpoint de consulta
Una vez que el servidor HTTP esté en ejecución, puedes enviar una solicitud POST a /query con los parámetros SOQL utilizados por la herramienta salesforce_query_records:
curl -X POST http://localhost:3000/query \
-H "Content-Type: application/json" \
-d '{"objectName":"Account","fields":["Id","Name"],"limit":5}'
Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.
Licencia
Este proyecto está licenciado bajo la Licencia MIT; consulta el archivo LICENSE para más detalles.
Problemas y Soporte
Si encuentras algún problema o necesitas soporte, por favor crea un issue en el repositorio de GitHub.