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
- -securityAlicense-qualityFacilitates integration with Claude Desktop to run AI agents and execute purchased actions without code, leveraging the Model Context Protocol framework.
- AsecurityAlicenseAqualityEnables natural language interaction with Azure services through Claude Desktop, supporting resource management, subscription handling, and tenant selection with secure authentication.Last updated -9715MIT License
- -security-license-qualityExposes CrewAI tools through a REST API that allows Claude and other LLMs to access web search functionality, data analysis capabilities, and custom CrewAI tools.
- -securityAlicense-qualityA server that integrates Confluence with Claude Desktop and other AI assistants, enabling natural language interactions with your Confluence documentation.Last updated -2MIT License