Connects Claude to Salesforce through REST API, exposing object management, SOQL/SOSL queries, and Apex operations. You can create custom objects and fields, query records with relationships, perform CRUD operations, search across multiple objects, and manage Apex classes and triggers. Supports three authentication methods including Salesforce CLI integration for local development. Handles complex operations like aggregate queries with GROUP BY, Field Level Security management, and anonymous Apex execution. Reach for this when you need to manipulate Salesforce data or metadata through natural language rather than clicking through Setup menus or writing manual SOQL.
An MCP (Model Context Protocol) server implementation that integrates Claude with Salesforce, enabling natural language interactions with your Salesforce data and metadata. This server allows Claude to query, modify, and manage your Salesforce objects and records using everyday language.
npx/node (not bun x) in your MCP client configuration.npm install -g @tsmztech/mcp-server-salesforce
For easy setup with Claude Desktop, download the pre-configured extension:
salesforce-mcp-extension.dxt from the claude-desktop/ folder.dxt file into the Extensions windowFor manual Claude Desktop configuration, see Usage with Claude Desktop below.
Search for standard and custom objects:
Get detailed object schema information:
Query records with relationship support:
Execute aggregate queries with GROUP BY:
Perform data operations:
Create and modify custom objects:
Manage object fields:
grantAccessTo parameter to specify different profilesManage Field Level Security (Field Permissions):
Search across multiple objects:
Read Apex classes:
Create and update Apex classes:
Read Apex triggers:
Create and update Apex triggers:
Execute anonymous Apex code:
Manage debug logs for Salesforce users:
You can connect to Salesforce using one of three authentication methods:
https://your-domain.my.salesforce.com) as it's required for authenticationsf).sf org display --json in the root of your Salesforce project.By default, the server uses the jsforce library's default Salesforce API version, which may be too old for newer standard objects (for example, AccountPlan requires API version 62.0+ and fails with sObject type 'AccountPlan' is not supported). Set the SALESFORCE_API_VERSION environment variable to pin a specific version with any authentication method:
"env": {
"SALESFORCE_CONNECTION_TYPE": "...",
"SALESFORCE_API_VERSION": "62.0"
}
The value must look like "62.0" (major version dot minor version).
Add to your claude_desktop_config.json:
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["-y", "@tsmztech/mcp-server-salesforce"],
"env": {
"SALESFORCE_CONNECTION_TYPE": "Salesforce_CLI"
}
}
}
}
{
"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
}
}
}
}
{
"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
}
}
}
}
Note: For OAuth 2.0 Client Credentials Flow, the
SALESFORCE_INSTANCE_URLmust be your exact Salesforce instance URL (e.g.,https://your-domain.my.salesforce.com). The token endpoint will be constructed as<instance_url>/services/oauth2/token.
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["-y", "@tsmztech/mcp-server-salesforce"],
"env": {
"SALESFORCE_CONNECTION_TYPE": "Access_Token",
"SALESFORCE_INSTANCE_URL": "https://your-domain.my.salesforce.com",
"SALESFORCE_ACCESS_TOKEN": "your_access_token"
}
}
}
}
Note: Use
Access_Tokenwhen the OAuth access token is provisioned by an external system (an SSO gateway, the SF CLI on another machine, a refresh-token-based proxy, etc.) and only the resulting access token + instance URL are available at runtime. The server skips the OAuth handshake and uses the provided token directly.
You can run this MCP server inside a Docker container. Because the server communicates over stdio (standard input/output), the container is typically executed interactively by an MCP client using docker run -i.
git clone https://github.com/tsmztech/mcp-server-salesforce.git
cd mcp-server-salesforce
docker build -t mcp-server-salesforce .
[!NOTE] The Salesforce CLI (
sf) web-based OAuth login flow is unavailable inside headless Docker containers.When running containerized, use one of the supported environment-variable based authentication methods:
- Username & Password Authentication
SALESFORCE_CONNECTION_TYPE=User_PasswordSALESFORCE_USERNAMESALESFORCE_PASSWORDSALESFORCE_TOKEN- OAuth 2.0 Client Credentials Flow
SALESFORCE_CONNECTION_TYPE=OAuth_2.0_Client_CredentialsSALESFORCE_CLIENT_IDSALESFORCE_CLIENT_SECRETSALESFORCE_INSTANCE_URL- Direct Access Token Authentication
SALESFORCE_CONNECTION_TYPE=Access_TokenSALESFORCE_ACCESS_TOKENSALESFORCE_INSTANCE_URL
To register the containerized server with an MCP client (such as Claude Desktop), add the following configuration to your claude_desktop_config.json:
{
"mcpServers": {
"salesforce": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SALESFORCE_CONNECTION_TYPE=User_Password",
"-e",
"SALESFORCE_USERNAME=your_username",
"-e",
"SALESFORCE_PASSWORD=your_password",
"-e",
"SALESFORCE_TOKEN=your_security_token",
"mcp-server-salesforce"
]
}
}
}
You can test the containerized server directly from your terminal:
docker run -i --rm \
-e SALESFORCE_CONNECTION_TYPE="User_Password" \
-e SALESFORCE_USERNAME="your_username" \
-e SALESFORCE_PASSWORD="your_password" \
-e SALESFORCE_TOKEN="your_security_token" \
mcp-server-salesforce
Once the container is running, you can send an MCP initialize JSON-RPC request through stdin:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "test-client",
"version": "1.0.0"
}
}
}
"Find all objects related to Accounts"
"Show me objects that handle customer service"
"What objects are available for order management?"
"What fields are available in the Account object?"
"Show me the picklist values for Case Status"
"Describe the relationship fields in Opportunity"
"Get all Accounts created this month"
"Show me high-priority Cases with their related Contacts"
"Find all Opportunities over $100k"
"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"
"Create a Customer Feedback object"
"Add a Rating field to the Feedback object"
"Update sharing settings for the Service Request object"
Examples with Field Level Security:
# 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"
"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"
"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"
"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"
"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"
"Execute Apex code to calculate account metrics"
"Run a script to update related records"
"Execute a batch job to process large datasets"
"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"
# 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
Contributions are welcome! Feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you encounter any issues or need support, please file an issue on the GitHub repository.
io.github.compuute/lead-enrichment
dev.workers.selbyventurecap.cf-worker/apollo-salesforce-mapper
io.github.br0ski777/company-enrichment
com.mcparmory/apollo
mambalabsdev/mcp-gtm-tech-stack-signal-scraper
io.github.dingdawg/dingdawg-sales-agent