Git MCP Server

Um servidor MCP que permite que agentes de IA interajam com repositórios Git, suportando uma ampla gama de operações como clone, commit, branch e push.

Documentação

@cyanheads/git-mcp-server

Um servidor Git MCP para agentes de IA. STDIO & Streamable HTTP.

28 Ferramentas · 1 Recurso · 1 Prompt

Version MCP Spec MCP SDK License Status TypeScript Bun


Ferramentas

28 operações git organizadas em sete categorias:

CategoriaFerramentasDescrição
Gerenciamento de Repositóriogit_init, git_clone, git_status, git_cleanInicializar repositórios, clonar de remotos, verificar status, limpar arquivos não rastreados
Staging & Commitsgit_add, git_commit, git_diffPreparar alterações, criar commits, comparar alterações
Histórico & Inspeçãogit_log, git_show, git_blame, git_reflogVisualizar histórico de commits, inspecionar objetos, rastrear autoria, visualizar logs de referências
Análisegit_changelog_analyzeColetar contexto git e instruções para análise de changelog orientada por LLM
Ramificação & Mergegit_branch, git_checkout, git_merge, git_rebase, git_cherry_pickGerenciar branches, alternar contextos, integrar alterações, aplicar commits específicos
Operações Remotasgit_remote, git_fetch, git_pull, git_pushConfigurar remotos, buscar atualizações, sincronizar repositórios, publicar alterações
Fluxos de Trabalho Avançadosgit_tag, git_stash, git_reset, git_worktree, git_set_working_dir, git_clear_working_dir, git_wrapup_instructionsMarcar versões (listar/criar/excluir/verificar), guardar alterações, redefinir estado, gerenciar worktrees, definir/limpar diretório de sessão

Recursos

RecursoURIDescrição
Diretório de Trabalho Gitgit://working-directoryO diretório de trabalho da sessão atual, definido via git_set_working_dir.

Prompts

PromptDescriçãoParâmetros
Git Wrap-upProtocolo de fluxo de trabalho para concluir sessões git: revisar, documentar, commitar e marcar alterações.changelogPath, createTag.

Primeiros passos

Runtime

Funciona com Bun e Node.js. O runtime é detectado automaticamente.

RuntimeComandoVersão Mínima
Node.jsnpx @cyanheads/git-mcp-server@latest>= 20.0.0
Bunbunx @cyanheads/git-mcp-server@latest>= 1.2.0

Configuração do cliente MCP

Adicione o seguinte à configuração do seu cliente MCP (ex.: cline_mcp_settings.json). Atualize as variáveis de ambiente para corresponder à sua configuração — especialmente os campos de identidade git.

{
  "mcpServers": {
    "git-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["@cyanheads/git-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "GIT_BASE_DIR": "~/Developer/",
        "LOGS_DIR": "~/Developer/logs/git-mcp-server/",
        "GIT_USERNAME": "cyanheads",
        "GIT_EMAIL": "casey@caseyjhand.com",
        "GIT_SIGN_COMMITS": "true"
      }
    }
  }
}

Usuários de Bun: substitua "command": "npx" por "command": "bunx".

Para Streamable HTTP, defina MCP_TRANSPORT_TYPE=http e MCP_HTTP_PORT=3015.

Recursos

Construído sobre mcp-ts-template.

RecursoDetalhes
Ferramentas declarativasDefina capacidades em arquivos únicos e autocontidos. O framework lida com registro, validação e execução.
Tratamento de errosSistema unificado McpError para respostas de erro consistentes e estruturadas.
AutenticaçãoSuporta modos none, jwt e oauth.
Armazenamento plugávelTroque backends (in-memory, filesystem, Supabase, Cloudflare KV/R2) sem alterar a lógica de negócio.
ObservabilidadeLogging estruturado (Pino) e OpenTelemetry opcional com auto-instrumentação para traces e métricas.
Injeção de dependênciaConstruído com tsyringe para arquitetura desacoplada e testável.
Multi-runtimeDetecta automaticamente Bun ou Node.js e usa o método de spawn de processo apropriado.
Arquitetura de provedoresSistema de provedores git plugável. Atual: CLI. Planejado: isomorphic-git para implantação em edge.
Gerenciamento de diretório de trabalhoContexto de diretório específico da sessão para fluxos de trabalho multi-repositório.
Identidade git configurávelSubstitua informações de autor/committer via variáveis de ambiente, com fallback para a configuração git global.
Assinatura de commitsAssinatura GPG/SSH (habilitada por padrão) para commits, merges, rebases, cherry-picks e tags. Fallback silencioso para não assinado em falha com campos signed/signingWarning nas respostas.
SegurançaOperações destrutivas (git clean, git reset --hard) exigem flags de confirmação explícitas.

Segurança

  • Todos os caminhos de arquivo são validados e sanitizados para prevenir travessia de diretórios.
  • GIT_BASE_DIR opcional restringe operações a uma árvore de diretórios específica para sandboxing multi-tenant.
  • Comandos git usam argumentos validados via spawn de processo — sem interpolação de shell.
  • Suporte a JWT e OAuth para implantações autenticadas.
  • Rate limiting opcional via serviço RateLimiter gerenciado por DI.
  • Todas as operações são registradas com contexto de requisição para auditoria.

Configuração

Toda a configuração é validada na inicialização em src/config/index.ts. Principais variáveis de ambiente:

VariávelDescriçãoPadrão
MCP_TRANSPORT_TYPETransporte: stdio ou http.stdio
MCP_SESSION_MODEModo de sessão HTTP: stateless, stateful ou auto.auto
MCP_RESPONSE_FORMATFormato de resposta: json (otimizado para LLM), markdown (legível para humanos) ou auto.json
MCP_RESPONSE_VERBOSITYNível de detalhe: minimal, standard ou full.standard
MCP_HTTP_PORTPorta do servidor HTTP.3015
MCP_HTTP_HOSTNome do host do servidor HTTP.127.0.0.1
MCP_HTTP_ENDPOINT_PATHCaminho do endpoint de solicitação MCP./mcp
MCP_AUTH_MODEModo de autenticação: none, jwt ou oauth.none
STORAGE_PROVIDER_TYPEBackend de armazenamento: in-memory, filesystem, supabase, cloudflare-kv, r2.in-memory
OTEL_ENABLEDAtivar OpenTelemetry.false
MCP_LOG_LEVELNível mínimo de log: debug, info, warn, error.info
GIT_SIGN_COMMITSAssinatura GPG/SSH para commits, merges, rebases, cherry-picks e tags. Reverte para não assinado em caso de falha (veja resposta signed/signingWarning).true
GIT_AUTHOR_NAMENome do autor Git. Aliases: GIT_USERNAME, GIT_USER. Reverte para a configuração global do git.(none)
GIT_AUTHOR_EMAILE-mail do autor Git. Aliases: GIT_EMAIL, GIT_USER_EMAIL. Reverte para a configuração global do git.(none)
GIT_BASE_DIRCaminho absoluto para restringir todas as operações git a uma árvore de diretórios específica.(none)
GIT_WRAPUP_INSTRUCTIONS_PATHCaminho para arquivo markdown personalizado com instruções de fluxo de trabalho.(none)
MCP_AUTH_SECRET_KEYNecessário para autenticação jwt. Chave secreta com 32+ caracteres.(none)
OAUTH_ISSUER_URLNecessário para autenticação oauth. URL do provedor OIDC.(none)

Executando o servidor

Via gerenciador de pacotes (sem instalação)

npx @cyanheads/git-mcp-server@latest

Configure por meio de variáveis de ambiente ou da configuração do seu cliente MCP.

Desenvolvimento local

# Build and run
npm run rebuild
npm run start:stdio   # or start:http

# Dev mode with hot reload
npm run dev:stdio     # or dev:http

# Checks and tests
npm run devcheck      # lint, format, typecheck
npm test

Cloudflare Workers

npm run build:worker   # Build the worker bundle
npm run deploy:dev     # Run locally with Wrangler
npm run deploy:prod    # Deploy to Cloudflare

Estrutura do projeto

DiretórioFinalidade
src/mcp-server/toolsDefinições de ferramentas (*.tool.ts). As capacidades Git ficam aqui.
src/mcp-server/resourcesDefinições de recursos (*.resource.ts). Fontes de dados de contexto Git.
src/mcp-server/transportsImplementações de transporte HTTP e STDIO, incluindo autenticação.
src/storageAbstração StorageService e implementações de provedores.
src/servicesProvedor de serviços Git (operações git baseadas em CLI).
src/containerRegistros e tokens do contêiner de injeção de dependência.
src/utilsUtilitários de logging, tratamento de erros, desempenho e segurança.
src/configAnálise e validação de variáveis de ambiente (Zod).
tests/Testes unitários e de integração, espelhando a estrutura src/.

Formato de resposta

Configure o formato de saída e a verbosidade via MCP_RESPONSE_FORMAT e MCP_RESPONSE_VERBOSITY.

Formato JSON (padrão, otimizado para consumo por LLM):

{
  "success": true,
  "branch": "main",
  "staged": ["src/index.ts", "README.md"],
  "unstaged": ["package.json"],
  "untracked": []
}

Formato Markdown (legível para humanos):

# Git Status: main

## Staged (2)
- src/index.ts
- README.md

## Unstaged (1)
- package.json

O LLM sempre recebe os dados estruturados completos via responseFormatter — listas completas de arquivos, metadados, timestamps — independentemente do que o cliente exibe. A verbosidade controla quanto detalhe é incluído: minimal (apenas campos principais), standard (equilibrado) ou full (tudo).

Guia de desenvolvimento

Consulte AGENTS.md para arquitetura, padrões de desenvolvimento de ferramentas e regras de contribuição.

Testes

Os testes usam o executor de testes do Bun com compatibilidade com Vitest.

bun test              # Run all tests
bun test --coverage   # With coverage
bun run devcheck      # Lint, format, typecheck, audit

Roadmap

O servidor usa uma arquitetura baseada em provedores para operações git:

  • Provedor CLI (atual) — Cobertura completa de 28 ferramentas via CLI nativa do git. Requer instalação local do git.
  • Provedor git isomórfico (planejado) — Implementação pura em JS para implantação em edge (Cloudflare Workers, Vercel Edge, Deno Deploy). Usa isomorphic-git.
  • Provedor GitHub API (talvez) — Operações nativas em nuvem via APIs REST/GraphQL do GitHub, sem repositório local necessário.

Contribuindo

Issues e pull requests são bem-vindos. Execute as verificações antes de enviar:

npm run devcheck
npm test

Licença

Apache 2.0. Consulte LICENSE.