Integrations
Wraps the Salesforce CLI to provide access to Salesforce org functionality including organization management, Apex code execution, data querying, schema exploration, and deployment capabilities.
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
嵌套主题命令尽可能注册两次 - 一次使用完整的层次结构名称,一次使用简化的别名,以便更容易发现和使用它们。
执照
国际学习中心
You must be authenticated.
将 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
Fused MCP Agentsofficial
-securityAlicense-qualityA Python-based MCP server that allows Claude and other LLMs to execute arbitrary Python code directly through your desktop Claude app, enabling data scientists to connect LLMs to APIs and executable code.Last updated -23MIT License- -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
- -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