Salesforce CLI MCP Server

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 서버

Claude Desktop과 같은 LLM 도구에 Salesforce CLI 기능을 제공하기 위한 MCP(Model Context Protocol) 서버입니다.

개요

이 MCP 서버는 Salesforce CLI( sf ) 명령줄 도구를 래핑하고 해당 명령을 MCP 도구 및 리소스로 노출하여 LLM 기반 에이전트가 다음을 수행할 수 있도록 합니다.

  • Salesforce CLI 항목 및 명령에 대한 도움말 정보 보기
  • 적절한 매개변수를 사용하여 Salesforce CLI 명령을 실행합니다.
  • AI 워크플로에서 Salesforce CLI 기능 활용

요구 사항

  • Node.js 18+ 및 npm
  • Salesforce CLI( sf ) 설치 및 구성
  • CLI에서 구성된 Salesforce 조직 자격 증명

설치

지엑스피1

용법

서버 시작

# 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 서버는 MCP Inspector 나 Claude Desktop과 같은 MCP 클라이언트와 함께 사용할 수 있는 stdio 전송을 사용합니다.

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 - 명령 검색 캐시 새로 고침

프로젝트 디렉토리 관리(루트)

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

이런 방식으로 구성하면 루트는 자동으로 root1 , root2 등으로 지정되고 첫 번째 루트가 기본값으로 설정됩니다.

방법 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 조직 목록
    • 매개변수: json , verbose
  • sf_auth_list_orgs - 인증된 Salesforce 조직 목록
    • 매개변수: json , verbose
  • sf_org_display - 조직에 대한 세부 정보 표시
    • 매개변수: targetusername , json
  • sf_org_open - 브라우저에서 org 열기
    • 매개변수: targetusername , path , urlonly

에이펙스 코드

  • 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 - org의 sObject 목록
    • 매개변수: 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 - 웹 흐름을 사용하여 조직에 로그인

서버는 가능한 경우 일반적인 중첩 명령에 대한 단순화된 별칭도 생성합니다.

  • sf_apex_log_get 의 별칭으로 sf_get
  • sf_org_login_web 의 별칭으로 sf_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_apex_log_get 의 경우 sf_get )
  • 도구 이름에서 전체 명령 계층 구조 유지
  • sf commands --json 의 공식 명령 구조 사용

가능한 경우 중첩된 주제 명령은 전체 계층 구조 이름으로 한 번, 단순화된 별칭으로 한 번, 두 번 등록하여 검색 및 사용이 더 쉬워지도록 합니다.

특허

아이에스씨

You must be authenticated.

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

Claude Desktop과 같은 LLM 도구에 Salesforce CLI 기능을 제공하여 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
          ID: 1qi9nvwagh