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
용법
서버 시작
MCP 서버는 MCP Inspector 나 Claude Desktop과 같은 MCP 클라이언트와 함께 사용할 수 있는 stdio 전송을 사용합니다.
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
- 명령 검색 캐시 새로 고침
프로젝트 디렉토리 관리(루트)
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
- 브라우저에서 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}
- 특정 프로젝트 루트에서 명령 실행
작동 원리
- 시작 시 서버는 캐시된 명령 목록(
~/.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_apex_log_get
의 경우sf_get
) - 도구 이름에서 전체 명령 계층 구조 유지
sf commands --json
의 공식 명령 구조 사용
가능한 경우 중첩된 주제 명령은 전체 계층 구조 이름으로 한 번, 단순화된 별칭으로 한 번, 두 번 등록하여 검색 및 사용이 더 쉬워지도록 합니다.
특허
아이에스씨
You must be authenticated.
Claude Desktop과 같은 LLM 도구에 Salesforce CLI 기능을 제공하여 AI 에이전트가 Salesforce 명령을 실행하고, 조직을 관리하고, 코드를 배포하고, 자연어로 데이터를 쿼리할 수 있도록 합니다.