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 CLI(
sf
)已安装并配置 - 在 CLI 中配置的 Salesforce 组织凭据
安装
用法
启动服务器
MCP 服务器使用 stdio 传输,可与 MCP 客户端(如MCP Inspector或 Claude Desktop)一起使用。
在 Claude Desktop 中配置
要在 Claude Desktop 的.claude.json
配置中配置此 MCP:
直接使用 npm 包:
发展
可用的工具和资源
此 MCP 服务器提供 Salesforce CLI 命令作为 MCP 工具。它会自动发现并注册 Salesforce CLI 中所有可用的命令,并专门实现最常用的命令。
核心工具
sf_version
- 获取 Salesforce CLI 版本信息sf_help
- 获取 Salesforce CLI 命令的帮助信息sf_cache_clear
- 清除命令发现缓存sf_cache_refresh
- 刷新命令发现缓存
项目目录管理(Roots)
对于需要 Salesforce 项目上下文的命令(例如部署),您必须指定项目目录。MCP 支持多个项目目录(根目录),类似于文件系统 MCP。
配置方法
方法 1:通过命令行参数
当以这种方式配置时,根将自动命名为root1
、 root2
等,其中第一个设置为默认值。
方法 2:使用 MCP 工具
sf_set_project_directory
- 设置用于命令的 Salesforce 项目目录- 参数:
directory
- 包含 sfdx-project.json 文件的目录路径name
-(可选)此项目根目录的名称description
- (可选)此项目根目录的描述isDefault
- (可选)将此根设置为命令执行的默认根
- 参数:
sf_list_roots
- 列出所有已配置的项目根目录sf_detect_project_directory
- 尝试从用户消息中检测项目目录
使用示例:
方法 3:Claude 桌面配置按照如下所述在.claude.json
中配置项目根。
使用项目根目录
您可以在特定的项目根目录中执行命令:
必须为部署、源代码检索和其他特定于项目的操作等命令指定项目目录。如果配置了多个根目录,则除非另有说明,否则将使用默认根目录。
关键实施工具
以下命令是专门实现的,并保证可以正常工作:
组织管理
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
- 列出组织中的 sObjects- 参数:
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
- 获取 apex 日志sf_org_login_web
- 使用 web flow 登录到组织
服务器还会尽可能为常见的嵌套命令创建简化的别名:
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
以获取可用命令的完整列表 - 命令元数据(包括参数和描述)直接从 JSON 输出中提取
- 所有命令均注册为具有适当参数模式的 MCP 工具
- 资源已注册用于帮助文档
- 当调用工具时,将执行相应的 Salesforce CLI 命令
项目根源管理
对于需要 Salesforce 项目上下文的命令:
- 服务器通过
sf_set_project_directory
检查是否已配置任何项目根目录 - 如果配置了多个根,则使用默认根,除非指定了特定的根
- 如果没有设置根目录,服务器将提示用户指定项目目录
- 命令在适当的项目目录中执行,确保正确的上下文
- 用户可以根据需要添加或在多个项目根之间切换
项目特定的命令(例如部署、检索等)将自动在相应的项目目录中运行。对于不需要项目上下文的命令,工作目录无关紧要。
您可以通过以下方式在特定项目根目录中执行命令:
- 使用资源 URI:
sf://roots/{rootName}/commands/{command}
- 为命令工具提供
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 插件:
- 使用 Claude Desktop 的
sf_cache_refresh
工具 - 停止并重新启动 MCP 服务器
处理嵌套主题
Salesforce CLI 具有多层级的命令结构。MCP 服务器通过以下方式处理这些嵌套命令:
- 将冒号分隔的路径转换为下划线格式(
apex:log:get
→sf_apex_log_get
) - 尽可能为常见的深度命令提供别名(
sf_get
用于sf_apex_log_get
) - 在工具名称中保留完整的命令层次结构
- 使用
sf commands --json
嵌套主题命令尽可能注册两次 - 一次使用完整的层次结构名称,一次使用简化的别名,以便更容易发现和使用它们。
执照
国际学习中心
local-only server
The server can only run on the client's local machine because it depends on local resources.
将 Salesforce CLI 功能公开给 Claude Desktop 等 LLM 工具,允许 AI 代理执行 Salesforce 命令、管理组织、部署代码以及通过自然语言查询数据。
Related MCP Servers
- -securityFlicense-qualityA server that connects AI coding assistants like Cursor and Cline to Apifox API definitions, allowing developers to implement API interfaces through natural language commands.Last updated -8321
- -securityFlicense-qualityAllows LLM tools like Claude Desktop and Cursor AI to access and summarize code files through a Model Context Protocol server, providing structured access to codebase content without manual copying.Last updated -TypeScript
ZeroPath MCP Serverofficial
-securityFlicense-qualityAllows developers to query security findings (SAST issues, secrets, patches) using natural language within AI-assisted tools like Claude Desktop, Cursor, and other MCP-compatible environments.Last updated -1Python- AsecurityAlicenseAqualityAn MCP server that enables running CLI for Microsoft 365 commands through GitHub Copilot Agent, allowing users to interact with Microsoft 365 services using natural language.Last updated -42TypeScriptMIT License