MCP 문서 관리

메뉴

문서 정보

최종 수정일:
2025-05-12 20:15

GitLab MCP 서버

GitLab

GitLab MCP 서버는 GitLab API를 활용하여 프로젝트 관리, 파일 조작 등의 기능을 제공하는 도구입니다.

특징

  • 자동 브랜치 생성: 파일 생성/업데이트 또는 변경 사항 푸시 시 브랜치가 존재하지 않으면 자동으로 생성됩니다.
  • 포괄적인 오류 처리: 일반적인 문제에 대한 명확한 오류 메시지를 제공합니다.
  • Git 기록 보존: 강제 푸시 없이 적절한 Git 기록을 유지하는 작업을 수행합니다.
  • 일괄 작업: 단일 파일 및 다중 파일 작업을 모두 지원합니다.

API

도구

create_or_update_file

프로젝트에서 단일 파일을 생성하거나 업데이트합니다.

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • file_path (문자열): 파일을 생성/업데이트할 경로
  • content (문자열): 파일 내용
  • commit_message (문자열): 커밋 메시지
  • branch (문자열): 파일을 생성/업데이트할 브랜치
  • previous_path (선택적 문자열): 파일을 이동/이름 변경할 경로

  • 반환: 파일 내용 및 커밋 세부 정보

push_files

여러 파일을 단일 커밋으로 푸시합니다.

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • branch (문자열): 푸시할 브랜치
  • files (배열): 푸시할 파일, 각각 file_pathcontent 포함
  • commit_message (문자열): 커밋 메시지

  • 반환: 업데이트된 브랜치 참조

search_repositories

GitLab 프로젝트 검색

  • 입력:
  • search (문자열): 검색 쿼리
  • page (선택적 숫자): 페이지 번호
  • per_page (선택적 숫자): 페이지당 결과 수(기본값 20)

  • 반환: 프로젝트 검색 결과

create_repository

새 GitLab 프로젝트 생성

  • 입력:
  • name (문자열): 프로젝트 이름
  • description (선택적 문자열): 프로젝트 설명
  • visibility (선택적 문자열): 'private', 'internal' 또는 'public'
  • initialize_with_readme (선택적 불리언): README로 초기화할지 여부

  • 반환: 생성된 프로젝트 세부 정보

get_file_contents

파일 또는 디렉토리 내용 가져오기

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • file_path (문자열): 파일/디렉토리 경로
  • ref (선택적 문자열): 내용을 가져올 브랜치/태그/커밋

  • 반환: 파일/디렉토리 내용

create_issue

새 이슈 생성

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • title (문자열): 이슈 제목
  • description (선택적 문자열): 이슈 설명
  • assignee_ids (선택적 숫자[]): 할당할 사용자 ID
  • labels (선택적 문자열[]): 추가할 레이블
  • milestone_id (선택적 숫자): 마일스톤 ID

  • 반환: 생성된 이슈 세부 정보

create_merge_request

새 병합 요청 생성

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • title (문자열): 병합 요청 제목
  • description (선택적 문자열): 병합 요청 설명
  • source_branch (문자열): 변경 사항이 포함된 브랜치
  • target_branch (문자열): 병합할 브랜치
  • draft (선택적 불리언): 초안 병합 요청으로 생성할지 여부
  • allow_collaboration (선택적 불리언): 업스트림 멤버의 커밋 허용 여부

  • 반환: 생성된 병합 요청 세부 정보

fork_repository

프로젝트 포크

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • namespace (선택적 문자열): 포크할 네임스페이스

  • 반환: 포크된 프로젝트 세부 정보

create_branch

새 브랜치 생성

  • 입력:
  • project_id (문자열): 프로젝트 ID 또는 URL 인코딩된 경로
  • branch (문자열): 새 브랜치 이름
  • ref (선택적 문자열): 새 브랜치의 소스 브랜치/커밋

  • 반환: 생성된 브랜치 참조

사용 방법

개인 액세스 토큰

적절한 권한이 있는 GitLab 개인 액세스 토큰 생성:

  1. GitLab의 사용자 설정 > 액세스 토큰으로 이동
  2. 필요한 범위 선택:
  3. 전체 API 액세스를 위한 api
  4. 읽기 전용 액세스를 위한 read_api
  5. 저장소 작업을 위한 read_repositorywrite_repository
  6. 토큰을 생성하고 안전하게 저장

Claude Desktop에서 사용

Claude Desktop에서 사용하려면 claude_desktop_config.json에 다음을 추가하세요:

Docker

{
  "mcpServers": {
    "gitlab": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "-e", "GITLAB_PERSONAL_ACCESS_TOKEN", "-e", "GITLAB_API_URL", "mcp/gitlab"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
        "GITLAB_API_URL": "https://gitlab.com/api/v4" // 선택 사항, 자체 호스팅 인스턴스용
      }
    }
  }
}

NPX

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-gitlab"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>",
        "GITLAB_API_URL": "https://gitlab.com/api/v4" // 선택 사항, 자체 호스팅 인스턴스용
      }
    }
  }
}

VS Code에서 사용

VS Code User Settings(JSON) 파일에 다음 JSON 블록을 추가하세요. Ctrl + Shift + P를 누르고 Preferences: Open User Settings (JSON)를 입력하여 이 작업을 수행할 수 있습니다.

선택적으로 작업 공간의 .vscode/mcp.json 파일에 추가할 수 있습니다. 이렇게 하면 다른 사람과 구성을 공유할 수 있습니다.

.vscode/mcp.json 파일에서는 mcp 키가 필요하지 않습니다.

Docker

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "gitlab_token",
        "description": "GitLab Personal Access Token",
        "password": true
      },
      {
        "type": "promptString",
        "id": "gitlab_url",
        "description": "GitLab API URL (optional)",
        "default": "https://gitlab.com/api/v4"
      }
    ],
    "servers": {
      "gitlab": {
        "command": "docker",
        "args": ["run", "--rm", "-i", "mcp/gitlab"],
        "env": {
          "GITLAB_PERSONAL_ACCESS_TOKEN": "${input:gitlab_token}",
          "GITLAB_API_URL": "${input:gitlab_url}"
        }
      }
    }
  }
}

NPX

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "gitlab_token",
        "description": "GitLab Personal Access Token",
        "password": true
      },
      {
        "type": "promptString",
        "id": "gitlab_url",
        "description": "GitLab API URL (optional)",
        "default": "https://gitlab.com/api/v4"
      }
    ],
    "servers": {
      "gitlab": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-gitlab"],
        "env": {
          "GITLAB_PERSONAL_ACCESS_TOKEN": "${input:gitlab_token}",
          "GITLAB_API_URL": "${input:gitlab_url}"
        }
      }
    }
  }
}

빌드

Docker 빌드:

docker build -t vonwig/gitlab:mcp -f src/gitlab/Dockerfile .

환경 변수

  • GITLAB_PERSONAL_ACCESS_TOKEN: GitLab 개인 액세스 토큰(필수)
  • GITLAB_API_URL: GitLab API의 기본 URL(선택 사항, 기본값은 https://gitlab.com/api/v4)

라이선스

이 MCP 서버는 MIT 라이선스에 따라 라이선스가 부여됩니다. 이는 MIT 라이선스의 약관 및 조건에 따라 소프트웨어를 자유롭게 사용, 수정 및 배포할 수 있음을 의미합니다. 자세한 내용은 프로젝트 저장소의 LICENSE 파일을 참조하세요.

연결된 구성 요소