Salesforce MCP server

Integrates with Salesforce CRM for natural language-driven data management, querying, and administration tasks.
Back to servers
Setup instructions
Provider
Tapas Mukherjee
Release date
Jan 16, 2025
Language
TypeScript
Package
Stats
15.0K downloads
113 stars

The Salesforce MCP server enables natural language interactions with your Salesforce data and metadata. It allows Claude to query, modify, and manage your Salesforce objects and records using everyday language, making it easier to work with your Salesforce organization through conversational commands.

Features

  • Object and Field Management: Create and modify custom objects and fields using natural language
  • Smart Object Search: Find Salesforce objects using partial name matches
  • Detailed Schema Information: Get comprehensive field and relationship details for any object
  • Flexible Data Queries: Query records with relationship support and complex filters
  • Data Manipulation: Insert, update, delete, and upsert records with ease
  • Cross-Object Search: Search across multiple objects using SOSL
  • Apex Code Management: Read, create, and update Apex classes and triggers
  • Intuitive Error Handling: Clear feedback with Salesforce-specific error details
  • Switchable Authentication: Supports multiple orgs with easy switching based on VS Code workspace configuration

Installation

Global Installation

npm install -g @tsmztech/mcp-server-salesforce

Claude Desktop Setup

For manual Claude Desktop configuration:

  1. Install the package globally using npm
  2. Configure your Salesforce credentials as shown in the usage section below

Authentication Methods

1. Username/Password Authentication (Default)

  1. Set up your Salesforce credentials
  2. Get your security token (Reset from Salesforce Settings)

2. OAuth 2.0 Client Credentials Flow

  1. Create a Connected App in Salesforce
  2. Enable OAuth settings and select "Client Credentials Flow"
  3. Set appropriate scopes (typically "api" is sufficient)
  4. Save the Client ID and Client Secret
  5. Note your instance URL (e.g., https://your-domain.my.salesforce.com)

3. Salesforce CLI Authentication (Recommended for local/dev)

  1. Install and authenticate Salesforce CLI (sf)
  2. Make sure your org is authenticated and accessible via sf org display --json in the root of your Salesforce project
  3. The server will automatically retrieve the access token and instance URL using the CLI

Usage with Claude Desktop

Add to your claude_desktop_config.json:

For Salesforce CLI Authentication:

{
  "mcpServers": {
    "salesforce": {
      "command": "npx",
      "args": ["-y", "@tsmztech/mcp-server-salesforce"],
      "env": {
        "SALESFORCE_CONNECTION_TYPE": "Salesforce_CLI"
      }
    }
  }
}

For Username/Password Authentication:

{
  "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"
      }
    }
  }
}

For OAuth 2.0 Client Credentials Flow:

{
  "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"
      }
    }
  }
}

Available Tools

salesforce_search_objects

Search for standard and custom objects:

  • Search by partial name matches
  • Finds both standard and custom objects
  • Example: "Find objects related to Account"

salesforce_describe_object

Get detailed object schema information:

  • Field definitions and properties
  • Relationship details
  • Picklist values
  • Example: "Show me all fields in the Account object"

salesforce_query_records

Query records with relationship support:

  • Parent-to-child relationships
  • Child-to-parent relationships
  • Complex WHERE conditions
  • Example: "Get all Accounts with their related Contacts"

salesforce_aggregate_query

Execute aggregate queries with GROUP BY:

  • GROUP BY single or multiple fields
  • Aggregate functions: COUNT, COUNT_DISTINCT, SUM, AVG, MIN, MAX
  • HAVING clauses for filtering grouped results
  • Date/time grouping functions
  • Example: "Count opportunities by stage"

salesforce_dml_records

Perform data operations:

  • Insert new records
  • Update existing records
  • Delete records
  • Upsert using external IDs
  • Example: "Update status of multiple accounts"

salesforce_manage_object

Create and modify custom objects:

  • Create new custom objects
  • Update object properties
  • Configure sharing settings
  • Example: "Create a Customer Feedback object"

salesforce_manage_field

Manage object fields:

  • Add new custom fields
  • Modify field properties
  • Create relationships
  • Automatically grants Field Level Security to System Administrator by default
  • Example: "Add a Rating picklist field to Account"

salesforce_manage_field_permissions

Manage Field Level Security:

  • Grant or revoke read/edit access to fields for specific profiles
  • View current field permissions
  • Bulk update permissions for multiple profiles
  • Example: "Grant System Administrator access to Custom_Field__c on Account"

salesforce_search_all

Search across multiple objects:

  • SOSL-based search
  • Multiple object support
  • Field snippets
  • Example: "Search for 'cloud' across Accounts and Opportunities"

salesforce_read_apex

Read Apex classes:

  • Get full source code of specific classes
  • List classes matching name patterns
  • View class metadata
  • Example: "Show me the AccountController class"

salesforce_write_apex

Create and update Apex classes:

  • Create new Apex classes
  • Update existing class implementations
  • Specify API versions
  • Example: "Create a new Apex class for handling account operations"

salesforce_read_apex_trigger

Read Apex triggers:

  • Get full source code of specific triggers
  • List triggers matching name patterns
  • View trigger metadata
  • Example: "Show me the AccountTrigger"

salesforce_write_apex_trigger

Create and update Apex triggers:

  • Create new Apex triggers for specific objects
  • Update existing trigger implementations
  • Specify API versions and event operations
  • Example: "Create a new trigger for the Account object"

salesforce_execute_anonymous

Execute anonymous Apex code:

  • Run Apex code without creating a permanent class
  • View debug logs and execution results
  • Example: "Execute Apex code to calculate account metrics"

salesforce_manage_debug_logs

Manage debug logs for Salesforce users:

  • Enable debug logs for specific users
  • Disable active debug log configurations
  • Retrieve and view debug logs
  • Configure log levels
  • Example: "Enable debug logs for [email protected]"

Example Usage

Searching Objects

"Find all objects related to Accounts"
"Show me objects that handle customer service"
"What objects are available for order management?"

Getting Schema Information

"What fields are available in the Account object?"
"Show me the picklist values for Case Status"
"Describe the relationship fields in Opportunity"

Querying Records

"Get all Accounts created this month"
"Show me high-priority Cases with their related Contacts"
"Find all Opportunities over $100k"

Aggregate Queries

"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"

Managing Custom Objects and Fields

"Create a Customer Feedback object"
"Add a Rating field to the Feedback object"
"Create a Revenue currency field on Account and grant access to Sales User and Marketing User profiles"

Managing Field Permissions

"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"

Searching Across Objects

"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"

Managing Apex Code and Triggers

"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"
"Create a new trigger for the Opportunity object"

Executing Anonymous Apex and Managing Logs

"Execute Apex code to calculate account metrics"
"Enable debug logs for [email protected]"
"Retrieve recent logs for an admin user"

How to install this MCP server

For Claude Code

To add this MCP server to Claude Code, run this command in your terminal:

claude mcp add-json "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"}}'

See the official Claude Code MCP documentation for more details.

For Cursor

There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json file so that it is available in all of your projects.

If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json file.

Adding an MCP server to Cursor globally

To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".

When you click that button the ~/.cursor/mcp.json file will be opened and you can add your server like this:

{
    "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"
            }
        }
    }
}

Adding an MCP server to a project

To add an MCP server to a project you can create a new .cursor/mcp.json file or add it to the existing one. This will look exactly the same as the global MCP server example above.

How to use the MCP server

Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.

The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.

You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.

For Claude Desktop

To add this MCP server to Claude Desktop:

1. Find your configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

2. Add this to your configuration file:

{
    "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"
            }
        }
    }
}

3. Restart Claude Desktop for the changes to take effect

Want to 10x your AI skills?

Get a free account and learn to code + market your apps using AI (with or without vibes!).

Nah, maybe later