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 개인 액세스 토큰
설정
- 저장소를 복제합니다.Copy
- 종속성 설치:Copy
- GitHub 토큰을 사용하여 프로젝트 루트에
.env
파일을 만듭니다.Copy - 프로젝트를 빌드하세요:Copy
- 서버를 시작합니다:Copy
구성
서버는 환경 변수를 통해 구성할 수 있습니다.
환경 변수 | 설명 | 기본 |
---|---|---|
GITHUB_TOKEN | GitHub 개인 액세스 토큰(필수) | - |
LOG_LEVEL | 로깅 수준(디버그, 정보, 경고, 오류, 치명적) | 정보 |
SERVER_NAME | MCP 서버 이름 | github-mcp-서버 |
SERVER_VERSION | MCP 서버 버전 | 0.1.0 |
API_TIMEOUT_MS | API 호출에 대한 시간 초과(밀리초) | 10000 |
RATE_LIMITING_ENABLED | 속도 제한이 활성화되어 있는지 여부 | 진실 |
RATE_LIMITING_MIN_REMAINING | 제한 전 최소 남은 요청 수 | 100 |
RATE_LIMITING_RESET_BUFFER_MS | 요금 제한 재설정 시간에 추가할 시간 버퍼 | 5000 |
MCP 클라이언트 설정
MCP 클라이언트 설정에 추가:
프로젝트 구조
이 프로젝트는 원자적 기능 지향 아키텍처 패턴을 따릅니다.
각 기능 도메인은 다음과 같이 나뉩니다.
- 리소스 : 데이터를 수정하지 않는 읽기 작업
- 수정 사항 : 데이터를 생성, 업데이트 또는 삭제하는 작업 작성
각 작업은 다음과 같은 자체 디렉토리에 포함되어 있습니다.
- 작업 구현 파일
- 유형 정의 파일
- 인덱스 파일 내보내기
도구
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 관련 문제)
- 시스템 오류(예상치 못한 실패)
- 상세 로깅 : 모든 작업 및 오류에 대한 구조화된 로깅
기여하다
기여를 환영합니다! 풀 리퀘스트를 제출해 주세요.
- 저장소를 포크하세요
- 기능 브랜치를 생성합니다(
git checkout -b feature/amazing-feature
) - 변경 사항을 커밋하세요(
git commit -m 'Add some amazing feature'
) - 브랜치에 푸시(
git push origin feature/amazing-feature
) - 풀 리퀘스트 열기
특허
This server cannot be installed
LLM 에이전트가 표준화된 인터페이스를 통해 GitHub 저장소, 이슈, 풀 리퀘스트, 브랜치, 파일 및 릴리스를 관리할 수 있도록 하는 모델 컨텍스트 프로토콜 서버입니다.