JFrog MCP 서버(🧪 실험적)
JFrog 플랫폼 API를 위한 MCP(Model Context Protocol) 서버로, 저장소 관리, 빌드 추적, 릴리스 수명 주기 관리 등의 기능을 제공합니다.
https://github.com/user-attachments/assets/aca3af2b-f294-41c8-8727-799a019a55b5
부인 성명
이 프로젝트는 JFrog의 MCP 기능을 시연하기 위한 실험적 프로젝트이며, JFrog의 공식적인 지원이나 검증을 받지 않았습니다.
특징
저장소 관리 : 로컬, 원격 및 가상 저장소를 생성하고 관리합니다.
빌드 추적 : 빌드 정보 나열 및 검색
런타임 모니터링 : 런타임 클러스터 및 실행 중인 컨테이너 이미지 보기
미션 컨트롤 : 연관된 JFrog 플랫폼 인스턴스 보기
아티팩트 검색 : 강력한 AQL 쿼리를 실행하여 아티팩트 및 빌드를 검색합니다.
카탈로그 및 큐레이션 : 패키지 정보, 버전, 취약점에 액세스하고 큐레이션 상태를 확인합니다.
X선 : 스캔 아티팩트 요약에 액세스하고 아티팩트별 심각도별로 그룹화합니다.
도구
check_jfrog_availabilityJFrog 플랫폼이 준비되었고 작동하는지 확인하세요
반환: 플랫폼 준비 상태
create_local_repositoryArtifactory에서 새 로컬 저장소를 만듭니다.
입력:
key(문자열): 저장소 키rclass(문자열): 저장소 클래스("local"이어야 함)packageType(문자열): 저장소의 패키지 유형description(선택적 문자열): 저장소 설명projectKey(선택적 문자열): 저장소에 할당할 프로젝트 키environments(선택적 문자열[]): 저장소를 할당할 환경
반환: 생성된 저장소 세부 정보
create_remote_repositoryArtifactory에서 외부 패키지 레지스트리를 프록시하기 위해 새 원격 저장소를 만듭니다.
입력:
key(문자열): 저장소 키rclass(문자열): 저장소 클래스("remote"여야 함)packageType(문자열): 저장소의 패키지 유형url(문자열): 원격 저장소의 URLusername(선택적 문자열): 원격 저장소 사용자 이름password(선택 문자열): 원격 저장소 비밀번호description(선택적 문자열): 저장소 설명projectKey(선택적 문자열): 저장소에 할당할 프로젝트 키environments(선택적 문자열[]): 저장소를 할당할 환경특정 저장소 구성을 위한 다른 많은 선택적 매개변수
반환: 생성된 저장소 세부 정보
create_virtual_repositoryArtifactory에서 여러 저장소를 집계하는 새 가상 저장소를 만듭니다.
입력:
key(문자열): 저장소 키rclass(문자열): 저장소 클래스("가상"이어야 함)packageType(문자열): 저장소의 패키지 유형repositories(문자열[]): 가상 저장소에 포함할 저장소 키 목록description(선택적 문자열): 저장소 설명projectKey(선택적 문자열): 저장소에 할당할 프로젝트 키environments(선택적 문자열[]): 저장소를 할당할 환경특정 저장소 구성을 위한 기타 선택적 매개변수
반환: 생성된 저장소 세부 정보
list_repositories선택적 필터링을 사용하여 Artifactory의 모든 저장소 나열
입력:
type(선택적 문자열): 유형(로컬, 원격, 가상, 연합, 배포)별로 저장소 필터링packageType(선택적 문자열): 패키지 유형별로 저장소 필터링project(선택적 문자열): 프로젝트 키로 저장소 필터링
반환: 필터와 일치하는 저장소 목록
set_folder_propertyArtifactory에서 폴더 속성 설정(선택적 재귀적 적용)
입력:
folderPath(문자열): 속성을 설정해야 하는 폴더의 경로properties(객체): 설정할 속성의 키-값 쌍recursive(선택적 부울): 하위 폴더에 속성을 재귀적으로 적용할지 여부
반환: 작업 결과
execute_aql_queryJFrog Artifactory에서 아티팩트, 빌드 또는 기타 엔터티를 검색하기 위해 Artifactory Query Language(AQL) 쿼리를 실행합니다.
입력:
query(문자열): 실행할 AQL 쿼리입니다. AQL 구문을 따라야 합니다(예: items.find({"repo":"my-repo"}).include("name","path")).domain(선택적 문자열): 검색할 기본 도메인(items, builds, archive.entries, build.promotions, releases)transitive(선택적 부울): 원격 저장소에서 검색할지 여부limit(선택적 숫자): 반환할 결과의 최대 개수offset(선택적 숫자): 건너뛸 결과 수include_fields(선택적 문자열[]): 결과에 포함할 필드sort_by(선택적 문자열): 결과를 정렬할 필드sort_order(선택적 문자열): 정렬 순서(오름차순 또는 내림차순)
반환: 메타데이터가 포함된 검색 결과
list_jfrog_buildsJFrog 플랫폼의 모든 빌드 목록을 반환합니다.
반환: 빌드 목록
get_specific_build이름으로 특정 빌드에 대한 세부 정보 가져오기
입력:
buildName(문자열): 검색할 빌드의 이름project(선택적 문자열): 빌드 검색 범위를 지정하는 프로젝트 키
반품: 빌드 세부 정보
list_jfrog_runtime_clusters
JFrog 플랫폼의 모든 런타임 클러스터 목록을 반환합니다.
입력:
limit(선택적 정수): 반환할 클러스터의 최대 수next_key(선택적 문자열): 페이지 매김에 사용할 다음 키
반환: 런타임 클러스터 목록
get_jfrog_runtime_specific_cluster
ID로 런타임 클러스터 반환
입력:
clusterId(정수): 검색할 클러스터의 ID
반환: 클러스터 세부 정보
list_jfrog_running_images
보안 및 운영 상태와 함께 런타임 클러스터에서 실행 중인 모든 컨테이너 이미지를 나열합니다.
입력:
filters(선택적 문자열): 적용할 필터num_of_rows(선택적 정수): 반환할 행 수page_num(선택적 정수): 페이지 번호statistics(선택적 부울): 통계를 포함할지 여부timePeriod(선택적 문자열): 쿼리할 기간
반환: 실행 중인 이미지 목록
list_jfrog_environments
JFrog 플랫폼의 모든 환경 유형 목록과 해당 세부 정보를 확인하세요.
입력:
반환: 환경 목록
list_jfrog_projects
JFrog 플랫폼의 모든 프로젝트 목록과 세부 정보를 확인하세요.
입력:
반환: 프로젝트 목록
get_specific_project
JFrog 플랫폼에서 특정 프로젝트에 대한 자세한 정보를 얻으세요
입력:
project_key(문자열): 검색할 프로젝트의 고유 키
반환: 프로젝트 세부 정보
create_project
JFrog 플랫폼에서 새 프로젝트를 만듭니다.
입력:
project_key(문자열): 프로젝트의 고유 식별자display_name(문자열): 프로젝트의 표시 이름description(문자열): 프로젝트에 대한 설명admin_privileges(객체): 프로젝트에 대한 관리 권한storage_quota_bytes(숫자): 바이트 단위의 저장 할당량(무제한의 경우 -1)
반환: 프로젝트 세부 정보 생성됨
jfrog_get_package_info
소프트웨어 패키지에 대한 공개적으로 사용 가능한 정보를 얻으세요
입력:
type(문자열): 패키지 유형(pypi, npm, maven, golang, nuget, huggingface, rubygems)name(문자열): 패키지 저장소에 나타나는 패키지 이름version(선택적 문자열): 패키지 버전(기본값: "최신")
반환: 설명, 최신 버전, 라이센스 및 URL을 포함한 패키지 정보
jfrog_get_package_versions
공개된 패키지의 버전 목록과 출판 날짜를 가져옵니다.
입력:
type(문자열): 패키지 유형(pypi, npm, maven, golang, nuget, huggingface, rubygems)name(문자열): 패키지 저장소에 나타나는 패키지 이름
반환: 출판 날짜가 포함된 패키지 버전 목록
jfrog_get_package_version_vulnerabilities
오픈 소스 패키지의 특정 버전에 영향을 미치는 알려진 취약점 목록을 가져옵니다.
입력:
type(문자열): 패키지 유형(pypi, npm, maven, golang, nuget, huggingface, rubygems)name(문자열): 패키지 저장소에 나타나는 패키지 이름version(선택적 문자열): 패키지 버전(기본값: "최신")pageSize(선택적 숫자): 페이지당 반환할 취약점 수(기본값: 10)pageCount(선택적 숫자): 반환할 페이지 수(기본값: 1)
반환: 지정된 패키지 버전에 영향을 미치는 취약점 목록
jfrog_get_vulnerability_info
영향을 받는 패키지 및 버전을 포함하여 특정 취약성에 대한 자세한 정보를 얻으세요.
입력:
cve_id(문자열): 조회할 CVE ID 또는 취약성 식별자pageSize(선택적 숫자): 페이지당 반환할 취약점 수(기본값: 10)pageCount(선택적 숫자): 반환할 페이지 수(기본값: 1)
반환: 자세한 취약성 정보 및 영향을 받는 패키지
jfrog_get_package_curation_status
특정 패키지 버전의 큐레이션 상태를 확인하세요
입력:
packageType(문자열): 패키지 유형(pypi, npm, maven, golang, nuget, huggingface, rubygems)packageName(문자열): 패키지 저장소에 나타나는 패키지 이름packageVersion(문자열): 패키지 저장소에 나타나는 패키지 버전
반환: 큐레이션 상태(승인됨, 차단됨 또는 미결정)
jfrog_get_artifacts_summary
저장소 또는 빌드에서 아티팩트 문제 요약을 받고 심각도(낮음, 보통, 높음, 중요, 알 수 없음)별로 분류 및 계산합니다.
입력:
paths(문자열 배열): 요약을 생성할 아티팩트에 대한 경로 배열
반환: 제공된 배열의 각 아티팩트에 대한 심각도별 취약성 수와 총 문제를 기반으로 한 요약
설정
Smithery를 통해 설치
Smithery를 통해 Claude Desktop용 mcp-jfrog를 자동으로 설치하려면:
지엑스피1
필수 조건
Node.js v18 이상
Docker(Docker 배포를 사용하는 경우 참조)
적절한 권한이 있는 유효한 JFrog 플랫폼 인스턴스
JFrog 플랫폼 인스턴스에서 액세스 토큰을 생성하고 관리할 수 있습니다.
환경 변수
JFROG_ACCESS_TOKEN: JFrog 액세스 토큰(필수)JFROG_URL: JFrog 플랫폼의 기본 URL(필수)TRANSPORT: 사용할 전송 모드, 'sse'로 설정하여 SSE 전송을 활성화합니다(기본값: stdio)PORT: SSE 전송에 사용할 포트 번호(기본값: 8080)CORS_ORIGIN: SSE 연결에 허용된 CORS 원점(기본값: '*')LOG_LEVEL: 로깅 레벨: DEBUG, INFO, WARN, ERROR (기본값: INFO)MAX_RECONNECT_ATTEMPTS: SSE 서버에 대한 재연결 시도의 최대 횟수(기본값: 5)RECONNECT_DELAY_MS: 재연결 시도 간 기본 지연 시간(밀리초)(기본값: 2000)
JFrog 토큰( JFROG_ACCESS_TOKEN )
이 MCP 서버를 사용하려면 JFrog 액세스 토큰을 생성하거나 적절한 권한이 있는 ID 토큰을 사용해야 합니다.
JFrog 토큰을 생성하는 방법에 대한 자세한 내용은 JFrog 공식 문서를 참조하세요.
JFrog URL( JFROG_URL )
JFrog 플랫폼 인스턴스 URL(예: https://acme.jfrog.io )
SSE 운송 기능
SSE 전송 모드에는 다음과 같은 기능이 포함됩니다.
연결 관리 : 각 SSE 연결은 고유한 ID로 추적되므로 클라이언트는 재연결 시에도 상태를 유지할 수 있습니다.
구조화된 로깅 : 타임스탬프, 심각도 수준 및 관련 컨텍스트 정보가 포함된 자세한 로그입니다.
연결 복원력 : 서버가 시작되지 않으면 지수적 백오프를 통해 자동으로 재연결을 시도합니다.
Health Endpoint : 서버 상태 정보를 반환하는
/health엔드포인트입니다.연결 추적 : 주기적 통계 로깅을 통해 활성 연결을 실시간으로 추적합니다.
성능 지표 : 도구 작업 및 HTTP 요청에 대한 실행 시간 추적.
SSE 모드를 사용하는 경우:
클라이언트는
/sse엔드포인트에 연결해야 하며, 선택적으로 세션 추적을 위해connectionId쿼리 매개변수를 제공해야 합니다.클라이언트 요청은 동일한
connectionId쿼리 매개변수로 사용하여/messages엔드포인트로 전송해야 합니다.서버는 설정된 SSE 연결을 통해 서버가 보낸 이벤트로 응답합니다.
연결 ID를 사용한 클라이언트 연결 예:
클라이언트 요청 예시:
어떻게 구축하는가
git clone 사용하여 로컬 컴퓨터에 저장소를 복제하고 프로젝트 디렉토리로 cd .
Docker 이미지로 빌드:
npm 모듈로 빌드:
용법
엔피엠
도커
SSE 전송 모드
SSE 전송 모드로 JFrog MCP 서버를 사용하려면(Cursor의 웹뷰와 같은 웹 인터페이스에 유용함):
참고: SSE 모드의 경우 SSE 엔드포인트를 가리키는 serverUrl 매개변수를 추가하고 서버에서 사용하는 포트(-p 8080:8080)를 노출해야 합니다.
claude_desktop_config.json 에 다음을 추가하세요.
도커
엔피엠
SSE 전송 모드
SSE 전송을 사용하는 Claude Desktop의 경우:
Related MCP Servers
- Asecurity-licenseAqualityA Model Context Protocol server that integrates with Figma's API, allowing interaction with Figma files, comments, components, projects, and webhook management.Last updated -5581
- -security-license-qualityA Model Context Protocol server that enables interaction with Foundry tools through natural language, allowing users to create projects, build contracts, run tests, and manage Ethereum development environments.Last updated -1MIT License
- Asecurity-licenseAqualityA Model Context Protocol server that enables interaction with PostgreSQL databases for analyzing setups, debugging issues, managing schemas, migrating data, and monitoring performance.Last updated -111MIT License
MockLoop MCP Serverofficial
-security-license-qualityA Model Context Protocol server that generates and runs mock API servers from API documentation like OpenAPI/Swagger specs, enabling developers and AI assistants to quickly spin up mock backends for development and testing.Last updated -12MIT License