模型上下文协议(MCP)服务器,用于向像 Claude Desktop 这样的大型语言模型工具提供 Salesforce CLI 功能。
此 MCP 服务器封装了 Salesforce CLI (sf) 命令行工具,并将其命令作为 MCP 工具和资源暴露出来,允许由大型语言模型驱动的代理执行以下操作:
sf)# 克隆仓库
git clone <repository-url>
cd sfMcp
# 安装依赖
npm install
# 基本用法
npm start
# 带项目根目录
npm start /path/to/project1 /path/to/project2
# 或使用便捷脚本
npm run with-roots /path/to/project1 /path/to/project2
# 作为带有根目录的 npx 包
npx -y codefriar/sf-mcp /path/to/project1 /path/to/project2
MCP 服务器使用 stdio 传输,可以与 MCP 客户端如 MCP Inspector 或 Claude Desktop 一起使用。
要在 Claude Desktop 的 .claude.json 配置中设置此 MCP:
{
"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"
]
}
}
}
# 监视模式(文件更改时重新编译)
npm run dev
# 在另一个终端
npm start [可选项目根目录...]
此 MCP 服务器提供了 Salesforce CLI 命令作为 MCP 工具。它会自动发现并注册来自 Salesforce CLI 的所有可用命令,并且特别实现了最常用的命令。
sf_version - 获取 Salesforce CLI 版本信息sf_help - 获取 Salesforce CLI 命令的帮助信息sf_cache_clear - 清除命令发现缓存sf_cache_refresh - 刷新命令发现缓存对于需要 Salesforce 项目上下文的命令(例如部署),必须指定项目目录。 MCP 支持多个项目目录(根目录),类似于文件系统 MCP。
方法 1:通过命令行参数
# 使用项目根目录启动 MCP
npm start /path/to/project1 /path/to/project2
# 或
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 - 尝试从用户消息中检测项目目录示例用法:
# 设置具有名称的项目目录
sf_set_project_directory --directory=/path/to/your/sfdx/project --name=project1 --isDefault=true
# 列出所有已配置的根目录
sf_list_roots
# 或在消息中包含:
"请将 /path/to/your/sfdx/project 中的 apex 代码部署到我的沙盒组织"
方法 3:Claude Desktop 配置
按照下面所述在 .claude.json 中配置项目根目录。
您可以在特定项目根目录中执行命令:
# 使用资源 URI
sf://roots/project1/commands/project deploy start --sourcedir=force-app
# 使用 rootName 参数
sf_project_deploy_start --sourcedir=force-app --rootName=project1
项目目录必须为诸如部署、源检索和其他特定于项目的操作指定。 如果配置了多个根目录,则除非另有指定,否则将使用默认根目录。
以下命令特别实现并保证工作:
sf_org_list - 列出 Salesforce 组织
json, verbosesf_auth_list_orgs - 列出已认证的 Salesforce 组织
json, verbosesf_org_display - 显示有关组织的详细信息
targetusername, jsonsf_org_open - 在浏览器中打开一个组织
targetusername, path, urlonlysf_apex_run - 运行匿名 Apex 代码
targetusername, file, apexcode, jsonsf_apex_test_run - 运行 Apex 测试
targetusername, testnames, suitenames, classnames, jsonsf_data_query - 执行 SOQL 查询
targetusername, query, jsonsf_schema_list_objects - 列出组织中的 sObjects
targetusername, jsonsf_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 - 获取 apex 日志sf_org_login_web - 使用 web 流程登录组织服务器还会为常见的嵌套命令创建简化别名:
sf_get 作为 sf_apex_log_get 的别名sf_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 以获取所有可用命令的完整列表对于需要 Salesforce 项目上下文的命令:
sf_set_project_directory 配置了任何项目根目录特定于项目的命令(如部署、检索等)将自动在适当的项目目录中运行。 对于不需要项目上下文的命令,工作目录无关紧要。
您可以通过以下方式在特定项目根目录中执行命令:
sf://roots/{rootName}/commands/{command}rootName 参数(内部实现细节)sf_set_project_directory --isDefault=true 设置特定根目录为默认值为了提高启动性能,MCP 服务器缓存发现的命令:
~/.sf-mcp/command-cache.jsonsf_cache_refresh 更新缓存服务器首次运行时会进行完全的命令发现,这可能需要一些时间。如果您遇到缺少命令或缓存问题:
rm ~/.sf-mcp/command-cache.jsonnpm start这将强制完全重新发现所有命令,使用官方 CLI 元数据。
如果某些命令仍然缺失,或者您已安装新的 SF CLI 插件:
sf_cache_refresh 工具Salesforce CLI 具有分层命令结构,可以达到几级深度。此 MCP 服务器通过以下方式处理这些嵌套命令:
apex:log:get → sf_apex_log_get)sf_get 作为 sf_apex_log_get 的别名)sf commands --json 中的官方命令结构嵌套主题命令在可能的情况下两次注册——一次使用完整的层次结构名称,一次使用简化的别名, 使其更容易发现和使用。
ISC