GitHub MCP Server

by cyanheads
Verified

Integrations

  • Provides tools for interacting with the GitHub API, enabling management of repositories, branches, issues, pull requests, files, and releases. Features include creating and listing repositories, managing branches, creating and tracking issues, handling pull request lifecycles, updating repository files, and creating tagged releases.

GitHub MCP 서버

GitHub API와 상호 작용하기 위한 도구를 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 통해 LLM 에이전트는 표준화된 인터페이스를 통해 GitHub 저장소, 이슈, 풀 리퀘스트, 브랜치, 파일 및 릴리스를 관리할 수 있습니다.

목차

개요

github-mcp-server는 MCP(모델 컨텍스트 프로토콜)를 구현하여 다음을 통해 LLM과 외부 시스템 간의 표준화된 통신을 지원합니다.

  • 클라이언트 : Claude Desktop, IDE 및 기타 MCP 호환 클라이언트
  • 서버 : 프로젝트 관리 및 협업을 위한 도구 및 리소스
  • LLM 에이전트 : GitHub 작업을 프로그래밍 방식으로 수행하는 기능을 활용하는 AI 모델입니다.

이는 AI 모델과 GitHub API 사이의 다리 역할을 하며, 일관된 패턴을 따르고 인증, 유효성 검사, 오류 처리 및 속도 제한을 처리하는 잘 정의된 도구 세트를 제공합니다.

주요 기능:

  • GitHub API 통합 : GitHub의 REST API와의 안전하고 원활한 통합
  • 포괄적인 GitHub 기능 : 저장소, 브랜치, 이슈, PR 등을 완벽하게 관리
  • 원자적 기능 아키텍처 : 유지 관리를 위한 잘 구성된 모듈식 코드 구조
  • 입력 검증 : 모든 작업에 대해 Zod 스키마를 사용한 강력한 검증
  • 오류 처리 : 일관된 오류 분류 및 보고
  • 속도 제한 : 내장된 GitHub API 속도 제한 처리
  • 성능 중심 : 최적화된 운영 및 응답 형식

아키텍처 및 구성 요소

핵심 시스템 아키텍처:

지엑스피1

핵심 구성 요소:

  • MCP 프로토콜 계층 : AI 어시스턴트와의 통신을 처리합니다.
  • 검증 계층 : 스키마 검증을 통해 데이터 무결성을 보장합니다.
  • GitHub 서비스 : GitHub REST API와의 핵심 통합
  • 속도 제한기 : API 속도 제한 소진을 방지합니다.
  • 기능 모듈 : 도메인별 GitHub 작업
  • 오류 처리 : 포괄적인 오류 처리 및 로깅 시스템

특징

저장소 관리

  • 생성, 나열, 가져오기 : 새 저장소를 생성하고, 사용자 저장소를 나열하고, 자세한 저장소 정보를 가져옵니다.
  • 검증 및 구성 : 저장소 설정을 검증하고 구성 옵션을 관리합니다.

지점 관리

  • 생성, 삭제, 목록 : 보안 검증을 통한 완벽한 브랜치 라이프사이클 관리
  • 보호된 브랜치 지원 : 보호된 브랜치에 대한 필터링 및 작업

이슈 관리

  • 생성 및 목록 : 레이블을 사용하여 자세한 문제를 생성하고 필터링 옵션을 사용하여 문제를 나열합니다.
  • 상태 추적 : 문제 상태(열림, 닫힘, 모두)로 필터링

풀 리퀘스트 관리

  • 생성, 업데이트, 병합, 목록 : 전체 풀 리퀘스트 라이프사이클 관리
  • 리뷰 및 댓글 통합 : 풀 리퀘스트에 리뷰 및 댓글 추가
  • 병합 옵션 : 다양한 병합 전략 지원(병합, 스쿼시, 리베이스)

파일 관리

  • 파일 생성 및 업데이트 : 커밋 메시지를 사용하여 저장소 콘텐츠를 추가하고 수정합니다.
  • Base64 인코딩 지원 : 텍스트와 바이너리 파일 콘텐츠 모두 처리

릴리스 관리

  • 릴리스 만들기 : 사용자 정의 가능한 옵션으로 태그가 지정된 릴리스 만들기
  • 초안 및 사전 릴리스 지원 : 초안 및 사전 릴리스 워크플로 지원

설치

필수 조건

  • Node.js(v16 이상)
  • 적절한 권한이 있는 GitHub 개인 액세스 토큰

설정

  1. 저장소를 복제합니다.
    git clone https://github.com/cyanheads/github-mcp-server.git cd github-mcp-server
  2. 종속성 설치:
    npm install
  3. GitHub 토큰을 사용하여 프로젝트 루트에 .env 파일을 만듭니다.
    GITHUB_TOKEN=your_github_personal_access_token LOG_LEVEL=info SERVER_NAME=github-mcp-server
  4. 프로젝트를 빌드하세요:
    npm run build
  5. 서버를 시작합니다:
    node build/index.js

구성

서버는 환경 변수를 통해 구성할 수 있습니다.

환경 변수설명기본
GITHUB_TOKENGitHub 개인 액세스 토큰(필수)-
LOG_LEVEL로깅 수준(디버그, 정보, 경고, 오류, 치명적)정보
SERVER_NAMEMCP 서버 이름github-mcp-서버
SERVER_VERSIONMCP 서버 버전0.1.0
API_TIMEOUT_MSAPI 호출에 대한 시간 초과(밀리초)10000
RATE_LIMITING_ENABLED속도 제한이 활성화되어 있는지 여부진실
RATE_LIMITING_MIN_REMAINING제한 전 최소 남은 요청 수100
RATE_LIMITING_RESET_BUFFER_MS요금 제한 재설정 시간에 추가할 시간 버퍼5000

MCP 클라이언트 설정

MCP 클라이언트 설정에 추가:

{ "mcpServers": { "github": { "command": "node", "args": ["/path/to/github-mcp-server/build/index.js"], "env": { "GITHUB_TOKEN": "your_github_personal_access_token", "LOG_LEVEL": "info", "SERVER_NAME": "github-mcp-server" } } } }

프로젝트 구조

이 프로젝트는 원자적 기능 지향 아키텍처 패턴을 따릅니다.

/src /configuration // Application configuration /dependencyInjection // Tool registry and DI container /features // Feature modules organized by domain /repositoryManagement /resources // Read operations /modifications // Write operations /branchManagement /issueManagement /pullRequestManagement /fileManagement /releaseManagement /services // External service integrations /githubAccess // GitHub API client and utilities /types // Core type definitions /utilities // Helper functions and utilities

각 기능 도메인은 다음과 같이 나뉩니다.

  • 리소스 : 데이터를 수정하지 않는 읽기 작업
  • 수정 사항 : 데이터를 생성, 업데이트 또는 삭제하는 작업 작성

각 작업은 다음과 같은 자체 디렉토리에 포함되어 있습니다.

  • 작업 구현 파일
  • 유형 정의 파일
  • 인덱스 파일 내보내기

도구

GitHub MCP 서버는 GitHub과 상호 작용하기 위한 포괄적인 도구 모음을 제공합니다.

저장소 관리 도구

도구설명
get_repository특정 저장소에 대한 자세한 정보 가져오기 매개변수: owner , repo
list_repositories인증된 사용자에 대한 저장소 나열 매개변수: type (선택 사항), sort (선택 사항)
create_repository새로운 GitHub 저장소 만들기 매개변수: name , description (선택 사항), private (선택 사항)

지점 관리 도구

도구설명
list_branches저장소의 브랜치 나열 매개변수: owner , repo , protected (선택 사항), per_page (선택 사항)
create_branch새로운 branchParameters를 생성합니다: owner , repo , branch , sha
delete_branch지점 삭제매개변수: owner , repo , branch

이슈 관리 도구

도구설명
create_issue저장소에서 새 이슈 생성 매개변수: owner , repo , title , body (선택 사항), labels (선택 사항)
list_issues저장소의 문제 나열 매개변수: owner , repo , state (선택 사항), labels (선택 사항)

풀 리퀘스트 관리 도구

도구설명
create_pull_request새로운 풀 리퀘스트 생성 매개변수: owner , repo , title , head , base , body (선택 사항)
merge_pull_request풀 리퀘스트 병합 매개변수: owner , repo , pull_number , commit_title (선택 사항), commit_message (선택 사항), merge_method (선택 사항)
update_pull_request기존 풀 요청 업데이트 매개변수: owner , repo , pull_number , title (선택 사항), body (선택 사항), state (선택 사항), base (선택 사항), maintainer_can_modify (선택 사항)
list_pull_requests저장소에 풀 리퀘스트 나열 매개변수: owner , repo , state (선택 사항), head (선택 사항), base (선택 사항), sort (선택 사항), direction (선택 사항)

파일 관리 도구

도구설명
update_file저장소에 파일을 생성하거나 업데이트합니다. 매개변수: owner , repo , path , message , content , sha (선택 사항), branch (선택 사항)

릴리스 관리 도구

도구설명
create_release새로운 릴리스 생성 매개변수: owner , repo , tag_name , name (선택 사항), body (선택 사항), draft (선택 사항), prerelease (선택 사항)

개발

프로젝트 구조

이 프로젝트는 엄격한 명명 규칙과 디렉토리 구조를 따릅니다.

  • 파일 이름: action.entity.type.ts (예: create.repository.operation.ts )
  • 각 모듈에는 명확하게 정의된 목적이 있습니다.
  • 유형은 구현과 함께 배치됩니다.
  • 모든 내보내기는 인덱스 파일을 통해 중앙화됩니다.

스크립트

  • npm run build - 프로젝트 빌드
  • npm run watch - 변경 사항을 확인하고 다시 빌드합니다.
  • npm run inspector - MCP 검사기 도구 실행
  • npm run clean - 빌드 아티팩트 정리
  • npm run rebuild - 프로젝트를 정리하고 다시 빌드합니다.
  • npm run tree - 디렉토리 트리 표현 생성

오류 처리

서버는 포괄적인 오류 처리 전략을 구현합니다.

  • 표준화된 오류 객체 : 분류를 통한 일관된 오류 형식
  • 입력 검증 : Zod 스키마를 사용한 사전 검증
  • 속도 제한 보호 : GitHub API 속도 제한 자동 처리
  • 오류 카테고리 :
    • 네트워크 오류(연결 문제)
    • 인증 오류(토큰 문제)
    • 검증 오류(잘못된 입력)
    • GitHub API 오류(API 관련 문제)
    • 시스템 오류(예상치 못한 실패)
  • 상세 로깅 : 모든 작업 및 오류에 대한 구조화된 로깅

기여하다

기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.

  1. 저장소를 포크하세요
  2. 기능 브랜치를 생성합니다( git checkout -b feature/amazing-feature )
  3. 변경 사항을 커밋하세요( git commit -m 'Add some amazing feature' )
  4. 브랜치에 푸시( git push origin feature/amazing-feature )
  5. 풀 리퀘스트 열기

특허

아파치 라이선스 2.0


ID: cey1omi620