MCP server intelligence profile

Salesforce MCP Server (Extended) MCP Server

Enables natural language interactions with Salesforce data, metadata, and reports, including report creation, discovery, and schema inspection

Local Onlyboejucci
Awaiting current scanNpm · 1.0.5

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
21Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install @boejucci/mcp-server-salesforce from npm

Version 1.0.5 declares 1 executable entrypoint.

npm install --save-exact @boejucci/mcp-server-salesforce@1.0.5
npx -y -p @boejucci/mcp-server-salesforce@1.0.5 @boejucci/mcp-server-salesforce
MCP client configuration example
{
  "mcpServers": {
    "@boejucci/mcp-server-salesforce": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "@boejucci/mcp-server-salesforce@1.0.5",
        "@boejucci/mcp-server-salesforce"
      ]
    }
  }
}

Identity

Canonical slugsalesforce-mcp-server-extended-b983867aDeploymentLocal Only
Canonical packagenpm:@boejucci/mcp-server-salesforceRepositoryboejucci/mcp-server-salesforce
First publishedLatest release
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npm@boejucci/mcp-server-salesforce1.0.51Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npm@boejucci/mcp-server-salesforce1.0.5CurrentSep 5, 202621 toolsSucceeded · 0 resources · 0 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
salesforce-mcp-serverServer-reported name
1Capability groups
Aug 22, 2026Observed

Tools 21

ToolCategoryAnnotationsRisk
salesforce_aggregate_queryExecute SOQL queries with GROUP BY, aggregate functions, and statistical analysis. Use this tool for queries that summarize and group data rather than returning individual records. NOTE: For regular queries without GROUP BY or aggregates, use salesforce_query_records instead. This tool handles: 1. GROUP BY queries (single/multiple fields, related objects, date functions) 2. Aggregate functions: COUNT(), COUNT_DISTINCT(), SUM(), AVG(), MIN(), MAX() 3. HAVING clauses for filtering grouped results 4. Date/time grouping: CALENDAR_YEAR(), CALENDAR_MONTH(), CALENDAR_QUARTER(), FISCAL_YEAR(), FISCAL_QUARTER() Examples: 1. Count opportunities by stage: - objectName: "Opportunity" - selectFields: ["StageName", "COUNT(Id) OpportunityCount"] - groupByFields: ["StageName"] 2. Analyze cases by priority and status: - objectName: "Case" - selectFields: ["Priority", "Status", "COUNT(Id) CaseCount", "AVG(Days_Open__c) AvgDaysOpen"] - groupByFields: ["Priority", "Status"] 3. Count contacts by account industry: - objectName: "Contact" - selectFields: ["Account.Industry", "COUNT(Id) ContactCount"] - groupByFields: ["Account.Industry"] 4. Quarterly opportunity analysis: - objectName: "Opportunity" - selectFields: ["CALENDAR_YEAR(CloseDate) Year", "CALENDAR_QUARTER(CloseDate) Quarter", "SUM(Amount) Revenue"] - groupByFields: ["CALENDAR_YEAR(CloseDate)", "CALENDAR_QUARTER(CloseDate)"] 5. Find accounts with more than 10 opportunities: - objectName: "Opportunity" - selectFields: ["Account.Name", "COUNT(Id) OpportunityCount"] - groupByFields: ["Account.Name"] - havingClause: "COUNT(Id) > 10" Important Rules: - All non-aggregate fields in selectFields MUST be included in groupByFields - Use whereClause to filter rows BEFORE grouping - Use havingClause to filter AFTER grouping (for aggregate conditions) - ORDER BY can only use fields from groupByFields or aggregate functions - OFFSET is not supported with GROUP BY in Salesforce
Input schema
{
  "type": "object",
  "properties": {
    "objectName": {
      "type": "string",
      "description": "API name of the object to query"
    },
    "selectFields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields to select - mix of group fields and aggregates. Format: 'FieldName' or 'COUNT(Id) AliasName'"
    },
    "groupByFields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Fields to group by - must include all non-aggregate fields from selectFields"
    },
    "whereClause": {
      "type": "string",
      "description": "WHERE clause to filter rows BEFORE grouping (cannot contain aggregate functions)",
      "optional": true
    },
    "havingClause": {
      "type": "string",
      "description": "HAVING clause to filter results AFTER grouping (use for aggregate conditions)",
      "optional": true
    },
    "orderBy": {
      "type": "string",
      "description": "ORDER BY clause - can only use grouped fields or aggregate functions",
      "optional": true
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of grouped results to return",
      "optional": true
    }
  },
  "required": [
    "objectName",
    "selectFields",
    "groupByFields"
  ]
}
salesforce_create_reportCreate a new Salesforce report using the Metadata API. Supports tabular, summary, and matrix formats with groupings, filters, and charts. IMPORTANT - REPORT TYPE: The reportType parameter can be: 1. A standard object name: "Opportunity", "Account", "Contact", "Lead", "Case", etc. 2. A custom report type API name (use salesforce_list_report_types or salesforce_describe_report_type to find these) IMPORTANT - FOLDER REQUIREMENT: Reports MUST be created in a folder. Common folders: - "unfiled$public" (default) - Public unfiled reports folder - "Private Reports" - Private user reports (not recommended for shared reports) - Custom folder names - Use salesforce_list_report_folders to find available folders IMPORTANT - FIELD NAMING: - For standard objects (Opportunity, Account, etc.): Use UPPERCASE field names Examples: OPPORTUNITY_NAME, AMOUNT, STAGE_NAME, CREATED_DATE, CLOSE_DATE, ACCOUNT_NAME, INDUSTRY - For custom fields: Use exact API name with __c suffix (will be auto-prefixed with object name) Example: Type__c becomes "Opportunity.Type__c" automatically - Date range filters: Two filters on same date field with greaterOrEqual/lessOrEqual are automatically converted to timeFrameFilter WORKFLOW TO CREATE A REPORT: 1. First, use salesforce_describe_report_type to see available fields for your reportType 2. Then use this tool with the correct field names from step 1 3. If it fails, check the error message for field name issues EXAMPLES: 1. MSP opportunities by month (2024-2025): { "name": "MSP Opportunities 2024-2025", "reportType": "Opportunity", "format": "SUMMARY", "columns": ["OPPORTUNITY_NAME", "AMOUNT", "STAGE_NAME"], "filters": [ {"field": "Type__c", "operator": "equals", "value": "MSP"}, {"field": "CREATED_DATE", "operator": "greaterOrEqual", "value": "2024-01-01"}, {"field": "CREATED_DATE", "operator": "lessOrEqual", "value": "2025-12-31"} ], "groupingsDown": [{"field": "CREATED_DATE", "dateGranularity": "Month"}], "folder": "unfiled$public" } 2. Accounts by industry: { "name": "Accounts by Industry", "reportType": "Account", "format": "SUMMARY", "columns": ["ACCOUNT_NAME", "INDUSTRY", "ANNUAL_REVENUE"], "filters": [{"field": "INDUSTRY", "operator": "notEqual", "value": ""}], "groupingsDown": [{"field": "INDUSTRY"}], "folder": "unfiled$public" }
Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the report (will be sanitized for API name)"
    },
    "reportType": {
      "type": "string",
      "description": "Report type - either a standard object name (Opportunity, Account, Contact, Lead, Case, etc.) or a custom report type API name. Use salesforce_list_report_types to discover available report types."
    },
    "format": {
      "type": "string",
      "enum": [
        "TABULAR",
        "SUMMARY",
        "MATRIX"
      ],
      "description": "Report format: TABULAR (simple list), SUMMARY (with groupings and subtotals), or MATRIX (rows and columns)"
    },
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of field names in UPPERCASE (e.g., [\"OPPORTUNITY_NAME\", \"AMOUNT\", \"STAGE_NAME\"])"
    },
    "groupingsDown": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field name in UPPERCASE"
          },
          "sortOrder": {
            "type": "string",
            "enum": [
              "Asc",
              "Desc"
            ]
          },
          "dateGranularity": {
            "type": "string",
            "enum": [
              "Day",
              "Week",
              "Month",
              "Quarter",
              "Year",
              "FiscalQuarter",
              "FiscalYear"
            ]
          }
        },
        "required": [
          "field"
        ]
      },
      "description": "Groupings for rows (SUMMARY/MATRIX only)"
    },
    "groupingsAcross": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string"
          },
          "sortOrder": {
            "type": "string",
            "enum": [
              "Asc",
              "Desc"
            ]
          },
          "dateGranularity": {
            "type": "string",
            "enum": [
              "Day",
              "Week",
              "Month",
              "Quarter",
              "Year"
            ]
          }
        },
        "required": [
          "field"
        ]
      },
      "description": "Groupings for columns (MATRIX only)"
    },
    "filters": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "field": {
            "type": "string",
            "description": "Field name (UPPERCASE for standard fields, exact API name for custom fields like Type__c)"
          },
          "operator": {
            "type": "string",
            "enum": [
              "equals",
              "notEqual",
              "lessThan",
              "greaterThan",
              "lessOrEqual",
              "greaterOrEqual",
              "contains",
              "notContain",
              "startsWith",
              "includes",
              "excludes"
            ]
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "field",
          "operator",
          "value"
        ]
      },
      "description": "Filters to apply. Date ranges (two filters on same date field with greaterOrEqual/lessOrEqual) are automatically converted to timeFrameFilter."
    },
    "chart": {
      "type": "object",
      "properties": {
        "chartType": {
          "type": "string",
          "enum": [
            "VerticalColumn",
            "VerticalColumnGrouped",
            "VerticalColumnStacked",
            "HorizontalBar",
            "Line",
            "Pie",
            "Donut",
            "Funnel"
          ],
          "description": "Type of chart to display"
        },
        "title": {
          "type": "string"
        },
        "groupingColumn": {
          "type": "string"
        },
        "showValues": {
          "type": "boolean"
        },
        "showPercentage": {
          "type": "boolean"
        }
      }
    },
    "folder": {
      "type": "string",
      "description": "Report folder name. Default: \"unfiled$public\". Use salesforce_list_report_folders to see available folders. Common values: \"unfiled$public\", \"Private Reports\", or custom folder names."
    },
    "description": {
      "type": "string",
      "description": "Report description"
    }
  },
  "required": [
    "name",
    "reportType",
    "format",
    "columns"
  ]
}
salesforce_describe_objectGet detailed schema metadata including all fields, relationships, and field properties of any Salesforce object. Examples: 'Account' shows all Account fields including custom fields; 'Case' shows all Case fields including relationships to Account, Contact etc.
Input schema
{
  "type": "object",
  "properties": {
    "objectName": {
      "type": "string",
      "description": "API name of the object (e.g., 'Account', 'Contact', 'Custom_Object__c')"
    }
  },
  "required": [
    "objectName"
  ]
}
salesforce_describe_report_typeGet detailed information about a specific report type, including available fields that can be used in reports.
Input schema
{
  "type": "object",
  "properties": {
    "reportType": {
      "type": "string",
      "description": "The API name of the report type to describe (e.g., \"Opportunity\", \"Account\", \"Custom_Object__c\")"
    }
  },
  "required": [
    "reportType"
  ]
}
salesforce_dml_recordsPerform data manipulation operations on Salesforce records: - insert: Create new records - update: Modify existing records (requires Id) - delete: Remove records (requires Id) - upsert: Insert or update based on external ID field Examples: Insert new Accounts, Update Case status, Delete old records, Upsert based on custom external ID
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "insert",
        "update",
        "delete",
        "upsert"
      ],
      "description": "Type of DML operation to perform"
    },
    "objectName": {
      "type": "string",
      "description": "API name of the object"
    },
    "records": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Array of records to process"
    },
    "externalIdField": {
      "type": "string",
      "description": "External ID field name for upsert operations",
      "optional": true
    }
  },
  "required": [
    "operation",
    "objectName",
    "records"
  ]
}
salesforce_execute_anonymousExecute anonymous Apex code in Salesforce. Examples: 1. Execute simple Apex code: { "apexCode": "System.debug('Hello World');" } 2. Execute Apex code with variables: { "apexCode": "List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 5]; for(Account a : accounts) { System.debug(a.Name); }" } 3. Execute Apex with debug logs: { "apexCode": "System.debug(LoggingLevel.INFO, 'Processing accounts...'); List<Account> accounts = [SELECT Id FROM Account LIMIT 10]; System.debug(LoggingLevel.INFO, 'Found ' + accounts.size() + ' accounts');", "logLevel": "DEBUG" } Notes: - The apexCode parameter is required and must contain valid Apex code - The code is executed in an anonymous context and does not persist - The logLevel parameter is optional (defaults to 'DEBUG') - Execution results include compilation success/failure, execution success/failure, and debug logs - For security reasons, some operations may be restricted based on user permissions - This tool can be used for data operations or updates when there are no other specific tools available - When users request data queries or updates that aren't directly supported by other tools, this tool can be used if the operation is achievable using Apex code
Input schema
{
  "type": "object",
  "properties": {
    "apexCode": {
      "type": "string",
      "description": "Apex code to execute anonymously"
    },
    "logLevel": {
      "type": "string",
      "enum": [
        "NONE",
        "ERROR",
        "WARN",
        "INFO",
        "DEBUG",
        "FINE",
        "FINER",
        "FINEST"
      ],
      "description": "Log level for debug logs (optional, defaults to DEBUG)"
    }
  },
  "required": [
    "apexCode"
  ]
}
salesforce_list_report_foldersList all report folders in Salesforce. Use this to discover available folders before listing reports. NOTE: You may only see folders that you created and the "unfiled$public" folder. Standard folders like "Activity Reports" may not appear depending on permissions.
Input schema
{
  "type": "object",
  "properties": {}
}
salesforce_list_report_typesList available report types in Salesforce. Report types determine which objects can be used as the basis for reports (e.g., Opportunity, Account, Contact, or custom objects).
Input schema
{
  "type": "object",
  "properties": {
    "searchPattern": {
      "type": "string",
      "description": "Optional search pattern to filter report types by name"
    }
  }
}
salesforce_list_reportsList reports in Salesforce folders. IMPORTANT: Reports in Salesforce are organized in folders. This tool will: - If folder is specified: List reports in that specific folder - If no folder specified: Check common folders ("unfiled$public" and "Private Reports") - Cannot list ALL reports across all folders in one call (Salesforce API limitation) TIP: Use salesforce_list_report_folders first to discover available folders, then call this tool with specific folder names.
Input schema
{
  "type": "object",
  "properties": {
    "folder": {
      "type": "string",
      "description": "Folder name to list reports from (e.g., \"unfiled$public\", \"Private Reports\"). If not specified, will check common folders."
    },
    "searchPattern": {
      "type": "string",
      "description": "Optional search pattern to filter reports by name"
    }
  }
}
salesforce_manage_debug_logsManage debug logs for Salesforce users - enable, disable, or retrieve logs. Examples: 1. Enable debug logs for a user: { "operation": "enable", "username": "user@example.com", "logLevel": "DEBUG", "expirationTime": 30 } 2. Disable debug logs for a user: { "operation": "disable", "username": "user@example.com" } 3. Retrieve debug logs for a user: { "operation": "retrieve", "username": "user@example.com", "limit": 5 } 4. Retrieve a specific log with full content: { "operation": "retrieve", "username": "user@example.com", "logId": "07L1g000000XXXXEAA0", "includeBody": true } Notes: - The operation must be one of: 'enable', 'disable', or 'retrieve' - The username parameter is required for all operations - For 'enable' operation, logLevel is optional (defaults to 'DEBUG') - Log levels: NONE, ERROR, WARN, INFO, DEBUG, FINE, FINER, FINEST - expirationTime is optional for 'enable' operation (minutes until expiration, defaults to 30) - limit is optional for 'retrieve' operation (maximum number of logs to return, defaults to 10) - logId is optional for 'retrieve' operation (to get a specific log) - includeBody is optional for 'retrieve' operation (to include the full log content, defaults to false) - The tool validates that the specified user exists before performing operations - If logLevel is not specified when enabling logs, the tool will ask for clarification
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "enable",
        "disable",
        "retrieve"
      ],
      "description": "Operation to perform on debug logs"
    },
    "username": {
      "type": "string",
      "description": "Username of the Salesforce user"
    },
    "logLevel": {
      "type": "string",
      "enum": [
        "NONE",
        "ERROR",
        "WARN",
        "INFO",
        "DEBUG",
        "FINE",
        "FINER",
        "FINEST"
      ],
      "description": "Log level for debug logs (required for 'enable' operation)"
    },
    "expirationTime": {
      "type": "number",
      "description": "Minutes until the debug log configuration expires (optional, defaults to 30)"
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of logs to retrieve (optional, defaults to 10)"
    },
    "logId": {
      "type": "string",
      "description": "ID of a specific log to retrieve (optional)"
    },
    "includeBody": {
      "type": "boolean",
      "description": "Whether to include the full log content (optional, defaults to false)"
    }
  },
  "required": [
    "operation",
    "username"
  ]
}
salesforce_manage_fieldCreate new custom fields or modify existing fields on any Salesforce object: - Field Types: Text, Number, Date, Lookup, Master-Detail, Picklist etc. - Properties: Required, Unique, External ID, Length, Scale etc. - Relationships: Create lookups and master-detail relationships - Automatically grants Field Level Security to System Administrator (or specified profiles) Examples: Add Rating__c picklist to Account, Create Account lookup on Custom Object Note: Use grantAccessTo parameter to specify profiles, defaults to System Administrator
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "create",
        "update"
      ],
      "description": "Whether to create new field or update existing"
    },
    "objectName": {
      "type": "string",
      "description": "API name of the object to add/modify the field"
    },
    "fieldName": {
      "type": "string",
      "description": "API name for the field (without __c suffix)"
    },
    "label": {
      "type": "string",
      "description": "Label for the field",
      "optional": true
    },
    "type": {
      "type": "string",
      "enum": [
        "Checkbox",
        "Currency",
        "Date",
        "DateTime",
        "Email",
        "Number",
        "Percent",
        "Phone",
        "Picklist",
        "MultiselectPicklist",
        "Text",
        "TextArea",
        "LongTextArea",
        "Html",
        "Url",
        "Lookup",
        "MasterDetail"
      ],
      "description": "Field type (required for create)",
      "optional": true
    },
    "required": {
      "type": "boolean",
      "description": "Whether the field is required",
      "optional": true
    },
    "unique": {
      "type": "boolean",
      "description": "Whether the field value must be unique",
      "optional": true
    },
    "externalId": {
      "type": "boolean",
      "description": "Whether the field is an external ID",
      "optional": true
    },
    "length": {
      "type": "number",
      "description": "Length for text fields",
      "optional": true
    },
    "precision": {
      "type": "number",
      "description": "Precision for numeric fields",
      "optional": true
    },
    "scale": {
      "type": "number",
      "description": "Scale for numeric fields",
      "optional": true
    },
    "referenceTo": {
      "type": "string",
      "description": "API name of the object to reference (for Lookup/MasterDetail)",
      "optional": true
    },
    "relationshipLabel": {
      "type": "string",
      "description": "Label for the relationship (for Lookup/MasterDetail)",
      "optional": true
    },
    "relationshipName": {
      "type": "string",
      "description": "API name for the relationship (for Lookup/MasterDetail)",
      "optional": true
    },
    "deleteConstraint": {
      "type": "string",
      "enum": [
        "Cascade",
        "Restrict",
        "SetNull"
      ],
      "description": "Delete constraint for Lookup fields",
      "optional": true
    },
    "picklistValues": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string"
          },
          "isDefault": {
            "type": "boolean",
            "optional": true
          }
        }
      },
      "description": "Values for Picklist/MultiselectPicklist fields",
      "optional": true
    },
    "description": {
      "type": "string",
      "description": "Description of the field",
      "optional": true
    },
    "grantAccessTo": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Profile names to grant field access to (defaults to ['System Administrator'])",
      "optional": true
    }
  },
  "required": [
    "operation",
    "objectName",
    "fieldName"
  ]
}
salesforce_manage_field_permissionsManage Field Level Security (Field Permissions) for custom and standard fields. - Grant or revoke read/edit access to fields for specific profiles or permission sets - View current field permissions - Bulk update permissions for multiple profiles Examples: 1. Grant System Administrator access to a field 2. Give read-only access to a field for specific profiles 3. Check which profiles have access to a field
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "grant",
        "revoke",
        "view"
      ],
      "description": "Operation to perform on field permissions"
    },
    "objectName": {
      "type": "string",
      "description": "API name of the object (e.g., 'Account', 'Custom_Object__c')"
    },
    "fieldName": {
      "type": "string",
      "description": "API name of the field (e.g., 'Custom_Field__c')"
    },
    "profileNames": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Names of profiles to grant/revoke access (e.g., ['System Administrator', 'Sales User'])",
      "optional": true
    },
    "readable": {
      "type": "boolean",
      "description": "Grant/revoke read access (default: true)",
      "optional": true
    },
    "editable": {
      "type": "boolean",
      "description": "Grant/revoke edit access (default: true)",
      "optional": true
    }
  },
  "required": [
    "operation",
    "objectName",
    "fieldName"
  ]
}
salesforce_manage_objectCreate new custom objects or modify existing ones in Salesforce: - Create: New custom objects with fields, relationships, and settings - Update: Modify existing object settings, labels, sharing model Examples: Create Customer_Feedback__c object, Update object sharing settings Note: Changes affect metadata and require proper permissions
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "create",
        "update"
      ],
      "description": "Whether to create new object or update existing"
    },
    "objectName": {
      "type": "string",
      "description": "API name for the object (without __c suffix)"
    },
    "label": {
      "type": "string",
      "description": "Label for the object"
    },
    "pluralLabel": {
      "type": "string",
      "description": "Plural label for the object"
    },
    "description": {
      "type": "string",
      "description": "Description of the object",
      "optional": true
    },
    "nameFieldLabel": {
      "type": "string",
      "description": "Label for the name field",
      "optional": true
    },
    "nameFieldType": {
      "type": "string",
      "enum": [
        "Text",
        "AutoNumber"
      ],
      "description": "Type of the name field",
      "optional": true
    },
    "nameFieldFormat": {
      "type": "string",
      "description": "Display format for AutoNumber field (e.g., 'A-{0000}')",
      "optional": true
    },
    "sharingModel": {
      "type": "string",
      "enum": [
        "ReadWrite",
        "Read",
        "Private",
        "ControlledByParent"
      ],
      "description": "Sharing model for the object",
      "optional": true
    }
  },
  "required": [
    "operation",
    "objectName"
  ]
}
salesforce_query_recordsQuery records from any Salesforce object using SOQL, including relationship queries. NOTE: For queries with GROUP BY, aggregate functions (COUNT, SUM, AVG, etc.), or HAVING clauses, use salesforce_aggregate_query instead. Examples: 1. Parent-to-child query (e.g., Account with Contacts): - objectName: "Account" - fields: ["Name", "(SELECT Id, FirstName, LastName FROM Contacts)"] 2. Child-to-parent query (e.g., Contact with Account details): - objectName: "Contact" - fields: ["FirstName", "LastName", "Account.Name", "Account.Industry"] 3. Multiple level query (e.g., Contact -> Account -> Owner): - objectName: "Contact" - fields: ["Name", "Account.Name", "Account.Owner.Name"] 4. Related object filtering: - objectName: "Contact" - fields: ["Name", "Account.Name"] - whereClause: "Account.Industry = 'Technology'" Note: When using relationship fields: - Use dot notation for parent relationships (e.g., "Account.Name") - Use subqueries in parentheses for child relationships (e.g., "(SELECT Id FROM Contacts)") - Custom relationship fields end in "__r" (e.g., "CustomObject__r.Name")
Input schema
{
  "type": "object",
  "properties": {
    "objectName": {
      "type": "string",
      "description": "API name of the object to query"
    },
    "fields": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of fields to retrieve, including relationship fields"
    },
    "whereClause": {
      "type": "string",
      "description": "WHERE clause, can include conditions on related objects",
      "optional": true
    },
    "orderBy": {
      "type": "string",
      "description": "ORDER BY clause, can include fields from related objects",
      "optional": true
    },
    "limit": {
      "type": "number",
      "description": "Maximum number of records to return",
      "optional": true
    }
  },
  "required": [
    "objectName",
    "fields"
  ]
}
salesforce_read_apexRead Apex classes from Salesforce. Examples: 1. Read a specific Apex class by name: { "className": "AccountController" } 2. List all Apex classes with an optional name pattern: { "namePattern": "Controller" } 3. Get metadata about Apex classes: { "includeMetadata": true, "namePattern": "Trigger" } 4. Use wildcards in name patterns: { "namePattern": "Account*Cont*" } Notes: - When className is provided, the full body of that specific class is returned - When namePattern is provided, all matching class names are returned (without body) - Use includeMetadata to get additional information like API version, length, and last modified date - If neither className nor namePattern is provided, all Apex class names will be listed - Wildcards are supported in namePattern: * (matches any characters) and ? (matches a single character)
Input schema
{
  "type": "object",
  "properties": {
    "className": {
      "type": "string",
      "description": "Name of a specific Apex class to read"
    },
    "namePattern": {
      "type": "string",
      "description": "Pattern to match Apex class names (supports wildcards * and ?)"
    },
    "includeMetadata": {
      "type": "boolean",
      "description": "Whether to include metadata about the Apex classes"
    }
  }
}
salesforce_read_apex_triggerRead Apex triggers from Salesforce. Examples: 1. Read a specific Apex trigger by name: { "triggerName": "AccountTrigger" } 2. List all Apex triggers with an optional name pattern: { "namePattern": "Account" } 3. Get metadata about Apex triggers: { "includeMetadata": true, "namePattern": "Contact" } 4. Use wildcards in name patterns: { "namePattern": "Account*" } Notes: - When triggerName is provided, the full body of that specific trigger is returned - When namePattern is provided, all matching trigger names are returned (without body) - Use includeMetadata to get additional information like API version, object type, and last modified date - If neither triggerName nor namePattern is provided, all Apex trigger names will be listed - Wildcards are supported in namePattern: * (matches any characters) and ? (matches a single character)
Input schema
{
  "type": "object",
  "properties": {
    "triggerName": {
      "type": "string",
      "description": "Name of a specific Apex trigger to read"
    },
    "namePattern": {
      "type": "string",
      "description": "Pattern to match Apex trigger names (supports wildcards * and ?)"
    },
    "includeMetadata": {
      "type": "boolean",
      "description": "Whether to include metadata about the Apex triggers"
    }
  }
}
salesforce_read_reportRead detailed metadata for a Salesforce report including columns, filters, groupings, and chart configuration. Use this to inspect existing reports and understand their structure.
Input schema
{
  "type": "object",
  "properties": {
    "reportName": {
      "type": "string",
      "description": "Full name of the report (e.g., \"unfiled$public/Report_Name\" or just \"Report_Name\")"
    }
  },
  "required": [
    "reportName"
  ]
}
salesforce_search_allSearch across multiple Salesforce objects using SOSL (Salesforce Object Search Language). Examples: 1. Basic search across all objects: { "searchTerm": "John", "objects": [ { "name": "Account", "fields": ["Name"], "limit": 10 }, { "name": "Contact", "fields": ["FirstName", "LastName", "Email"] } ] } 2. Advanced search with filters: { "searchTerm": "Cloud*", "searchIn": "NAME FIELDS", "objects": [ { "name": "Account", "fields": ["Name", "Industry"], "orderBy": "Name DESC", "where": "Industry = 'Technology'" } ], "withClauses": [ { "type": "NETWORK", "value": "ALL NETWORKS" }, { "type": "SNIPPET", "fields": ["Description"] } ] } Notes: - Use * and ? for wildcards in search terms - Each object can have its own WHERE, ORDER BY, and LIMIT clauses - Support for WITH clauses: DATA CATEGORY, DIVISION, METADATA, NETWORK, PRICEBOOKID, SNIPPET, SECURITY_ENFORCED - "updateable" and "viewable" options control record access filtering
Input schema
{
  "type": "object",
  "properties": {
    "searchTerm": {
      "type": "string",
      "description": "Text to search for (supports wildcards * and ?)"
    },
    "searchIn": {
      "type": "string",
      "enum": [
        "ALL FIELDS",
        "NAME FIELDS",
        "EMAIL FIELDS",
        "PHONE FIELDS",
        "SIDEBAR FIELDS"
      ],
      "description": "Which fields to search in",
      "optional": true
    },
    "objects": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "API name of the object"
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Fields to return for this object"
          },
          "where": {
            "type": "string",
            "description": "WHERE clause for this object",
            "optional": true
          },
          "orderBy": {
            "type": "string",
            "description": "ORDER BY clause for this object",
            "optional": true
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of records to return for this object",
            "optional": true
          }
        },
        "required": [
          "name",
          "fields"
        ]
      },
      "description": "List of objects to search and their return fields"
    },
    "withClauses": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "DATA CATEGORY",
              "DIVISION",
              "METADATA",
              "NETWORK",
              "PRICEBOOKID",
              "SNIPPET",
              "SECURITY_ENFORCED"
            ]
          },
          "value": {
            "type": "string",
            "description": "Value for the WITH clause",
            "optional": true
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Fields for SNIPPET clause",
            "optional": true
          }
        },
        "required": [
          "type"
        ]
      },
      "description": "Additional WITH clauses for the search",
      "optional": true
    },
    "updateable": {
      "type": "boolean",
      "description": "Return only updateable records",
      "optional": true
    },
    "viewable": {
      "type": "boolean",
      "description": "Return only viewable records",
      "optional": true
    }
  },
  "required": [
    "searchTerm",
    "objects"
  ]
}
salesforce_search_objectsSearch for Salesforce standard and custom objects by name pattern. Examples: 'Account' will find Account, AccountHistory; 'Order' will find WorkOrder, ServiceOrder__c etc.
Input schema
{
  "type": "object",
  "properties": {
    "searchPattern": {
      "type": "string",
      "description": "Search pattern to find objects (e.g., 'Account Coverage' will find objects like 'AccountCoverage__c')"
    }
  },
  "required": [
    "searchPattern"
  ]
}
salesforce_write_apexCreate or update Apex classes in Salesforce. Examples: 1. Create a new Apex class: { "operation": "create", "className": "AccountService", "apiVersion": "58.0", "body": "public class AccountService { public static void updateAccounts() { /* implementation */ } }" } 2. Update an existing Apex class: { "operation": "update", "className": "AccountService", "body": "public class AccountService { public static void updateAccounts() { /* updated implementation */ } }" } Notes: - The operation must be either 'create' or 'update' - For 'create' operations, className and body are required - For 'update' operations, className and body are required - apiVersion is optional for 'create' (defaults to the latest version) - The body must be valid Apex code - The className in the body must match the className parameter - Status information is returned after successful operations
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "create",
        "update"
      ],
      "description": "Whether to create a new class or update an existing one"
    },
    "className": {
      "type": "string",
      "description": "Name of the Apex class to create or update"
    },
    "apiVersion": {
      "type": "string",
      "description": "API version for the Apex class (e.g., '58.0')"
    },
    "body": {
      "type": "string",
      "description": "Full body of the Apex class"
    }
  },
  "required": [
    "operation",
    "className",
    "body"
  ]
}
salesforce_write_apex_triggerCreate or update Apex triggers in Salesforce. Examples: 1. Create a new Apex trigger: { "operation": "create", "triggerName": "AccountTrigger", "objectName": "Account", "apiVersion": "58.0", "body": "trigger AccountTrigger on Account (before insert, before update) { /* implementation */ }" } 2. Update an existing Apex trigger: { "operation": "update", "triggerName": "AccountTrigger", "body": "trigger AccountTrigger on Account (before insert, before update, after update) { /* updated implementation */ }" } Notes: - The operation must be either 'create' or 'update' - For 'create' operations, triggerName, objectName, and body are required - For 'update' operations, triggerName and body are required - apiVersion is optional for 'create' (defaults to the latest version) - The body must be valid Apex trigger code - The triggerName in the body must match the triggerName parameter - The objectName in the body must match the objectName parameter (for 'create') - Status information is returned after successful operations
Input schema
{
  "type": "object",
  "properties": {
    "operation": {
      "type": "string",
      "enum": [
        "create",
        "update"
      ],
      "description": "Whether to create a new trigger or update an existing one"
    },
    "triggerName": {
      "type": "string",
      "description": "Name of the Apex trigger to create or update"
    },
    "objectName": {
      "type": "string",
      "description": "Name of the Salesforce object the trigger is for (required for 'create')"
    },
    "apiVersion": {
      "type": "string",
      "description": "API version for the Apex trigger (e.g., '58.0')"
    },
    "body": {
      "type": "string",
      "description": "Full body of the Apex trigger"
    }
  },
  "required": [
    "operation",
    "triggerName",
    "body"
  ]
}

Resources 0

  • None observed.

Resource templates 0

  • None observed.

Prompts 0

  • None observed.

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

Salesforce MCP Server (Extended) MCP Server questions

How do I install Salesforce MCP Server (Extended) MCP Server?

Install the selected package version with: npm install --save-exact @boejucci/mcp-server-salesforce@1.0.5

What tools does Salesforce MCP Server (Extended) MCP Server provide?

Salesforce MCP Server (Extended) MCP Server exposed 21 tools during independent protocol observation, including salesforce_aggregate_query, salesforce_create_report, salesforce_describe_object, salesforce_describe_report_type, salesforce_dml_records, salesforce_execute_anonymous, salesforce_list_report_folders, salesforce_list_report_types, and others.

Is Salesforce MCP Server (Extended) MCP Server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Company and product intelligence

These internal links are derived from strong identity fields such as the implementation name, package, repository, vendor, and listing name—not generic description prose.

Associated company landscape

Salesforce intelligence →

Association is based on retained identity fields; it does not by itself prove first-party publication.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Official vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.