gitlab mcp

by zereight
Verified
MIT License
1,270
57
  • Linux
  • Apple

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Allows interaction with GitLab repositories including creating/updating files, pushing multiple files, searching repositories, creating repositories, getting file contents, creating issues, creating merge requests, forking repositories, creating branches, getting merge request details and diffs, updating merge requests, and creating notes/comments.

더 나은 GitLab MCP 서버

@zereight/mcp-gitlab

GitLab MCP(모델 컨텍스트 프로토콜) 서버. 기존 GitLab MCP 서버에 대한 버그 수정 및 개선 사항이 포함되어 있습니다.

용법

Claude App, Cline, Roo Code, Cursor와 함께 사용

Claude 앱을 사용하는 경우 API 키와 URL을 직접 설정해야 합니다.

지엑스피1

환경 변수

  • GITLAB_PERSONAL_ACCESS_TOKEN : GitLab 개인 액세스 토큰입니다.
  • GITLAB_API_URL : GitLab API URL입니다. (기본값: https://gitlab.com/api/v4 )
  • GITLAB_READ_ONLY_MODE : 'true'로 설정하면 서버가 읽기 전용 작업만 노출하도록 제한합니다. 보안 강화 또는 쓰기 권한이 필요하지 않을 때 유용합니다. 또한 커서 및 도구 제한(40개)과 함께 사용할 때 유용합니다.

도구 🛠️

  1. create_or_update_file
    • GitLab 프로젝트에서 단일 파일을 만들거나 업데이트합니다. 📝
    • 입력:
      • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
      • file_path (문자열): 파일을 생성/업데이트할 경로
      • content (문자열): 파일 내용
      • commit_message (문자열): 커밋 메시지
      • branch (문자열): 파일을 생성/업데이트할 브랜치
      • previous_path (선택적 문자열): 파일 이름을 바꿀 때 이전 파일 경로
    • 반환: 파일 내용 및 커밋 세부 정보
  2. push_files
    • 단일 커밋에 여러 파일을 푸시합니다. 📤
    • 입력:
      • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
      • branch (문자열): 푸시할 브랜치
      • files (배열): 푸시할 파일의 배열, 각각 file_pathcontent 속성 포함
      • commit_message (문자열): 커밋 메시지
    • 반환: 업데이트된 지점 참조
  3. search_repositories
    • GitLab 프로젝트를 검색하세요. 🔍
    • 입력:
      • search (문자열): 검색어
      • page (선택 번호): 페이지 번호(기본값: 1)
      • per_page (선택적 숫자): 페이지당 결과(기본값: 20, 최대: 100)
    • 반환: 프로젝트 검색 결과
  4. create_repository
    • 새로운 GitLab 프로젝트를 만듭니다. ➕
    • 입력:
      • name (문자열): 프로젝트 이름
      • description (선택 문자열): 프로젝트 설명
      • visibility (선택 문자열): 프로젝트 가시성 수준(공개, 비공개, 내부)
      • initialize_with_readme (선택적 부울): README로 초기화
    • 반환: 생성된 프로젝트의 세부 정보
  5. get_file_contents
    • 파일이나 디렉토리의 내용을 가져옵니다. 📂
    • 입력:
      • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
      • file_path (문자열): 파일/디렉토리 경로
      • ref (선택적 문자열): 브랜치, 태그 또는 커밋 SHA(기본값: 기본 브랜치)
    • 반환: 파일/디렉토리 콘텐츠
  6. create_issue
    • 새로운 이슈를 생성하세요. 🐛
    • 입력:
      • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
      • title (문자열): 이슈 제목
      • description (문자열): 문제 설명
      • assignee_ids (선택 사항 number[]): 담당자 ID 배열
      • milestone_id (선택적 숫자): 마일스톤 ID
      • labels (선택적 문자열[]): 레이블 배열
    • 반환: 생성된 이슈의 세부 정보
  7. create_merge_request
    • 새로운 병합 요청을 만듭니다. 🚀
    • 입력:
      • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
      • title (문자열): 병합 요청 제목
      • description (문자열): 병합 요청 설명
      • source_branch (문자열): 변경 사항이 있는 브랜치
      • target_branch (문자열): 병합할 브랜치
      • allow_collaboration (선택적 부울): 공동작업자가 소스 브랜치에 커밋을 푸시하도록 허용합니다.
      • draft (선택적 부울): 초안 병합 요청으로 생성
    • 반환: 생성된 병합 요청의 세부 정보
  8. fork_repository
    • 프로젝트를 포크하세요. 🍴
    • 입력:
      • project_id (문자열): 포크할 프로젝트 ID 또는 네임스페이스/프로젝트 경로
      • namespace (선택적 문자열): 포크할 네임스페이스(기본값: 사용자 네임스페이스)
    • 반환: 포크된 프로젝트의 세부 정보
  9. create_branch
    • 새로운 지점을 만드세요. 🌿
    • 입력:
      • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
      • name (문자열): 새 지점 이름
      • ref (선택적 문자열): 브랜치를 생성할 참조(브랜치, 태그, 커밋 SHA, 기본값: 기본 브랜치)
    • 반환: 생성된 브랜치 참조
  10. get_merge_request
  • 병합 요청에 대한 세부 정보를 받으세요. ℹ️
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
    • merge_request_iid (숫자): 병합 요청 IID
  • 반환: 병합 요청 세부 정보
  1. get_merge_request_diffs
  • 병합 요청의 변경 사항(diffs)을 가져옵니다. diff
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
    • merge_request_iid (숫자): 병합 요청 IID
    • view (선택적 문자열): Diff 뷰 유형('inline' 또는 'parallel')
  • 반환: 병합 요청 diff 정보 배열
  1. update_merge_request
  • 병합 요청을 업데이트합니다. 🔄
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
    • merge_request_iid (숫자): 병합 요청 IID
    • title (선택 문자열): 새 제목
    • description (문자열): 새 설명
    • target_branch (선택적 문자열): 새로운 대상 브랜치
    • state_event (선택적 문자열): 병합 요청 상태 변경 이벤트('close', 'reopen')
    • remove_source_branch (선택적 부울): 병합 후 소스 브랜치 제거
    • allow_collaboration (선택적 부울): 공동작업자가 소스 브랜치에 커밋을 푸시하도록 허용합니다.
  • 반환: 업데이트된 병합 요청 세부 정보
  1. create_note
  • 문제 또는 병합 요청에 대한 새로운 메모(댓글)를 작성하세요. 💬
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트_경로
    • noteable_type (문자열): 주목할 사항의 유형("issue" 또는 "merge_request")
    • noteable_iid (숫자): 문제 또는 병합 요청의 IID
    • body (문자열): 메모 내용
  • 반환: 생성된 노트의 세부 정보
  1. list_projects
  • 다양한 필터링 옵션으로 접근 가능한 프로젝트를 나열하세요 📊
  • 입력:
    • 검색/필터링:
      • search
      • owned
      • membership
      • archived
      • visibility
    • 기능 필터링:
      • with_issues_enabled
      • with_merge_requests_enabled
    • 정렬:
      • order_by
      • sort
    • 접근 제어:
      • min_access_level
    • 쪽수 매기기:
      • page
      • per_page
      • simple
  • 반환: 프로젝트 배열
  1. list_labels
  • 필터링 옵션을 사용하여 프로젝트의 모든 라벨을 나열하세요 🏷️
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 경로
    • with_counts (선택 사항): 문제 및 병합 요청 수를 포함합니다.
    • include_ancestor_groups (선택 사항): 조상 그룹 포함
    • search (선택 사항): 키워드로 레이블 필터링
  • 반환: 레이블 배열
  1. get_label
  • 프로젝트에서 단일 레이블 가져오기
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 경로
    • label_id (숫자/문자열): 레이블 ID 또는 이름
    • include_ancestor_groups (선택 사항): 조상 그룹 포함
  • 반품: 라벨 세부 정보
  1. create_label
  • 객체에 새 라벨을 만듭니다 🏷️➕
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 경로
    • name (문자열): 레이블 이름
    • color (문자열): 16진수 형식의 색상(예: "#FF0000")
    • description (선택 사항): 레이블 설명
    • priority (선택 사항): 레이블 우선순위
  • 반품: 라벨 세부정보 생성됨
  1. update_label
  • 프로젝트의 기존 라벨 업데이트 🏷️✏️
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 경로
    • label_id (숫자/문자열): 레이블 ID 또는 이름
    • new_name (선택 사항): 새 레이블 이름
    • color (선택 사항): 16진수 형식의 새 색상
    • description (선택 사항): 새 설명
    • priority (선택 사항): 새로운 우선순위
  • 반품: 업데이트된 라벨 세부 정보
  1. delete_label
  • 프로젝트에서 라벨 삭제하기 🏷️❌
  • 입력:
    • project_id (문자열): 프로젝트 ID 또는 경로
    • label_id (숫자/문자열): 레이블 ID 또는 이름
  • 반환: 성공 메시지
  1. list_group_projects
  • GitLab 그룹의 모든 프로젝트를 나열합니다. 📂
  • 입력:
    • group_id (문자열): 프로젝트 ID 또는 네임스페이스/프로젝트 경로
    • 필터링 옵션:
      • include_subgroups (선택적 부울): 하위 그룹의 프로젝트 포함
      • search (선택 문자열): 프로젝트를 필터링할 검색어
      • archived (선택적 부울): 보관된 프로젝트에 대한 필터
      • visibility (선택 문자열): 프로젝트 가시성(공개/내부/비공개)으로 필터링
      • with_programming_language (선택적 문자열): 프로그래밍 언어로 필터링
      • starred (선택적 부울): 별표 표시된 프로젝트로 필터링
    • 기능 필터링:
      • with_issues_enabled (선택적 부울): 문제 기능이 활성화된 프로젝트 필터링
      • with_merge_requests_enabled (선택적 부울): 병합 요청 기능이 활성화된 프로젝트 필터링
      • min_access_level (선택적 숫자): 최소 액세스 수준으로 필터링
    • 쪽수 매기기:
      • page (선택 번호): 페이지 번호
      • per_page (선택적 숫자): 페이지당 결과
    • 정렬:
      • order_by (선택적 문자열): 정렬 기준 필드
      • sort (선택적 문자열): 정렬 방향(오름차순/내림차순)
    • 추가 데이터:
      • statistics (선택적 부울): 프로젝트 통계 포함
      • with_custom_attributes (선택적 부울): 사용자 정의 속성 포함
      • with_security_reports (선택적 부울): 보안 보고서 포함
  • 반환: 프로젝트 목록

환경 변수 구성

서버를 실행하기 전에 다음 환경 변수를 설정해야 합니다.

GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token GITLAB_API_URL=your_gitlab_api_url # Default: https://gitlab.com/api/v4 GITLAB_READ_ONLY_MODE=true # Optional: Enable read-only mode

특허

MIT 라이센스

ID: 7jwbk4r6d7