GitHub MCP Server

by tuanle96
Verified

Integrations

  • Preserves Git history for repository operations, with support for branch creation, commit management, and maintaining proper version control without force pushing.

  • Provides comprehensive access to GitHub's API, enabling file operations (creating, updating, retrieving), repository management (creating, forking, branching), search functionality across code/issues/users, and issue/PR workflows (creating, commenting, reviewing, merging).

GitHub MCP 서버

GitHub API를 위한 MCP 서버로, 파일 작업, 저장소 관리, 검색 기능 등을 제공합니다.

특징

  • 자동 브랜치 생성 : 파일을 생성/업데이트하거나 변경 사항을 푸시할 때 브랜치가 없으면 자동으로 생성됩니다.
  • 포괄적인 오류 처리 : 일반적인 문제에 대한 명확한 오류 메시지
  • Git 기록 보존 : 운영자는 강제 푸시 없이 적절한 Git 기록을 유지합니다.
  • 일괄 작업 : 단일 파일 및 다중 파일 작업 모두 지원
  • 고급 검색 : 코드, 이슈/PR 및 사용자 검색 지원
  • 프로젝트 관리 : 프로젝트 생성, 열 관리, 카드 작업 등을 포함한 GitHub 프로젝트(클래식) 관리를 위한 완벽한 툴셋

도구

  1. create_or_update_file
    • 저장소에서 단일 파일을 생성하거나 업데이트합니다.
    • 입력:
      • owner (문자열): 저장소 소유자(사용자 이름 또는 조직)
      • repo (문자열): 저장소 이름
      • path (문자열): 파일을 생성/업데이트할 경로
      • content (문자열): 파일의 내용
      • message (문자열): 커밋 메시지
      • branch (문자열): 파일을 생성/업데이트할 브랜치
      • sha (선택적 문자열): 교체되는 파일의 SHA(업데이트용)
    • 반환: 파일 내용 및 커밋 세부 정보
  2. push_files
    • 단일 커밋에 여러 파일 푸시
    • 입력:
      • owner (문자열): 저장소 소유자
      • repo (문자열): 저장소 이름
      • branch (문자열): 푸시할 브랜치
      • files (배열): 푸시할 파일, 각각 pathcontent
      • message (문자열): 커밋 메시지
    • 반환: 업데이트된 지점 참조
  3. search_repositories
    • GitHub 저장소 검색
    • 입력:
      • query (문자열): 검색 쿼리
      • page (선택적 숫자): 페이지 번호
      • perPage (선택적 숫자): 페이지당 결과(최대 100개)
    • 반환: 저장소 검색 결과
  4. create_repository
    • 새로운 GitHub 저장소를 만듭니다
    • 입력:
      • name (문자열): 저장소 이름
      • description (선택적 문자열): 저장소 설명
      • private (선택적 부울): 저장소를 비공개로 설정해야 하는지 여부
      • autoInit (선택적 부울): README로 초기화
    • 반환: 생성된 저장소 세부 정보
  5. get_file_contents
    • 파일이나 디렉토리의 내용을 가져옵니다
    • 입력:
      • owner (문자열): 저장소 소유자
      • repo (문자열): 저장소 이름
      • path (문자열): 파일/디렉토리 경로
      • branch (선택적 문자열): 콘텐츠를 가져올 지점
    • 반환: 파일/디렉토리 내용
  6. create_issue
    • 새로운 이슈를 생성하세요
    • 입력:
      • owner (문자열): 저장소 소유자
      • repo (문자열): 저장소 이름
      • title (문자열): 이슈 제목
      • body (선택적 문자열): 문제 설명
      • assignees (선택적 문자열[]): 할당할 사용자 이름
      • labels (선택적 문자열[]): 추가할 레이블
      • milestone (선택적 숫자): 마일스톤 번호
    • 반환: 문제 세부 정보 생성됨
  7. create_pull_request
    • 새로운 풀 리퀘스트를 만듭니다
    • 입력:
      • owner (문자열): 저장소 소유자
      • repo (문자열): 저장소 이름
      • title (문자열): PR 제목
      • body (선택적 문자열): PR 설명
      • head (문자열): 변경 사항을 포함하는 브랜치
      • base (문자열): 병합할 브랜치
      • draft (선택적 부울): PR 초안으로 생성
      • maintainer_can_modify (선택적 부울): 유지 관리자 편집 허용
    • 반환: 풀 리퀘스트 세부정보 생성됨
  8. fork_repository
    • 저장소 포크하기
    • 입력:
      • owner (문자열): 저장소 소유자
      • repo (문자열): 저장소 이름
      • organization (선택적 문자열): 포크할 조직
    • 반환: 포크된 저장소 세부 정보
  9. create_branch
    • 새로운 지점을 만드세요
    • 입력:
      • owner (문자열): 저장소 소유자
      • repo (문자열): 저장소 이름
      • branch (문자열): 새 브랜치의 이름
      • from_branch (선택적 문자열): 소스 브랜치(기본값은 repo 기본값)
    • 반환: 생성된 브랜치 참조
  10. list_issues
  • 저장소 문제 나열 및 필터링
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • state (선택적 문자열): 상태('open', 'closed', 'all')로 필터링
    • labels (선택적 문자열[]): 레이블로 필터링
    • sort (선택적 문자열): ('생성됨', '업데이트됨', '댓글')로 정렬
    • direction (선택적 문자열): 정렬 방향 ('asc', 'desc')
    • since (선택적 문자열): 날짜(ISO 8601 타임스탬프)로 필터링
    • page (선택 번호): 페이지 번호
    • per_page (선택적 숫자): 페이지당 결과
  • 반환: 문제 세부 정보 배열
  1. update_issue
  • 기존 문제 업데이트
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • issue_number (숫자): 업데이트할 이슈 번호
    • title (선택 문자열): 새 제목
    • body (선택적 문자열): 새로운 설명
    • state (선택적 문자열): 새로운 상태('열림' 또는 '닫힘')
    • labels (선택적 문자열[]): 새 레이블
    • assignees (선택적 문자열[]): 새로운 담당자
    • milestone (선택적 숫자): 새로운 마일스톤 숫자
  • 반품: 업데이트된 문제 세부 정보
  1. add_issue_comment
  • 문제에 대한 의견을 추가하세요
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • issue_number (숫자): 의견을 제시할 호 번호
    • body (문자열): 댓글 텍스트
  • 반환: 생성된 댓글 세부 정보
  1. search_code
  • GitHub 저장소에서 코드 검색
  • 입력:
    • q (문자열): GitHub 코드 검색 구문을 사용한 검색 쿼리
    • sort (선택적 문자열): 정렬 필드('인덱스'만 해당)
    • order (선택적 문자열): 정렬 순서('asc' 또는 'desc')
    • per_page (선택적 숫자): 페이지당 결과(최대 100개)
    • page (선택 번호): 페이지 번호
  • 반환: 저장소 컨텍스트가 포함된 코드 검색 결과
  1. search_issues
  • 이슈 검색 및 풀 리퀘스트
  • 입력:
    • q (문자열): GitHub 이슈 검색 구문을 사용한 검색 쿼리
    • sort (선택적 문자열): 정렬 필드(댓글, 반응, 생성 등)
    • order (선택적 문자열): 정렬 순서('asc' 또는 'desc')
    • per_page (선택적 숫자): 페이지당 결과(최대 100개)
    • page (선택 번호): 페이지 번호
  • 반환: 이슈 및 풀 리퀘스트 검색 결과
  1. search_users
  • GitHub 사용자 검색
  • 입력:
    • q (문자열): GitHub 사용자 검색 구문을 사용한 검색 쿼리
    • sort (선택적 문자열): 정렬 필드(팔로워, 저장소, 가입)
    • order (선택적 문자열): 정렬 순서('asc' 또는 'desc')
    • per_page (선택적 숫자): 페이지당 결과(최대 100개)
    • page (선택 번호): 페이지 번호
  • 반환: 사용자 검색 결과
  1. list_commits
  • 저장소의 브랜치 커밋을 가져옵니다.
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • page (선택적 문자열): 페이지 번호
    • per_page (선택적 문자열): 페이지당 레코드 수
    • sha (선택적 문자열): 지점 이름
  • 반환: 커밋 목록
  1. get_issue
  • 저장소 내의 이슈 내용을 가져옵니다.
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • issue_number (숫자): 검색할 이슈 번호
  • 반환: Github 이슈 객체 및 세부 정보
  1. delete_issue
  • GraphQL API를 사용하여 GitHub 저장소에서 이슈를 삭제합니다.
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • issue_number (숫자): 삭제할 이슈 번호
  • 반환: 저장소 정보를 포함한 삭제 확인
  1. get_pull_request
  • 특정 풀 리퀘스트의 세부 정보 가져오기
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
  • 반환: diff 및 검토 상태를 포함한 풀 요청 세부 정보
  1. list_pull_requests
  • 저장소 풀 리퀘스트 나열 및 필터링
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • state (선택적 문자열): 상태('open', 'closed', 'all')로 필터링
    • head (선택적 문자열): head 사용자/조직 및 branch로 필터링
    • base (선택적 문자열): 기본 브랜치로 필터링
    • sort (선택적 문자열): ('생성됨', '업데이트됨', '인기', '장기 실행됨')으로 정렬
    • direction (선택적 문자열): 정렬 방향 ('asc', 'desc')
    • per_page (선택적 숫자): 페이지당 결과(최대 100개)
    • page (선택 번호): 페이지 번호
  • 반환: 풀 리퀘스트 세부 정보 배열
  1. create_pull_request_review
  • 풀 리퀘스트에 대한 리뷰 작성
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
    • body (문자열): 리뷰 코멘트 텍스트
    • event (문자열): 검토 작업('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
    • commit_id (선택적 문자열): 검토할 커밋의 SHA
    • comments (선택적 배열): 다음이 포함된 줄별 주석:
      • path (문자열): 파일 경로
      • position (숫자): diff에서의 줄 위치
      • body (문자열): 댓글 텍스트
  • 반품: 리뷰 세부 정보 생성됨
  1. merge_pull_request
  • 풀 리퀘스트 병합
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
    • commit_title (선택적 문자열): 병합 커밋의 제목
    • commit_message (선택적 문자열): 병합 커밋에 대한 추가 세부 정보
    • merge_method (선택적 문자열): 병합 방법('merge', 'squash', 'rebase')
  • 반환: 병합 결과 세부 정보
  1. get_pull_request_files
  • 풀 리퀘스트에서 변경된 파일 목록 가져오기
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
  • 반환: 패치 및 상태 세부 정보가 포함된 변경된 파일 배열
  1. get_pull_request_status
  • 풀 리퀘스트에 대한 모든 상태 확인의 결합된 상태를 가져옵니다.
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
  • 반환: 결합된 상태 확인 결과 및 개별 확인 세부 정보
  1. update_pull_request_branch
  • 기본 브랜치의 최신 변경 사항으로 풀 리퀘스트 브랜치 업데이트(GitHub의 "브랜치 업데이트" 버튼과 동일)
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
    • expected_head_sha (선택적 문자열): 풀 요청의 HEAD 참조의 예상 SHA
  • 반환: 브랜치가 업데이트되면 성공 메시지가 표시됩니다.
  1. get_pull_request_comments
  • 풀 리퀘스트에 대한 리뷰 코멘트 받기
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
  • 반환: 주석 텍스트, 작성자, diff의 위치와 같은 세부 정보가 포함된 풀 리퀘스트 검토 주석 배열
  1. get_pull_request_reviews
  • 풀 리퀘스트에 대한 리뷰 받기
  • 입력:
    • owner (문자열): 저장소 소유자
    • repo (문자열): 저장소 이름
    • pull_number (숫자): 풀 리퀘스트 번호
  • 반환: 검토 상태(승인됨, 변경 요청됨 등), 검토자 및 검토 본문과 같은 세부 정보가 포함된 풀 요청 검토 배열
  1. create_project
  • GitHub 저장소에 새 프로젝트 만들기
  • 입력:
    • owner (문자열): 저장소 소유자(사용자 이름 또는 조직)
    • repo (문자열): 저장소 이름
    • name (문자열): 프로젝트 이름
    • body (선택적 문자열): 프로젝트 설명
  • 반환: 생성된 프로젝트 세부 정보
  1. get_project
  • 특정 프로젝트에 대한 세부 정보를 얻으세요
  • 입력:
    • owner (문자열): 저장소 소유자(사용자 이름 또는 조직)
    • repo (문자열): 저장소 이름
    • project_number (숫자): 프로젝트 번호
  • 반환: 프로젝트 세부 정보
  1. update_project
  • 기존 프로젝트의 세부 정보 업데이트
  • 입력:
    • project_id (숫자): 프로젝트의 고유 식별자
    • name (선택적 문자열): 프로젝트의 새 이름
    • body (선택적 문자열): 프로젝트에 대한 새로운 설명
    • state (선택적 문자열): 프로젝트 상태('열림' 또는 '닫힘')
  • 반환: 업데이트된 프로젝트 세부 정보
  1. list_projects
  • GitHub 저장소의 모든 프로젝트 나열
  • 입력:
    • owner (문자열): 저장소 소유자(사용자 이름 또는 조직)
    • repo (문자열): 저장소 이름
    • state (선택적 문자열): 프로젝트를 상태('열림', '닫힘', '모두')로 필터링합니다.
    • page (선택적 숫자): 페이지 번호를 지정합니다(1부터 시작)
    • per_page (선택적 숫자): 페이지당 결과 수(최대 100개)
  • 반환: 프로젝트 세부 정보 배열
  1. create_project_column
  • 프로젝트에 새 열 만들기
  • 입력:
    • owner (문자열): 저장소 소유자(사용자 이름 또는 조직)
    • repo (문자열): 저장소 이름
    • project_number (숫자): 프로젝트 번호
    • name (문자열): 열의 이름
  • 반환: 생성된 열 세부 정보
  1. list_project_columns
  • 프로젝트의 모든 열 나열
  • 입력:
    • project_id (숫자): 프로젝트의 고유 식별자
    • page (선택적 숫자): 페이지 번호를 지정합니다(1부터 시작)
    • per_page (선택적 숫자): 페이지당 결과 수(최대 100개)
  • 반환: 프로젝트 열 세부 정보 배열
  1. update_project_column
  • 기존 프로젝트 열 업데이트
  • 입력:
    • column_id (숫자): 열의 고유 식별자
    • name (문자열): 열의 새 이름
  • 반환: 업데이트된 열 세부 정보
  1. delete_project_column
  • 프로젝트 열 삭제
  • 입력:
    • column_id (숫자): 열의 고유 식별자
  • 반환: 성공 메시지
  1. add_card_to_column
  • 프로젝트 열에 새 카드 추가
  • 입력:
    • owner (문자열): 저장소 소유자(사용자 이름 또는 조직)
    • repo (문자열): 저장소 이름
    • column_id (문자열): 카드를 추가할 열의 ID
    • content_type (문자열): 카드의 콘텐츠 유형('Issue', 'PullRequest', 'Note')
    • content_id (선택적 숫자): 이슈 또는 풀 리퀘스트의 ID(content_type이 Issue 또는 PullRequest인 경우 필수)
    • note (선택적 문자열): 카드의 메모 내용(content_type이 Note인 경우 필수)
  • 반품: 카드 세부 정보 생성됨
  1. list_column_cards
  • 프로젝트 열에 있는 모든 카드 나열
  • 입력:
    • column_id (숫자): 열의 고유 식별자
    • archived_state (선택적 문자열): 카드 보관 상태('all', 'archived', 'not_archived')로 필터링
    • page (선택적 숫자): 페이지 번호를 지정합니다(1부터 시작)
    • per_page (선택적 숫자): 페이지당 결과 수(최대 100개)
  • 반환: 카드 세부 정보 배열
  1. move_card
  • 카드를 다른 위치나 열로 이동
  • 입력:
    • card_id (숫자): 카드의 고유 식별자
    • position (문자열): 카드의 위치('top', 'bottom' 또는 'after:<card_id>')
    • column_id (선택적 숫자): 카드를 이동할 열 ID
  • 반환: 성공 메시지
  1. delete_card
  • 프로젝트에서 카드 삭제
  • 입력:
    • card_id (숫자): 카드의 고유 식별자
  • 반환: 성공 메시지
  1. list_organization_projects
  • GitHub 조직의 모든 프로젝트를 나열합니다(저장소 수준이 아닌 조직 수준).
  • 입력:
    • org (문자열): 조직 이름
    • state (선택적 문자열): 프로젝트를 상태('열림', '닫힘', '모두')별로 필터링합니다.
    • page (선택적 숫자): 페이지 번호
    • per_page (선택적 숫자): 페이지당 결과 수(최대 100개)
  • 반환: 조직 프로젝트 세부 정보 배열

프로젝트 V2 도구(GitHub의 새로운 프로젝트 경험)

  1. list_organization_projects_v2
  • GraphQL API를 사용하여 GitHub 조직의 프로젝트 V2 나열
  • 입력:
    • org (문자열): 조직 이름
    • first (선택적 숫자): 가져올 프로젝트 수 (최대 100개)
    • after (선택적 문자열): 페이지 매김을 위한 커서
    • orderBy (선택적 객체): 프로젝트를 정렬하는 방법
  • 반환: 페이지 정보가 포함된 프로젝트 배열
  1. get_project_v2
  • GraphQL API를 사용하여 GitHub 프로젝트 V2의 세부 정보 가져오기
  • 입력:
    • id (문자열): 프로젝트의 노드 ID
  • 반환: 필드 및 뷰를 포함한 자세한 프로젝트 정보
  1. create_project_v2
  • GraphQL API를 사용하여 새로운 GitHub 프로젝트 V2를 만듭니다.
  • 입력:
    • ownerId (문자열): 조직 또는 사용자의 노드 ID
    • title (문자열): 프로젝트 제목
    • description (선택 문자열): 프로젝트에 대한 설명
  • 반환: 프로젝트 세부 정보 생성됨
  1. update_project_v2
  • GraphQL API를 사용하여 GitHub 프로젝트 V2 업데이트
  • 입력:
    • projectId (문자열): 프로젝트의 노드 ID
    • title (선택 문자열): 프로젝트의 새 제목
    • description (선택 문자열): 프로젝트에 대한 새로운 설명
    • closed (선택적 부울): 프로젝트를 닫을지 여부
  • 반환: 업데이트된 프로젝트 세부 정보
  1. add_item_to_project_v2
  • GraphQL API를 사용하여 GitHub 프로젝트 V2에 이슈 또는 풀 리퀘스트 추가
  • 입력:
    • projectId (문자열): 프로젝트의 노드 ID
    • contentId (문자열): 추가할 이슈 또는 풀 리퀘스트의 노드 ID
  • 반품: 상품 상세정보 추가
  1. list_project_v2_items
  • GraphQL API를 사용하여 GitHub 프로젝트 V2의 항목 나열
  • 입력:
    • projectId (문자열): 프로젝트의 노드 ID
    • first (선택적 숫자): 가져올 항목 수(최대 100개)
    • after (선택적 문자열): 페이지 매김을 위한 커서
    • filterBy (선택적 객체): 항목에 대한 필터
  • 반환: 필드 값이 포함된 프로젝트 항목 배열
  1. update_project_v2_item_field
  • GraphQL API를 사용하여 GitHub 프로젝트 V2의 항목에 대한 필드 값 업데이트
  • 입력:
    • projectId (문자열): 프로젝트의 노드 ID
    • itemId (문자열): 항목의 노드 ID
    • fieldId (문자열): 필드의 노드 ID
    • value (임의): 필드의 새 값
  • 반품: 업데이트된 품목 세부 정보

프로젝트 관리 노트

지원 중단 경고 : GitHub에서 Projects(클래식)가 새로운 Projects 환경으로 대체되어 지원 중단된다고 발표했습니다. 도구 2739는 클래식 버전의 Projects에서 사용 가능하며, 향후 제거될 수 있습니다. 새로운 GitHub Projects 환경을 사용하려면 도구 4046을 대신 사용하세요.

검색 쿼리 구문

코드 검색

  • language:javascript : 프로그래밍 언어로 검색
  • repo:owner/name : 특정 저장소에서 검색
  • path:app/src : 특정 경로에서 검색
  • extension:js : 파일 확장자로 검색
  • 예: q: "import express" language:typescript path:src/

문제 검색

  • is:issue 또는 is:pr : 유형별 필터링
  • is:open 또는 is:closed : 상태별 필터링
  • label:bug : 라벨로 검색
  • author:username : 작성자로 검색
  • 예: q: "memory leak" is:issue is:open label:bug

사용자 검색

  • type:user 또는 type:org : 계정 유형별 필터링
  • followers:>1000 : 팔로워로 필터링
  • location:London : 위치로 검색
  • 예: q: "fullstack developer" location:London followers:>100

자세한 검색 구문은 GitHub의 검색 문서를 참조하세요.

설정

개인 액세스 토큰

적절한 권한이 있는 GitHub 개인 액세스 토큰을 만듭니다 .

  • 개인 액세스 토큰 으로 이동하세요(GitHub 설정 > 개발자 설정)
  • 이 토큰이 액세스할 수 있는 저장소를 선택하세요(공개, 모두 또는 선택)
  • repo 범위("개인 저장소의 전체 제어")로 토큰을 생성합니다.
    • 또는 공개 저장소에서만 작업하는 경우 public_repo 범위만 선택하세요.
    • Projects V2 도구를 사용하려면 project 범위도 포함해야 합니다.
  • 생성된 토큰을 복사하세요

Claude Desktop과 함께 사용

Claude Desktop과 함께 사용하려면 claude_desktop_config.json 에 다음을 추가하세요.

도커

지엑스피1

엔피엑스

{ "mcpServers": { "github": { "command": "npx", "args": [ "-y", "@earnbasejs/mcp-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }

짓다

Docker 빌드:

docker build -t mcp/github -f src/github/Dockerfile .

특허

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

-
security - not tested
F
license - not found
-
quality - not tested

파일 관리, 저장소 관리, 이슈 추적, 고급 코드 검색을 포함한 자연어를 통한 포괄적인 GitHub 운영을 지원합니다.

  1. Features
    1. Tools
      1. Projects V2 Tools (GitHub's New Projects Experience)
        1. Project Management Notes
          1. Search Query Syntax
            1. Code Search
            2. Issues Search
            3. Users Search
          2. Setup
            1. Personal Access Token
            2. Usage with Claude Desktop
            3. NPX
          3. Build
            1. License
              ID: 2aknx2eopg