Git MCP 서버
Git 저장소와 상호 작용할 수 있는 도구를 제공하는 MCP(Model Context Protocol) 서버입니다. LLM 및 AI 에이전트가 MCP 표준을 통해 복제, 커밋, 푸시, 풀, 브랜치, 디프, 로그, 상태 등의 Git 작업을 수행할 수 있도록 지원합니다.
cyanheads/mcp-ts-template
기반으로 구축된 이 서버는 모듈식 아키텍처를 따릅니다.
개발자 참고 사항 : 이 저장소에는 LLM 코딩 에이전트에 대한 개발자용 요약표 역할을 하는 .clinerules 파일이 포함되어 있으며, 코드베이스 패턴, 파일 위치, 코드 조각에 대한 빠른 참조가 포함되어 있습니다.
목차
개요
원활한 Git 통합으로 AI 에이전트와 개발 도구를 강화하세요!
Git MCP 서버는 브리지 역할을 하여 고급 AI 어시스턴트(LLM), IDE 확장 프로그램 또는 사용자 정의 스크립트와 같이 모델 컨텍스트 프로토콜(MCP)을 이해하는 애플리케이션(MCP 클라이언트)이 로컬 Git 저장소와 직접 안전하게 상호 작용할 수 있도록 합니다.
복잡한 스크립팅이나 수동 CLI 대신 도구를 사용하여 이 서버를 활용하여 다음을 수행할 수 있습니다.
- Git 워크플로 자동화 : 저장소 복제, 브랜치 생성, 변경 사항 스테이지, 작업 커밋, 업데이트 푸시, 태그를 프로그래밍 방식으로 관리합니다.
- 저장소 통찰력 얻기 : 호스트 애플리케이션을 벗어나지 않고도 상태를 확인하고, 로그를 보고, 변경 사항을 비교하고, Git 객체를 검사합니다.
- AI 기반 개발에 Git 통합 : LLM이 코딩이나 리팩토링 작업의 일부로 버전 제어를 관리할 수 있도록 지원합니다.
강력한 mcp-ts-template
기반으로 구축된 이 서버는 MCP 표준을 통해 Git 기능을 제공하는 표준화되고 안전하며 효율적인 방법을 제공합니다. Node.js의 child_process
모듈을 사용하여 시스템에 설치된 표준 git
명령줄 도구를 안전하게 실행함으로써 호환성을 보장하고 Git의 모든 기능을 활용합니다.
특징
핵심 유틸리티(템플릿에서)
mcp-ts-template
이 제공하는 강력한 유틸리티를 활용합니다.
- 로깅 : 민감한 데이터 삭제 기능을 갖춘 구조화되고 구성 가능한 로깅(파일 로테이션, 콘솔, MCP 알림)
- 오류 처리 : 중앙 집중식 오류 처리, 표준화된 오류 유형(
McpError
), 자동 로깅. - 구성 : 환경 변수 로딩(
dotenv
). - 입력 검증/정리 : 스키마 검증 및 사용자 정의 정리 논리(경로에 필수)에
zod
사용합니다. - 요청 컨텍스트 : 고유한 요청 ID를 통해 작업을 추적하고 상관 관계를 파악합니다.
- 타입 안전성 : TypeScript와 Zod 스키마에 의해 강화된 강력한 타입 지정.
- HTTP 전송 옵션 : SSE, 세션 관리, CORS 지원 기능을 갖춘 내장 Express 서버입니다.
Git 작업
- 직접 Git CLI 실행 : Node.js
child_process
통해 표준git
명령줄 도구를 안전하게 실행하여 Git과 상호 작용하고, Git 기능에 대한 완전한 호환성과 액세스를 보장합니다. - 포괄적인 명령 범위 : MCP 도구로서 광범위한 Git 명령을 공개합니다( 도구 섹션 참조).
- 저장소 상호작용 : 상태 확인, 분기, 스테이징, 커밋, 페칭, 풀링, 푸싱, 디프, 로깅, 재설정, 태그 지정 등을 지원합니다.
- 작업 디렉토리 관리 : 여러 Git 작업에서 컨텍스트 지속성을 위해 세션별 작업 디렉토리를 설정하고 지울 수 있습니다.
- 안전 기능 :
git clean
및git reset --hard
와 같이 잠재적으로 파괴적인 작업에 대한 검사를 포함하고 명시적인 확인을 요구합니다. - 커밋 서명 : 검증된 커밋에 대한 GPG 또는 SSH 서명을 지원하며,
GIT_SIGN_COMMITS
환경 변수와 서버 측 Git 설정을 통해 제어됩니다. 서명 실패 시 서명되지 않은 커밋으로 돌아가는 선택적 도구 매개변수가 포함되어 있습니다.
설치
필수 조건
- 노드.js (>=18.0.0)
- npm (Node.js와 함께 제공)
- 시스템 PATH에 Git이 설치되어 접근 가능합니다.
npm을 통해 설치
- 패키지를 전역으로 설치합니다.지엑스피1
소스에서 설치
- 저장소를 복제합니다.
- 종속성 설치:
- 프로젝트를 빌드하세요:이렇게 하면 TypeScript 코드가
dist/
디렉토리의 JavaScript로 컴파일되고 진입점이 실행 가능하게 됩니다.
구성
환경 변수
환경 변수를 사용하여 서버를 구성하세요. 프로젝트 루트에 .env
파일을 생성하거나( .env.example
에서 복사) 환경 변수에 설정하세요.
변하기 쉬운 | 설명 | 기본 |
---|---|---|
MCP_TRANSPORT_TYPE | 전송 메커니즘: stdio 또는 http . | stdio |
MCP_HTTP_PORT | HTTP 서버의 포트( MCP_TRANSPORT_TYPE=http 인 경우). 사용 중이면 다음 포트를 재시도합니다. | 3010 |
MCP_HTTP_HOST | HTTP 서버의 호스트 주소( MCP_TRANSPORT_TYPE=http 인 경우). | 127.0.0.1 |
MCP_ALLOWED_ORIGINS | CORS에 허용되는 출처의 쉼표로 구분된 목록( MCP_TRANSPORT_TYPE=http 인 경우). | (없음) |
MCP_LOG_LEVEL | 로깅 수준( debug , info , notice , warning , error , crit , alert , emerg ). 템플릿에서 상속됨. | info |
GIT_SIGN_COMMITS | git_commit 도구에서 수행된 커밋에 대한 서명 시도를 활성화하려면 "true" 로 설정합니다. 서버 측 Git/키 설정이 필요합니다(아래 참조). | false |
MCP_AUTH_SECRET_KEY | 인증 토큰 서명/검증을 위한 비밀 키(향후 인증이 활성화되는 경우 필요). | '' |
MCP 클라이언트 설정
MCP 클라이언트 설정에 다음을 추가합니다(예: cline_mcp_settings.json
):
프로젝트 구조
코드베이스는 src/
디렉토리 내에서 모듈식 구조를 따릅니다.
자세한 파일 트리를 보려면 npm run tree
실행하거나 docs/tree.md를 참조하세요.
도구
Git MCP 서버는 모델 컨텍스트 프로토콜을 통해 호출 가능한, Git 저장소와 상호작용하기 위한 도구 모음을 제공합니다.
도구 이름 | 설명 | 주요 주장 |
---|---|---|
git_add | 지정된 파일이나 패턴을 단계적으로 실행합니다. | path? , files? |
git_branch | 지점을 관리합니다(나열, 생성, 삭제, 이름 바꾸기, 현재 지점 표시). | path? , mode , branchName? , newBranchName? , startPoint? , force? , all? , remote? |
git_checkout | 브랜치를 전환하거나 작업 트리 파일을 복원합니다. | path? , branchOrPath , newBranch? force? |
git_cherry_pick | 기존 커밋으로 인해 도입된 변경 사항을 적용합니다. | path? , commitRef , mainline? , strategy? , noCommit? signoff? |
git_clean | 추적되지 않는 파일을 제거합니다. force: true 필요합니다 . | path? , force , dryRun? directories? , ignored? |
git_clear_working_dir | 세션별 작업 디렉토리를 지웁니다. | (없음) |
git_clone | 지정된 절대 경로에 저장소를 복제합니다. | repositoryUrl , targetPath , branch? depth? quiet? |
git_commit | 단계적 변경 사항을 커밋합니다. 작성자 재정의 및 서명 제어를 지원합니다. | path? , message , author? , allowEmpty? , amend? , forceUnsignedOnFailure? |
git_diff | 커밋, 작업 트리 등의 변경 사항을 보여줍니다. | path? , commit1? commit2? staged? , file? |
git_fetch | 다른 저장소에서 객체와 참조를 다운로드합니다. | path? , remote? , prune? , tags? , all? |
git_init | 지정된 절대 경로에 새 Git 저장소를 초기화합니다. 초기 브랜치의 기본값은 'main'입니다. | path , initialBranch? , bare? , quiet? |
git_log | 커밋 로그를 보여줍니다. | path? , maxCount? , author? , since? , until? , branchOrFile? |
git_merge | 지정된 브랜치를 현재 브랜치에 병합합니다. | path? , branch , commitMessage? noFf? squash? , abort? |
git_pull | 다른 저장소나 로컬 브랜치에서 가져와서 통합합니다. | path? , remote? , branch? , rebase? , ffOnly? |
git_push | 로컬 참조를 사용하여 원격 참조를 업데이트합니다. | path? , remote? , branch? , remoteBranch? ?, force? , forceWithLease? setUpstream? tags? , delete? |
git_rebase | 다른 기본 팁 위에 커밋을 다시 적용합니다. | path? , mode? , upstream? , branch? , interactive? , strategy? , strategyOption? , onto? |
git_remote | 원격 저장소를 관리합니다(나열, 추가, 제거, 표시). | path? , mode , name? , url? |
git_reset | 현재 HEAD를 지정된 상태로 재설정합니다. 소프트, 혼합, 하드 모드를 지원합니다. 'hard'는 주의해서 사용하세요 . | path? , mode? , commit? |
git_set_working_dir | 기본 작업 디렉터리를 설정합니다. 저장소가 없는 경우 선택적으로 초기화할 수 있습니다. 절대 경로가 필요합니다. | path , validateGitRepo? initializeIfNotPresent? |
git_show | Git 객체(커밋, 태그 등)에 대한 정보를 표시합니다. | path? , ref , filePath? |
git_stash | 저장된 변경 사항을 관리합니다(목록, 적용, 팝업, 삭제, 저장). | path? , mode , stashRef? message? |
git_status | 저장소 상태(브랜치, 스테이징, 수정됨, 추적되지 않은 파일)를 가져옵니다. | path? |
git_tag | 태그를 관리합니다(목록, 주석/가벼운 태그 생성, 삭제). | path? , mode , tagName? , message? , commitRef? , annotate? |
git_worktree | Git 작업 트리를 관리합니다(나열, 추가, 제거, 이동, 정리). | path? , mode , worktreePath? , commitish? , newBranch? , force? , detach? , newPath? , verbose? , dryRun? expire? |
참고: 대부분 도구의 path
매개변수는 git_set_working_dir
통해 설정된 경우 세션의 작업 디렉토리로 기본 설정됩니다.
자원
이 버전(v2.0.12)에서는 MCP 리소스가 구현되지 않았습니다.
이 버전은 최신 mcp-ts-template
및 MCP SDK v1.12.0을 기반으로 리팩토링된 Git 도구 구현에 중점을 둡니다. 이전에 제공되었던 리소스 기능은 이번 주요 업데이트에서 일시적으로 제거되었습니다.
MCP 리소스 액세스가 필요한 경우(예: 서버를 통해 파일 콘텐츠를 직접 읽는 경우) 안정적인 v1.2.4 릴리스를 사용하세요.
향후 개발에서는 후속 릴리스에서 리소스 기능이 다시 도입될 수 있습니다.
참고: 이 버전(v2.0.0)은 최신 MCP SDK를 기반으로 핵심 Git 도구의 리팩토링 및 업데이트에 중점을 두고 있습니다. MCP 리소스 기능은 이 버전에 구현되어 있지 않습니다. 리소스에 액세스하려면 v1.2.4를 사용하세요.
개발
빌드 및 테스트
특허
이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여되었습니다. 자세한 내용은 LICENSE 파일을 참조하세요.
You must be authenticated.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
대규모 언어 모델이 강력한 API를 통해 Git 저장소와 상호 작용할 수 있도록 하는 모델 컨텍스트 프로토콜 서버로, 저장소 초기화, 복제, 파일 스테이징, 커밋, 브랜치 관리와 같은 작업을 지원합니다.
Related Resources
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.Last updated -1252,814PythonMIT License
- AsecurityFlicenseAqualityA Model Context Protocol server that enables AI models to interact with GitHub's API, allowing for repository creation and management with descriptions, topics, and website URLs through natural language commands.Last updated -1JavaScript
- AsecurityAlicenseAqualityA Model Context Protocol server that enables interaction with GitLab accounts to manage repositories, merge requests, code reviews, and CI/CD pipelines through natural language.Last updated -412TypeScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that helps large language models process code repositories by providing file tree generation, code merging, and code analysis capabilities.Last updated -314JavaScriptMIT License