Salesforce CLI MCP Server

46
17
  • Linux
  • Apple

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 组织凭据

安装

# 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 Inspector或 Claude Desktop)一起使用。

在 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" ] } } }

发展

# 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 - 刷新命令发现缓存

项目目录管理(Roots)

对于需要 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

当以这种方式配置时,根将自动命名为root1root2等,其中第一个设置为默认值。

方法 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 组织
    • 参数: jsonverbose
  • sf_auth_list_orgs - 列出经过身份验证的 Salesforce 组织
    • 参数: jsonverbose
  • sf_org_display - 显示有关组织的详细信息
    • 参数: targetusernamejson
  • sf_org_open - 在浏览器中打开一个组织
    • 参数: targetusernamepathurlonly
Apex 代码
  • sf_apex_run - 运行匿名 Apex 代码
    • 参数: targetusernamefileapexcodejson
  • sf_apex_test_run - 运行 Apex 测试
    • 参数: targetusernametestnamessuitenamesclassnamesjson
数据管理
  • sf_data_query - 执行 SOQL 查询
    • 参数: targetusernamequeryjson
  • sf_schema_list_objects - 列出组织中的 sObjects
    • 参数: targetusernamejson
  • sf_schema_describe - 描述 Salesforce 对象
    • 参数: targetusernamesobjectjson
部署
  • sf_project_deploy_start - 将源部署到组织
    • 参数: targetusernamesourcedirjsonwait

动态发现的工具

服务器发现所有可用的 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} - 在特定项目根目录中执行命令

工作原理

  1. 在启动时,服务器会检查缓存的命令列表(存储在~/.sf-mcp/command-cache.json中)
  2. 如果存在有效的缓存,则使用它来注册命令;否则,将动态发现命令
  3. 在发现期间,服务器查询sf commands --json以获取可用命令的完整列表
  4. 命令元数据(包括参数和描述)直接从 JSON 输出中提取
  5. 所有命令均注册为具有适当参数模式的 MCP 工具
  6. 资源已注册用于帮助文档
  7. 当调用工具时,将执行相应的 Salesforce CLI 命令

项目根源管理

对于需要 Salesforce 项目上下文的命令:

  1. 服务器通过sf_set_project_directory检查是否已配置任何项目根目录
  2. 如果配置了多个根,则使用默认根,除非指定了特定的根
  3. 如果没有设置根目录,服务器将提示用户指定项目目录
  4. 命令在适当的项目目录中执行,确保正确的上下文
  5. 用户可以根据需要添加或在多个项目根之间切换

项目特定的命令(例如部署、检索等)将自动在相应的项目目录中运行。对于不需要项目上下文的命令,工作目录无关紧要。

您可以通过以下方式在特定项目根目录中执行命令:

  • 使用资源 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更新缓存
缓存问题故障排除

服务器首次运行会执行完整的命令发现,这可能需要一些时间。如果您遇到任何命令缺失或缓存问题:

  1. 停止 MCP 服务器(如果正在运行)
  2. 手动删除缓存文件: rm ~/.sf-mcp/command-cache.json
  3. 再次启动服务器: npm start

这将强制使用官方 CLI 元数据重新发现所有命令。

如果仍然缺少特定命令,或者您已安装了新的 SF CLI 插件:

  1. 使用 Claude Desktop 的sf_cache_refresh工具
  2. 停止并重新启动 MCP 服务器

处理嵌套主题

Salesforce CLI 具有多层级的命令结构。MCP 服务器通过以下方式处理这些嵌套命令:

  • 将冒号分隔的路径转换为下划线格式( apex:log:getsf_apex_log_get
  • 尽可能为常见的深度命令提供别名( sf_get用于sf_apex_log_get
  • 在工具名称中保留完整的命令层次结构
  • 使用sf commands --json

嵌套主题命令尽可能注册两次 - 一次使用完整的层次结构名称,一次使用简化的别名,以便更容易发现和使用它们。

执照

国际学习中心

You must be authenticated.

A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

将 Salesforce CLI 功能公开给 Claude Desktop 等 LLM 工具,允许 AI 代理执行 Salesforce 命令、管理组织、部署代码以及通过自然语言查询数据。

  1. Overview
    1. Requirements
      1. Installation
        1. Usage
          1. Starting the server
          2. Configuring in Claude Desktop
          3. Development
        2. Available Tools and Resources
          1. Core Tools
          2. Project Directory Management (Roots)
          3. Key Implemented Tools
          4. Dynamically Discovered Tools
          5. Resources
        3. How It Works
          1. Project Roots Management
          2. Command Caching
          3. Handling Nested Topics
        4. License

          Related MCP Servers

          • -
            security
            F
            license
            -
            quality
            A 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 -
            832
            1
            • Apple
            • Linux
          • -
            security
            A
            license
            -
            quality
            A 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 -
            23
            MIT License
            • Apple
            • Linux
          • -
            security
            F
            license
            -
            quality
            Allows 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
            • Linux
            • Apple
          • -
            security
            F
            license
            -
            quality
            Allows 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 -
            1
            Python
            • Linux
            • Apple

          View all related MCP servers

          ID: 1qi9nvwagh