MCP Git Repo Browser

Um navegador de repositórios Git que permite navegar e inspecionar repositórios Git locais usando o Model Context Protocol.

Documentação

MCP Git Repo Browser (Node.js)

Uma implementação em Node.js de um navegador de repositórios Git usando o Model Context Protocol (MCP).

GitHub Repository npm package

Instalação

NPM (Recomendado)

npm install -g git-commands-mcp

Instalação Manual

git clone https://github.com/bsreeram08/git-commands-mcp.git
cd git-commands-mcp
npm install

Configuração

Adicione isto ao seu arquivo de configuração de configurações MCP:

{
  "mcpServers": {
    "git-commands-mcp": {
      "command": "git-commands-mcp"
    }
  }
}

Para instalação manual, use:

{
  "mcpServers": {
    "git-commands-mcp": {
      "command": "node",
      "args": ["/path/to/git-commands-mcp/src/index.js"]
    }
  }
}

Recursos

O servidor fornece as seguintes ferramentas:

Operações Básicas de Repositório

  1. git_directory_structure: Retorna uma representação em forma de árvore da estrutura de diretórios de um repositório
    • Entrada: URL do repositório
      • Saída: Representação em árvore ASCII da estrutura do repositório
  2. git_read_files: Lê e retorna o conteúdo de arquivos especificados em um repositório
    • Entrada: URL do repositório e lista de caminhos de arquivos
      • Saída: Dicionário mapeando caminhos de arquivos para seus conteúdos
  3. git_search_code: Pesquisa padrões no código do repositório
    • Entrada: URL do repositório, padrão de pesquisa, padrões de arquivos opcionais, sensibilidade a maiúsculas/minúsculas e linhas de contexto
      • Saída: JSON com resultados da pesquisa, incluindo linhas correspondentes e contexto

Operações de Branch

  1. git_branch_diff: Compara dois branches e mostra os arquivos alterados entre eles
    • Entrada: URL do repositório, branch de origem, branch de destino e flag opcional show_patch
      • Saída: JSON com contagem de commits e resumo do diff

Operações de Commit

  1. git_commit_history: Obtém o histórico de commits de um branch com filtragem opcional
    • Entrada: URL do repositório, nome do branch, contagem máxima, filtro de autor, data inicial, data final e grep de mensagem
      • Saída: JSON com detalhes dos commits
  2. git_commits_details: Obtém informações detalhadas sobre commits, incluindo mensagens completas e diffs
    • Entrada: URL do repositório, nome do branch, contagem máxima, flag include_diff, filtro de autor, data inicial, data final e grep de mensagem
      • Saída: JSON com informações detalhadas dos commits
  3. git_local_changes: Obtém alterações não commitadas no diretório de trabalho
    • Entrada: Caminho do repositório local
      • Saída: JSON com informações de status e diffs

Estrutura do Projeto

git-commands-mcp/
├── src/
│   ├── index.js         # Entry point
│   ├── server.js        # Main server implementation
│   ├── handlers/        # Tool handlers
│   │   └── index.js     # Tool implementation functions
│   └── utils/           # Utility functions
│       └── git.js       # Git-related helper functions
├── package.json
└── readme.md

Detalhes de Implementação

  • Usa módulos nativos do Node.js (crypto, path, os) para funcionalidades principais
  • Utiliza fs-extra para operações aprimoradas de arquivos
  • Usa simple-git para operações de repositórios Git
  • Implementa tratamento limpo de erros e limpeza de recursos
  • Cria diretórios temporários determinísticos baseados em hashes de URLs de repositórios
  • Reutiliza repositórios clonados quando possível para eficiência
  • Estrutura de código modular para melhor manutenibilidade

Requisitos

  • Node.js 14.x ou superior
  • Git instalado no sistema

Uso

Se instalado globalmente via npm:

git-commands-mcp

Se instalado manualmente:

node src/index.js

O servidor roda em stdio, tornando-o compatível com clientes MCP.

CI/CD

Este projeto usa GitHub Actions para integração contínua e implantação:

Publicação Automática no NPM

O repositório está configurado com um fluxo de trabalho do GitHub Actions que publica automaticamente o pacote no npm quando alterações são enviadas para o branch master.

Configurando NPM_AUTOMATION_TOKEN

Para habilitar a publicação automática, você precisa adicionar um token de automação npm como um segredo do GitHub (isso funciona mesmo com contas que têm 2FA habilitado):

  1. Gere um token de automação npm:
    • Faça login na sua conta npm em npmjs.com
      • Vá para as configurações do seu perfil
      • Selecione "Access Tokens"
      • Clique em "Generate New Token"
      • Selecione o tipo de token "Automation"
      • Defina as permissões apropriadas (precisa de "Read and write" para pacotes)
      • Copie o token gerado
  2. Adicione o token ao seu repositório GitHub:
    • Vá para o seu repositório GitHub
      • Navegue até "Settings" > "Secrets and variables" > "Actions"
      • Clique em "New repository secret"
      • Nome: NPM_AUTOMATION_TOKEN
      • Valor: Cole seu token de automação npm
      • Clique em "Add secret"

Uma vez configurado, qualquer push para o branch master acionará o fluxo de trabalho para publicar o pacote no npm.

Licença

Licença MIT - veja o arquivo LICENSE para detalhes.

Links