Git MCP Server

by cyanheads
Verified

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Provides comprehensive Git operations including repository initialization, cloning, file staging, committing, branch management, tag operations, remote repository handling, and stash management, enabling LLMs to interact with Git repositories.

  • Supports interactions with GitHub repositories through Git operations like cloning from GitHub URLs, pushing to and pulling from GitHub remotes, enabling LLMs to manage code on GitHub.

GIT MCP 서버

Git 저장소와 상호 작용하기 위한 도구를 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 통해 AI 어시스턴트와 LLM 에이전트는 파일 시스템이나 명령줄에 직접 접근하지 않고도 표준화된 인터페이스를 통해 저장소, 브랜치, 커밋 및 파일을 관리할 수 있습니다. Git 작업을 MCP 리소스 및 도구로 공개하여 핵심 기능에 simple-git 라이브러리를 활용하는 동시에 적절한 보안 경계를 유지합니다.

목차

개요

주요 기능:

  • 저장소 관리 : 저장소 상태 초기화, 복제 및 확인
  • 지점 작업 : 지점 생성, 목록 작성, 체크아웃, 삭제 및 병합
  • 작업 디렉토리 : 파일 스테이징, 변경 사항 커밋, diff 생성
  • 원격 작업 : 원격 추가, 가져오기, 풀, 푸시
  • 고급 Git 명령어 : 태그 관리, 변경 사항 저장, 체리픽, 리베이스

아키텍처 및 구성 요소

핵심 시스템 아키텍처:

지엑스피1

핵심 구성 요소:

  • MCP 서버( server.ts ) : @modelcontextprotocol/sdk 사용하여 리소스와 도구를 공개하는 서버를 만듭니다.
  • Git 서비스( services/git-service.ts ) : simple-git 라이브러리에 대한 추상화 계층으로 Git 작업을 위한 깔끔한 인터페이스를 제공합니다.
  • 리소스( resources/ ) : 일관된 URI 템플릿을 사용하여 MCP 리소스를 통해 Git 데이터(상태, 로그, 파일 콘텐츠 등)를 노출합니다.
  • 도구( tools/ ) : 잘 정의된 입력 스키마(Zod를 사용하여 검증됨)를 사용하여 MCP 도구를 통해 Git 작업(커밋, 푸시, 풀 등)을 노출합니다.
  • 오류 처리( services/error-service.ts ) : Git 및 MCP 작업에 대한 표준화된 오류 처리 및 보고.
  • 진입점( index.ts ) : 서버를 초기화하고 시작하여 표준 I/O 전송에 연결합니다.

특징

리소스 액세스

MCP 리소스를 통해 Git 저장소 정보를 공개합니다.

  • 저장소 정보 : 현재 브랜치, 상태 및 참조 세부 정보를 포함한 기본 Git 저장소 정보에 액세스합니다.
  • 저장소 브랜치 : 현재 브랜치 표시기와 함께 저장소의 모든 브랜치를 나열합니다.
  • 저장소 원격 : 구성된 모든 원격 저장소를 해당 URL과 함께 나열합니다.
  • 저장소 태그 : 참조와 함께 저장소의 모든 태그를 나열합니다.
  • 파일 콘텐츠 : 지정된 Git 참조에서 특정 파일의 콘텐츠에 액세스합니다.
  • 디렉토리 목록 : 특정 경로 및 참조에 있는 파일 및 디렉토리 목록을 봅니다.
  • Diffs : 참조, 준비되지 않은 변경 사항 또는 준비된 변경 사항 간의 차이점을 가져옵니다.
  • 커밋 기록 : 작성자, 날짜 및 메시지 정보가 포함된 자세한 커밋 로그를 확인합니다.
  • 파일 비난 : 각 줄이 마지막으로 수정된 커밋을 보여주는 줄별 속성을 확인하세요.
  • 커밋 세부 정보 : diff 변경 사항을 포함한 특정 커밋에 대한 자세한 정보에 액세스합니다.

Git 작업

MCP 도구를 통해 Git 명령을 실행합니다.

  • 저장소 작업 : 저장소 초기화, 원격 저장소에서 복제, 저장소 상태 확인
  • 지점 작업 : 지점 생성, 지점 목록, 체크아웃, 지점 삭제, 병합
  • 작업 디렉토리 작업 : 파일 스테이징, 파일 스테이징 해제, 변경 사항 커밋, diff 생성
  • 원격 작업 : 원격 추가, 원격 목록, 가져오기, 풀, 푸시
  • 고급 작업 : 태그 관리, 변경 사항 저장, 커밋 선택, 브랜치 리베이스, 재설정, 정리

설치

필수 조건

  • Node.js 16 이상
  • Git이 설치되어 PATH에 사용 가능함

NPM에서 설치

npm install -g @cyanheads/git-mcp-server

소스에서 설치

git clone https://github.com/cyanheads/git-mcp-server.git cd git-mcp-server npm install npm run build

용법

서버 실행

NPM을 통해 글로벌하게 설치된 경우:

git-mcp-server

소스에서 실행하는 경우:

node build/index.js

서버는 Model Context Protocol을 사용하여 stdin/stdout을 통해 통신하므로 모든 MCP 클라이언트와 호환됩니다.

Claude와의 통합

Claude 구성 파일(예: cline_mcp_settings.json 또는 claude_desktop_config.json )에 다음을 추가합니다.

{ "mcpServers": { "git": { "command": "git-mcp-server", // Or the full path to build/index.js if not installed globally "args": [], "env": {}, "disabled": false, "autoApprove": [] // Configure auto-approval rules if desired } } }

다른 MCP 클라이언트와의 통합

MCP 검사기를 사용하여 서버를 테스트하세요.

# If installed globally npx @modelcontextprotocol/inspector git-mcp-server # If running from source npx @modelcontextprotocol/inspector build/index.js

프로젝트 구조

코드베이스는 모듈형 구조를 따릅니다.

git-mcp-server/ ├── src/ │ ├── index.ts # Entry point: Initializes and starts the server │ ├── server.ts # Core MCP server implementation and setup │ ├── resources/ # MCP Resource implementations │ │ ├── descriptors.ts # Resource URI templates and descriptions │ │ ├── diff.ts # Diff-related resources (staged, unstaged, commit) │ │ ├── file.ts # File content and directory listing resources │ │ ├── history.ts # Commit history and blame resources │ │ ├── index.ts # Aggregates and registers all resources │ │ └── repository.ts # Repository info, branches, remotes, tags resources │ ├── services/ # Core logic and external integrations │ │ ├── error-service.ts # Centralized error handling utilities │ │ └── git-service.ts # Abstraction layer for simple-git operations │ ├── tools/ # MCP Tool implementations │ │ ├── advanced.ts # Advanced Git tools (tag, stash, cherry-pick, rebase, log, show) │ │ ├── branch.ts # Branch management tools (list, create, checkout, delete, merge) │ │ ├── index.ts # Aggregates and registers all tools │ │ ├── remote.ts # Remote interaction tools (add, list, fetch, pull, push) │ │ ├── repository.ts # Repository level tools (init, clone, status) │ │ └── workdir.ts # Working directory tools (add, reset, commit, diff, reset-commit, clean) │ ├── types/ # TypeScript type definitions │ │ └── git.ts # Custom types related to Git operations │ └── utils/ # Shared utility functions │ ├── global-settings.ts # Manages global working directory setting │ └── validation.ts # Input validation schemas (Zod) and helpers ├── build/ # Compiled JavaScript output ├── docs/ # Documentation files ├── logs/ # Log files (if any) ├── scripts/ # Helper scripts for development (e.g., clean, tree) ├── .env.example # Example environment variables ├── .gitignore # Git ignore rules ├── LICENSE # Project license file ├── package.json # Project metadata and dependencies ├── package-lock.json # Lockfile for dependencies ├── README.md # This file └── tsconfig.json # TypeScript compiler configuration

도구

Git MCP Server는 Git 작업을 위한 포괄적인 도구 모음을 제공합니다.

저장소 작업

도구설명
git_init베어 저장소에 대한 옵션을 사용하여 지정된 경로에 새로운 Git 저장소를 초기화합니다.
git_clone원격 URL에서 로컬 경로로 브랜치 및 깊이 옵션을 사용하여 Git 저장소를 복제합니다.
git_status작업 디렉토리와 스테이징 영역 변경 사항을 포함한 Git 저장소의 현재 상태를 가져옵니다.

지점 운영

도구설명
git_branch_list원격 브랜치를 포함하는 옵션과 함께 저장소의 모든 브랜치를 나열합니다.
git_branch_create시작 지점과 자동 체크아웃을 지정하는 옵션을 사용하여 새로운 브랜치를 만듭니다.
git_checkout브랜치, 태그 또는 커밋을 체크아웃하고 체크아웃 중에 새 브랜치를 만드는 옵션을 사용합니다.
git_branch_delete병합되지 않은 브랜치를 강제로 삭제하는 옵션을 사용하여 브랜치를 삭제합니다.
git_merge사용자 정의 가능한 커밋 메시지와 병합 전략을 사용하여 브랜치를 현재 브랜치에 병합합니다.

작업 디렉토리 작업

도구설명
git_add개별 파일이나 전체 디렉토리를 지원하여 커밋을 위한 파일을 준비합니다.
git_reset특정 파일이나 모든 스테이징된 변경 사항에 대한 옵션을 사용하여 스테이징 영역에서 파일의 스테이징을 해제합니다.
git_commit사용자 정의 가능한 커밋 메시지, 작성자 정보 및 수정 옵션을 사용하여 단계별 변경 사항을 커밋합니다.
git_diff_unstaged특정 파일에 대한 옵션을 사용하여 작업 디렉토리의 모든 스테이징되지 않은 변경 사항의 차이점을 가져옵니다.
git_diff_staged특정 파일에 대한 옵션을 사용하여 인덱스의 모든 단계적 변경 사항의 차이점을 가져옵니다.
git_reset_commit하드, 소프트 또는 혼합 모드 옵션을 사용하여 저장소를 특정 참조로 재설정합니다.
git_clean디렉토리 및 강제 정리 옵션을 사용하여 추적되지 않은 파일을 작업 트리에서 제거합니다.

원격 작업

도구설명
git_remote_add이름과 URL을 입력하여 새로운 원격 저장소를 추가합니다.
git_remote_list구성된 모든 원격 저장소와 해당 URL을 나열합니다.
git_fetch특정 브랜치에 대한 옵션을 사용하여 원격 저장소에서 업데이트를 가져옵니다.
git_pull리베이스 전략에 대한 옵션을 사용하여 원격 저장소에서 변경 사항을 가져옵니다.
git_push강제 푸시 및 업스트림 추적 옵션을 사용하여 로컬 변경 사항을 원격 저장소에 푸시합니다.

고급 작업

도구설명
git_tag_create메시지가 포함된 주석 태그에 대한 옵션을 사용하여 새로운 태그를 만듭니다.
git_tag_list저장소에 있는 모든 태그를 참조와 함께 나열합니다.
git_stash_create추적되지 않은 파일과 설명에 대한 옵션을 사용하여 작업 디렉토리에 변경 사항을 저장합니다.
git_stash_list저장소에 있는 모든 스태시를 설명과 함께 나열합니다.
git_stash_apply스태시 목록에서 제거하지 않고 스태시된 변경 사항을 적용합니다.
git_stash_pop보관된 변경 사항을 적용하고 보관 목록에서 제거합니다.
git_cherry_pick특정 커밋의 변경 사항을 현재 브랜치에 적용합니다.
git_rebase대화형 모드 옵션을 사용하여 현재 브랜치를 다른 브랜치로 리베이스합니다.
git_log사용자 정의 가능한 출력 형식과 깊이로 커밋 기록을 가져옵니다.
git_showdiff 변경 사항을 포함한 특정 커밋에 대한 자세한 정보를 표시합니다.

자원

Git MCP 서버는 표준 MCP 리소스를 통해 Git 데이터를 노출합니다.

저장소 리소스

의지설명
git://repo/{repoPath}/info현재 브랜치, 상태 및 참조 세부 정보를 포함한 기본 Git 저장소 정보
git://repo/{repoPath}/branches현재 브랜치 표시기가 있는 저장소의 모든 브랜치 목록
git://repo/{repoPath}/remotesURL이 포함된 구성된 모든 원격 저장소 목록
git://repo/{repoPath}/tags참조가 포함된 저장소의 모든 태그 목록
git://repo/{repoPath}/file/{filePath}?ref={ref}주어진 Git 참조에서 특정 파일의 내용을 반환합니다.
git://repo/{repoPath}/ls/{dirPath}?ref={ref}특정 경로 및 참조에 있는 파일 및 디렉토리 목록을 반환합니다.
git://repo/{repoPath}/diff/{fromRef}/{toRef}?path={path}두 개의 Git 참조(커밋, 브랜치, 태그) 간의 diff를 반환합니다.
git://repo/{repoPath}/diff-unstaged?path={path}작업 디렉토리의 모든 미준비 변경 사항의 diff를 반환합니다.
git://repo/{repoPath}/diff-staged?path={path}인덱스의 모든 단계적 변경 사항의 차이점을 반환합니다.
git://repo/{repoPath}/log?maxCount={maxCount}&file={file}작성자, 날짜 및 메시지 세부 정보가 포함된 커밋 기록 로그를 반환합니다.
git://repo/{repoPath}/blame/{filePath}각 줄에 마지막으로 수정된 커밋을 표시하는 줄별 속성을 반환합니다.
git://repo/{repoPath}/commit/{commitHash}diff 변경 사항을 포함한 특정 커밋에 대한 자세한 정보를 반환합니다.

개발

빌드 및 테스트

# Build the project npm run build # Watch for changes and rebuild automatically npm run watch # Test the server locally using the MCP inspector tool npm run inspector # Clean build artifacts npm run clean # Generate a file tree representation for documentation npm run tree # Clean and rebuild the project completely npm run rebuild

특허

Apache License 2.0 - 자세한 내용은 LICENSE를 참조하세요.


You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

대규모 언어 모델이 강력한 API를 통해 Git 저장소와 상호 작용할 수 있도록 하는 모델 컨텍스트 프로토콜 서버로, 저장소 초기화, 복제, 파일 스테이징, 커밋, 브랜치 관리와 같은 작업을 지원합니다.

  1. Table of Contents
    1. Overview
      1. Architecture & Components
    2. Features
      1. Resource Access
      2. Git Operations
    3. Installation
      1. Prerequisites
      2. Install from NPM
      3. Install from Source
    4. Usage
      1. Running the Server
      2. Integration with Claude
      3. Integration with Other MCP Clients
    5. Project Structure
      1. Tools
        1. Repository Operations
        2. Branch Operations
        3. Working Directory Operations
        4. Remote Operations
        5. Advanced Operations
      2. Resources
        1. Repository Resources
      3. Development
        1. Build and Test
      4. License
        ID: e0hyslgby6