Salesforce MCP Server
Salesforce MCP 服务器
一个 MCP(模型上下文协议)服务器实现,将 Claude 与 Salesforce 集成,从而实现与 Salesforce 数据和元数据的自然语言交互。此服务器允许 Claude 使用日常语言查询、修改和管理您的 Salesforce 对象和记录。
特征
对象和字段管理:使用自然语言创建和修改自定义对象和字段
智能对象搜索:使用部分名称匹配查找 Salesforce 对象
详细架构信息:获取任何对象的全面字段和关系详细信息
灵活的数据查询:使用关系支持和复杂过滤器查询记录
数据操作:轻松插入、更新、删除和插入记录
跨对象搜索:使用 SOSL 跨多个对象进行搜索
直观的错误处理:使用 Salesforce 特定的错误详细信息提供清晰的反馈
Related MCP server: Salesforce MCP Server
安装
npm install -g @surajadsul02/mcp-server-salesforce设置
Salesforce 身份验证
您可以使用以下两种方法之一向 Salesforce 进行身份验证:
1.用户名/密码验证
设置您的 Salesforce 凭据
获取您的安全令牌(从 Salesforce 设置重置)
按照配置部分所示配置环境变量
2. 使用消费者密钥/秘密进行 OAuth2 身份验证
在 Salesforce 中设置连接的应用程序
获取消费者密钥和消费者秘密
按照配置部分所示配置环境变量
IDE 集成
光标 IDE 设置
全局安装包:
npm install -g @surajadsul02/mcp-server-salesforce在 Cursor IDE
.cursor/mcp.json中配置 MCP 服务器:
使用 env 命令
{
"mcpServers": {
"salesforce": {
"command": "env",
"args": [
"SALESFORCE_USERNAME=your.actual.email@example.com",
"SALESFORCE_PASSWORD=YourActualPassword123",
"SALESFORCE_TOKEN=YourActualSecurityToken123",
"SALESFORCE_INSTANCE_URL=https://login.salesforce.com",
"npx",
"-y",
"@surajadsul02/mcp-server-salesforce"
]
}
}
}用于 Cursor 中的 OAuth2 身份验证
{
"mcpServers": {
"salesforce": {
"command": "env",
"args": [
"SALESFORCE_USERNAME=your.actual.email@example.com",
"SALESFORCE_PASSWORD=YourActualPassword123",
"SALESFORCE_TOKEN=YourActualSecurityToken123",
"SALESFORCE_INSTANCE_URL=https://login.salesforce.com",
"SALESFORCE_CONSUMER_KEY=YourConsumerKey",
"SALESFORCE_CONSUMER_SECRET=YourConsumerSecret",
"npx",
"-y",
"@surajadsul02/mcp-server-salesforce"
]
}
}
}Claude 桌面设置
全局安装包(如果尚未安装):
npm install -g @surajadsul02/mcp-server-salesforce添加到您的
claude_desktop_config.json:
用于用户名/密码验证
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["-y", "@surajadsul02/mcp-server-salesforce"],
"env": {
"SALESFORCE_USERNAME": "your_username",
"SALESFORCE_PASSWORD": "your_password",
"SALESFORCE_TOKEN": "your_security_token",
"SALESFORCE_INSTANCE_URL": "https://login.salesforce.com"
}
}
}
}对于 OAuth2 身份验证
{
"mcpServers": {
"salesforce": {
"command": "npx",
"args": ["-y", "@surajadsul02/mcp-server-salesforce"],
"env": {
"SALESFORCE_USERNAME": "your_username",
"SALESFORCE_PASSWORD": "your_password",
"SALESFORCE_CONSUMER_KEY": "your_consumer_key",
"SALESFORCE_CONSUMER_SECRET": "your_consumer_secret",
"SALESFORCE_INSTANCE_URL": "https://login.salesforce.com"
}
}
}
}配置文件位置:
macOS:
~/Library/Application Support/Claude Desktop/claude_desktop_config.jsonWindows:
%APPDATA%\Claude Desktop\claude_desktop_config.jsonLinux:
~/.config/Claude Desktop/claude_desktop_config.json
必需的环境变量
对于用户名/密码验证:
SALESFORCE_USERNAME:您的 Salesforce 用户名/电子邮件SALESFORCE_PASSWORD:您的 Salesforce 密码SALESFORCE_TOKEN:您的 Salesforce 安全令牌SALESFORCE_INSTANCE_URL:您的 Salesforce 实例 URL(可选,默认值: https://login.salesforce.com )
对于 OAuth2 身份验证:
SALESFORCE_USERNAME:您的 Salesforce 用户名/电子邮件SALESFORCE_PASSWORD:您的 Salesforce 密码SALESFORCE_CONSUMER_KEY:您连接的应用程序的消费者密钥SALESFORCE_CONSUMER_SECRET:您连接的应用程序的消费者秘密SALESFORCE_INSTANCE_URL:您的 Salesforce 实例 URL(可选,默认值: https://login.salesforce.com )
示例用法
搜索对象
"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"管理自定义对象
"Create a Customer Feedback object"
"Add a Rating field to the Feedback object"
"Update sharing settings for the Service Request object"跨对象搜索
"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"发展
从源代码构建
# Clone the repository
git clone https://github.com/surajadsul02/mcp-server-salesforce.git
# Navigate to directory
cd mcp-server-salesforce
# Install dependencies
npm install
# Build the project
npm run build故障排除
身份验证错误
验证您的凭证是否正确
对于用户名/密码验证:确保安全令牌正确
对于 OAuth2:验证消费者密钥和秘密
连接问题
检查您的 Salesforce 实例 URL
验证网络连接
确保正确的 API 访问权限
Cursor IDE 集成
配置更改后重新启动 Cursor IDE
检查开发者工具(帮助 > 切换开发者工具)中的错误消息
验证软件包是否已全局安装
Claude 桌面集成
验证配置文件位置
检查文件权限
配置更改后重新启动 Claude Desktop
确保环境变量设置正确
贡献
欢迎贡献代码!欢迎提交 Pull 请求。
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。
问题与支持
如果您遇到任何问题或需要支持,请在 GitHub 存储库上提交问题。
Available Tools
7 toolssalesforce_describe_objectA
Get 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.
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | API name of the object (e.g., 'Account', 'Contact', 'Custom_Object__c') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states that the tool returns all fields, relationships, and field properties, which clarifies the scope of information. It does not mention side effects, authentication, or output structure, but for a read-only describe operation this is minimal yet acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the primary action and resource in the first sentence and concrete examples in the second. It is front-loaded and contains no filler, making it highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter and no output schema, the description provides a sufficient overview of both input and output: it explains what the agent must provide (objectName) and what will be returned (all fields, relationships, field properties). It could detail the response format further, but for a simple describe endpoint this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter objectName is fully described in the schema with examples, yielding 100% schema coverage. The tool description adds its own examples ('Account', 'Case') that are redundant with the schema but do not introduce additional semantics. Thus the description contributes little beyond the structured field definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and identifies the resource as 'detailed schema metadata' for a Salesforce object. It clearly distinguishes from sibling tools like query_records or search_objects by focusing on object structure rather than data or search results. Examples with 'Account' and 'Case' reinforce the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys its use case: retrieving schema metadata for any Salesforce object. It does not explicitly reference alternative tools or when to avoid using it, but the context is clear enough for an agent to select it when needing object structure. The examples provide practical guidance but no exclusion statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salesforce_dml_recordsA
Perform 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
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Type of DML operation to perform | |
| objectName | Yes | API name of the object | |
| records | Yes | Array of records to process | |
| externalIdField | No | External ID field name for upsert operations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It adds useful context like 'requires Id' for update/delete and 'external ID field' for upsert, but doesn't disclose potential side effects (e.g., permanent deletion), permission requirements, or error handling behavior. This is a meaningful but incomplete disclosure for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear introductory line, a concise bulleted list of operations, and practical examples. Every sentence contributes meaning, and the format is scannable without excessive length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema, no annotations), the description covers the core operations, prerequisites, and use cases effectively. It lacks details about return values or failure modes, but for a DML tool with clear operation semantics, it provides sufficient context for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are documented. The description adds extra semantic value by explaining operation-specific requirements (e.g., update and delete require Id, upsert uses externalIdField), which enhances the schema's basic field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as performing DML operations (insert, update, delete, upsert) on Salesforce records, with a specific verb+resource structure. It distinguishes itself from sibling tools like salesforce_query_records and salesforce_search_objects by focusing on data manipulation rather than reading or describing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage context with examples for each operation (Insert new Accounts, Update Case status, Delete old records, Upsert based on custom external ID). It implicitly contrasts with read-only tools, though it doesn't explicitly state when not to use this tool or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salesforce_manage_fieldA
Create 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 Examples: Add Rating__c picklist to Account, Create Account lookup on Custom Object Note: Changes affect metadata and require proper permissions
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Whether to create new field or update existing | |
| objectName | Yes | API name of the object to add/modify the field | |
| fieldName | Yes | API name for the field (without __c suffix) | |
| label | No | Label for the field | |
| type | No | Field type (required for create) | |
| required | No | Whether the field is required | |
| unique | No | Whether the field value must be unique | |
| externalId | No | Whether the field is an external ID | |
| length | No | Length for text fields | |
| precision | No | Precision for numeric fields | |
| scale | No | Scale for numeric fields | |
| referenceTo | No | API name of the object to reference (for Lookup/MasterDetail) | |
| relationshipLabel | No | Label for the relationship (for Lookup/MasterDetail) | |
| relationshipName | No | API name for the relationship (for Lookup/MasterDetail) | |
| deleteConstraint | No | Delete constraint for Lookup fields | |
| picklistValues | No | Values for Picklist/MultiselectPicklist fields | |
| description | No | Description of the field |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates that this is a metadata mutation tool ('create new custom fields or modify existing fields'), specifies that 'changes affect metadata,' and notes permission requirements. It doesn't mention rate limits, side effects on existing data, or whether operations are reversible, but covers the essential safety and scope aspects for a metadata tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear opening statement followed by bullet-point categorization and specific examples. Every sentence earns its place by providing distinct value: the first sentence states the core purpose, the bullets organize parameter concepts, the examples illustrate use cases, and the note adds critical behavioral context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex metadata mutation tool with 17 parameters and no annotations or output schema, the description does well by covering purpose, scope, permission requirements, and parameter categories. It could be more complete by explicitly mentioning that this tool doesn't handle data values (unlike salesforce_dml_records) or describing typical response formats, but it provides sufficient context for an agent to understand the tool's role and basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all 17 parameters thoroughly. The description adds some value by categorizing parameters into 'Field Types,' 'Properties,' and 'Relationships,' which helps conceptual organization, but doesn't provide additional syntax, format, or constraint details beyond what's in the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('create new custom fields or modify existing fields') and identifies the resource ('any Salesforce object'). It distinguishes this tool from siblings like salesforce_dml_records (data manipulation) and salesforce_describe_object (metadata inspection) by focusing on field-level metadata management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool through examples ('Add Rating__c picklist to Account, Create Account lookup on Custom Object') and notes about prerequisites ('require proper permissions'). However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools, though the context implies it's for field metadata rather than data operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salesforce_manage_objectA
Create 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
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | Whether to create new object or update existing | |
| objectName | Yes | API name for the object (without __c suffix) | |
| label | No | Label for the object | |
| pluralLabel | No | Plural label for the object | |
| description | No | Description of the object | |
| nameFieldLabel | No | Label for the name field | |
| nameFieldType | No | Type of the name field | |
| nameFieldFormat | No | Display format for AutoNumber field (e.g., 'A-{0000}') | |
| sharingModel | No | Sharing model for the object |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The note 'Changes affect metadata and require proper permissions' discloses the mutation nature and permission requirement. However, the claim 'with fields, relationships, and settings' is not supported by the input schema (no fields or relationships parameters), which could mislead an agent about capabilities. This prevents a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear verb phrase, bulleted operations, illustrative examples, and a critical permission note. Every sentence contributes meaning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 9 parameters, no annotations, and no output schema, so the description must carry more weight. It gives high-level operations but fails to explain return behavior, error conditions, or the full scope of parameter usage. The unsupported 'relationships' claim further reduces completeness and trustworthiness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline would be 3. However, the description mentions creating objects 'with fields, relationships, and settings' but the schema offers no such parameters, adding misleading information. This overstates the tool's functionality and could lead to incorrect invocation, warranting a score below baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Create', 'modify') and resource ('custom objects in Salesforce'), clearly distinguishing this from sibling tools like search/query/describe. It states the two primary operations (create/update) with concrete examples, making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use the tool (creating or updating objects) with examples and a permission note. However, it does not explicitly exclude alternatives or mention when to choose sibling tools like salesforce_manage_field or salesforce_describe_object, so it falls short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salesforce_query_recordsA
Query records from any Salesforce object using SOQL, including relationship queries.
Examples:
Parent-to-child query (e.g., Account with Contacts):
objectName: "Account"
fields: ["Name", "(SELECT Id, FirstName, LastName FROM Contacts)"]
Child-to-parent query (e.g., Contact with Account details):
objectName: "Contact"
fields: ["FirstName", "LastName", "Account.Name", "Account.Industry"]
Multiple level query (e.g., Contact -> Account -> Owner):
objectName: "Contact"
fields: ["Name", "Account.Name", "Account.Owner.Name"]
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")
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | API name of the object to query | |
| fields | Yes | List of fields to retrieve, including relationship fields | |
| whereClause | No | WHERE clause, can include conditions on related objects | |
| orderBy | No | ORDER BY clause, can include fields from related objects | |
| limit | No | Maximum number of records to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by specifying the query language (SOQL), relationship query capabilities, and syntax rules for custom relationships. However, it doesn't mention important behavioral aspects like pagination, rate limits, authentication requirements, error handling, or what happens when queries return large result sets. The examples are helpful but don't cover all behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose statement. The examples are well-organized and directly relevant to understanding the tool's capabilities. While comprehensive, some information could be more concise - the relationship syntax rules might be condensed. Every sentence earns its place by clarifying SOQL query patterns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (SOQL queries with relationships, 5 parameters) and the absence of both annotations and output schema, the description does a decent job but has gaps. It covers the core functionality and parameter usage well through examples, but doesn't address return format, error conditions, performance considerations, or how results are structured (especially for nested relationship queries). For a query tool with no output schema, more information about response structure would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds significant value through the four detailed examples that show how parameters work together in practice, especially for relationship queries. It clarifies dot notation for parent relationships, subqueries for child relationships, and the '__r' suffix for custom relationships - all semantic details beyond what the schema provides. However, it doesn't cover all parameters equally (orderBy and limit get less attention).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Query records from any Salesforce object using SOQL, including relationship queries' - this is a specific verb ('Query') with clear resource ('records from any Salesforce object') and distinguishes from siblings like salesforce_dml_records (for data manipulation) and salesforce_search_all/search_objects (for search operations). The mention of SOQL and relationship queries further clarifies the technical approach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool (for SOQL queries with relationship support) and the examples demonstrate various query patterns. However, it doesn't explicitly state when NOT to use this tool or name specific alternatives among the sibling tools (like when to use salesforce_search_all instead). The guidance is strong but lacks explicit exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salesforce_search_allA
Search across multiple Salesforce objects using SOSL (Salesforce Object Search Language).
Examples:
Basic search across all objects: { "searchTerm": "John", "objects": [ { "name": "Account", "fields": ["Name"], "limit": 10 }, { "name": "Contact", "fields": ["FirstName", "LastName", "Email"] } ] }
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
| Name | Required | Description | Default |
|---|---|---|---|
| searchTerm | Yes | Text to search for (supports wildcards * and ?) | |
| searchIn | No | Which fields to search in | |
| objects | Yes | List of objects to search and their return fields | |
| withClauses | No | Additional WITH clauses for the search | |
| updateable | No | Return only updateable records | |
| viewable | No | Return only viewable records |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses important behavioral details: SOSL syntax, wildcard support, per-object WHERE/ORDER BY/LIMIT, WITH clause types, and access filtering via updateable/viewable. It stops short of stating read-only nature explicitly, but 'search' strongly implies it. Overall, it provides above-average transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than a minimal one, but the length is justified by the tool's complexity. It is front-loaded with a clear purpose, followed by structured examples and a concise bullet list of notes. Every section adds value, though some redundancy exists (e.g., wildcards are mentioned twice).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex with nested object parameters and optional WITH clauses. The description covers the multidimensional usage thoroughly with examples, notes, and feature lists, providing enough context for an agent to construct valid invocations. Given no output schema, the description is sufficiently complete for this search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, providing a solid baseline. The description goes beyond the schema by including two detailed examples that show how objects, withClauses, and wildcards are used together, and it clarifies the meaning of updateable/viewable. This significantly enriches parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement: 'Search across multiple Salesforce objects using SOSL (Salesforce Object Search Language).' This clearly identifies the tool's action, resource, and scope, and distinguishes it from sibling tools like salesforce_search_objects and salesforce_query_records by emphasizing multi-object SOSL search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this tool is for searching across multiple objects, with examples showing the expected structure. However, it does not explicitly reference alternatives or state when not to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salesforce_search_objectsA
Search for Salesforce standard and custom objects by name pattern. Examples: 'Account' will find Account, AccountHistory; 'Order' will find WorkOrder, ServiceOrder__c etc.
| Name | Required | Description | Default |
|---|---|---|---|
| searchPattern | Yes | Search pattern to find objects (e.g., 'Account Coverage' will find objects like 'AccountCoverage__c') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It explains the search action and gives examples of matches, but doesn't state whether the operation is read-only, its return format, or any limitations (e.g., case sensitivity, wildcard support). For a simple search tool, the core behavior is disclosed, but additional transparency is lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence stating the purpose and one sentence with examples. It is front-loaded with the verb and resource, and every word earns its place. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter and no output schema, the description covers the main purpose and gives examples. However, it omits specifics about how the pattern matching works (e.g., substring vs. whole word, case sensitivity) and what the output shape is (e.g., just names or full metadata). These gaps prevent it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter `searchPattern` has a 100% schema description coverage, including an example. The tool description reiterates and supplements with examples ('Account' will find Account, AccountHistory), but doesn't add significant new meaning beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search for Salesforce standard and custom objects by name pattern.' It provides concrete examples ('Account' will find Account, AccountHistory), which further clarifies the scope and distinguishes it from sibling tools like describe or query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear context of when to use this tool (searching objects by name pattern) and provides examples of the expected input/output. It doesn't explicitly mention alternative tools or exclusions, but the use case is unambiguous enough for an agent to decide when to call it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
salesforce_describe_object - First observed
salesforce_dml_records - First observed
salesforce_manage_field - First observed
salesforce_manage_object - First observed
salesforce_query_records - First observed
salesforce_search_all - First observed
salesforce_search_objects
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose with no overlap: describe_object for metadata, dml_records for data operations, manage_field/object for schema changes, query_records for SOQL, search_all for SOSL, and search_objects for object discovery. The descriptions explicitly differentiate their scopes, eliminating any confusion.
All tools follow a consistent 'salesforce_verb_noun' pattern with snake_case, such as salesforce_describe_object, salesforce_dml_records, and salesforce_query_records. This uniformity makes the toolset predictable and easy to navigate for an agent.
With 7 tools, the server is well-scoped for Salesforce operations, covering metadata, data manipulation, schema management, querying, and searching. Each tool serves a unique and essential function without redundancy, making the count ideal for the domain.
The toolset provides comprehensive coverage of Salesforce operations: metadata inspection (describe_object), full CRUD for data (dml_records), schema management (manage_field/object), querying (query_records), and searching (search_all/objects). There are no obvious gaps, supporting complete agent workflows from data to metadata.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server implementation that integrates Claude with Salesforce, enabling natural language interactions with Salesforce data and metadata for querying, modifying, and managing objects and records.153,554 npm168MIT
- AlicenseAqualityDmaintenanceAn MCP server implementation that integrates Claude with Salesforce, enabling natural language interactions with Salesforce data and metadata.852 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server implementation that integrates Claude/VS Code with Salesforce, enabling natural language interactions with your Salesforce data and metadata.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides comprehensive access to Salesforce Tooling API for metadata management, SOQL queries, code analysis, and debugging through Claude and other AI assistants.31 npm5MIT