使用说明
Salesforce CLI MCP服务器
模型上下文协议(MCP)服务器,用于为Claude Desktop等LLM工具提供Salesforce CLI功能。
概述
此MCP服务器封装了Salesforce CLI(sf)命令行工具,并将其命令作为MCP工具和资源公开,允许LLM驱动的代理:
- 查看有关Salesforce CLI主题和命令的帮助信息
- 使用适当的参数执行Salesforce CLI命令
- 在AI工作流程中利用Salesforce CLI功能
需求
- Node.js 18+和npm
- Salesforce命令行界面(
sf)已安装并配置 - 您在CLI中配置的Salesforce组织凭据
安装
# Clone the repository
git clone <repository-url>
cd sfMcp
# Install dependencies
npm install
用法
启动服务器
# Basic usage
npm start
# With project roots
npm start /path/to/project1 /path/to/project2
# or using the convenience script
npm run with-roots /path/to/project1 /path/to/project2
# As an npx package with roots
npx -y codefriar/sf-mcp /path/to/project1 /path/to/project2
MCP服务器使用stdio传输,可以与MCP客户端一起使用 就像 MCP检查员 或克劳德桌面。
在Claude Desktop中配置
在Claude Desktop的配置中配置此MCP .claude.json 配置:
{
"tools": {
"salesforce": {
"command": "/path/to/node",
"args": [
"/path/to/sf-mcp/build/index.js",
"/path/to/project1",
"/path/to/project2"
]
}
}
}
直接使用npm包:
{
"tools": {
"salesforce": {
"command": "/path/to/npx",
"args": [
"-y",
"codefriar/sf-mcp",
"/path/to/project1",
"/path/to/project2"
]
}
}
}
发展
# Watch mode (recompiles on file changes)
npm run dev
# In another terminal
npm start [optional project roots...]
可用工具和资源
此MCP服务器提供Salesforce CLI命令作为MCP工具。它会自动发现并注册Salesforce CLI中的所有可用命令,并专门实现最常用的命令。
核心工具
sf_version-获取Salesforce CLI版本信息sf_help-获取Salesforce CLI命令的帮助信息sf_cache_clear-清除命令发现缓存sf_cache_refresh-刷新命令发现缓存
项目目录管理(根)
对于需要Salesforce项目上下文的命令(如部署),您必须指定项目目录。 MCP支持多个项目目录(根),类似于文件系统MCP。
配置方法
方法1:通过命令行参数
# Start the MCP with project roots
npm start /path/to/project1 /path/to/project2
# or
npx -y codefriar/sf-mcp /path/to/project1 /path/to/project2
以这种方式配置时,根将自动命名 root1, root2等等。,
第一个设置为默认值。
方法2:使用MCP工具
sf_set_project_directory-设置用于命令的Salesforce项目目录- 参数:
directory-包含sfdx-project.json文件的目录路径name-(可选)此项目根的名称description-(可选)此项目根的描述isDefault-(可选)将此根设置为命令执行的默认根
- 参数:
sf_list_roots-列出所有已配置的项目根目录sf_detect_project_directory-尝试从用户消息中检测项目目录
示例用法:
# Set project directory with a name
sf_set_project_directory --directory=/path/to/your/sfdx/project --name=project1 --isDefault=true
# List all configured roots
sf_list_roots
# Or include in your message:
"Please deploy the apex code from the project in /path/to/your/sfdx/project to my scratch org"
方法3:Claude桌面配置
在中配置项目根目录 .claude.json 如下所述。
使用项目根
您可以在特定的项目根目录中执行命令:
# Using resource URI
sf://roots/project1/commands/project deploy start --sourcedir=force-app
# Using rootName parameter
sf_project_deploy_start --sourcedir=force-app --rootName=project1
必须为部署等命令指定项目目录, 源检索和其他特定于项目的操作。 如果配置了多个根,除非另有说明,否则将使用默认根。
关键实施工具
以下命令是专门实现并保证工作的:
组织管理
sf_org_list-列出Salesforce组织- 参数:
json,verbose
- 参数:
sf_auth_list_orgs-列出经过身份验证的Salesforce组织- 参数:
json,verbose
- 参数:
sf_org_display-显示组织的详细信息- 参数:
targetusername,json
- 参数:
sf_org_open-在浏览器中打开一个组织- 参数:
targetusername,path,urlonly
- 参数:
Apex代码
sf_apex_run-运行匿名Apex代码- 参数:
targetusername,file,apexcode,json
- 参数:
sf_apex_test_run-运行Apex测试- 参数:
targetusername,testnames,suitenames,classnames,json
- 参数:
数据管理
sf_data_query-执行SOQL查询- 参数:
targetusername,query,json
- 参数:
sf_schema_list_objects-列出组织中的对象- 参数:
targetusername,json
- 参数:
sf_schema_describe-描述Salesforce对象- 参数:
targetusername,sobject,json
- 参数:
部署
sf_project_deploy_start-将源部署到组织- 参数:
targetusername,sourcedir,json,wait
- 参数:
动态发现的工具
服务器会发现所有可用的Salesforce CLI命令,并将其注册为工具,格式如下: sf_<topic>_<command>.
例如:
sf_apex_run-运行匿名Apex代码sf_data_query-执行SOQL查询
对于嵌套主题命令,工具名称包括带下划线的完整路径:
sf_apex_log_get-获取顶点日志sf_org_login_web-使用web flow登录组织
服务器还尽可能为常见的嵌套命令创建简化的别名:
sf_get作为别名sf_apex_log_getsf_web作为别名sf_org_login_web
可用命令因安装的Salesforce CLI插件而异。
注: 命令发现被缓存以提高启动性能。如果安装新的SF CLI插件,请使用
sf_cache_refresh工具更新缓存,然后重新启动服务器。
资源
以下资源提供了有关Salesforce CLI的文档:
sf://help-主要CLI文档sf://topics/{topic}/help-主题帮助文档sf://commands/{command}/help-命令帮助文档sf://topics/{topic}/commands/{command}/help-主题命令帮助文档sf://version-版本信息sf://roots-列出所有已配置的项目根目录sf://roots/{root}/commands/{command}-在特定项目根目录中执行命令
运作原理
- 启动时,服务器检查缓存的命令列表(存储在
~/.sf-mcp/command-cache.json) - 如果存在有效的缓存,则用于注册命令;否则,命令将被动态发现
- 在发现过程中,服务器会进行查询
sf commands --json获取可用命令的完整列表 - 命令元数据(包括参数和描述)直接从JSON输出中提取
- 所有命令都注册为具有适当参数模式的MCP工具
- 资源已注册以获取帮助文档
- 调用工具时,将执行相应的Salesforce CLI命令
项目根管理
对于需要Salesforce项目上下文的命令:
- 服务器检查是否已通过配置任何项目根
sf_set_project_directory - 如果配置了多个根,除非指定了特定的根,否则它将使用默认根
- 如果没有设置根目录,服务器将提示用户指定项目目录
- 命令在相应的项目目录中执行,确保上下文正确
- 用户可以根据需要添加或在多个项目根之间切换
特定于项目的命令(如部署、检索等) 将在相应的项目目录中自动运行。 对于不需要项目上下文的命令,工作目录并不重要。
您可以通过以下方式在特定项目根目录中执行命令:
- 使用资源URI:
sf://roots/{rootName}/commands/{command} - 提供a
rootName命令工具的参数(内部实现细节) - 将特定根设置为默认根
sf_set_project_directory --isDefault=true
命令缓存
为了提高启动性能,MCP服务器缓存发现的命令:
- 缓存存储在
~/.sf-mcp/command-cache.json - 它包括所有主题、命令、参数和描述
- 缓存具有验证时间戳和SF CLI版本检查
- 默认情况下,缓存将在7天后过期
- 安装新的Salesforce CLI插件时,请使用
sf_cache_refresh更新缓存
缓存问题疑难解答
服务器的第一次运行执行完整的命令发现,这可能需要一些时间。如果遇到缺少命令或缓存问题:
- 停止MCP服务器(如果正在运行)
- 手动删除缓存文件:
rm ~/.sf-mcp/command-cache.json - 重新启动服务器:
npm start
这将强制使用官方CLI元数据重新发现所有命令。
如果仍然缺少特定命令,或者您安装了新的SF CLI插件:
- 使用
sf_cache_refresh来自Claude Desktop的工具 - 停止并重新启动MCP服务器
处理嵌套主题
Salesforce CLI具有层次化的命令结构,可以有几个级别。此MCP服务器通过以下方式处理这些嵌套命令:
- 将冒号分隔的路径转换为下划线格式(
apex:log:get→sf_apex_log_get) - 尽可能为常见的深度命令提供别名(
sf_get为了sf_apex_log_get) - 在工具名称中保留完整的命令层次结构
- 使用来自的官方指挥结构
sf commands --json
嵌套的主题命令尽可能注册两次——一次使用完整的层次结构名称,一次使用简化的别名, 使它们更容易发现和使用。
许可证
国际协调委员会
