Git

Ferramentas para ler, pesquisar e manipular repositórios Git

Documentação

mcp-server-git: Um servidor MCP para Git

Visão Geral

Um servidor Model Context Protocol para interação e automação de repositórios Git. Este servidor fornece ferramentas para ler, pesquisar e manipular repositórios Git por meio de Modelos de Linguagem de Grande Porte.

Fonte: https://github.com/modelcontextprotocol/servers/tree/main/src/git

Requer MCP Python SDK 1.x (mcp>=1.29.0,<2). O SDK 2.0 renomeou APIs que este servidor utiliza. A migração para a v2 está em andamento.

Observe que o mcp-server-git está atualmente em desenvolvimento inicial. A funcionalidade e as ferramentas disponíveis estão sujeitas a alterações e expansões à medida que continuamos a desenvolver e melhorar o servidor.

Ferramentas

  1. git_status

    • Mostra o status da árvore de trabalho
    • Entrada:
      • repo_path (string): Caminho para o repositório Git
    • Retorna: Status atual do diretório de trabalho como saída de texto
  2. git_diff_unstaged

    • Mostra alterações no diretório de trabalho ainda não preparadas (staged)
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • context_lines (number, opcional): Número de linhas de contexto para exibir (padrão: 3)
    • Retorna: Saída de diff das alterações não preparadas
  3. git_diff_staged

    • Mostra alterações que estão preparadas (staged) para commit
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • context_lines (number, opcional): Número de linhas de contexto para exibir (padrão: 3)
    • Retorna: Saída de diff das alterações preparadas
  4. git_diff

    • Mostra diferenças entre branches ou commits
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • target (string): Branch ou commit de destino para comparar
      • context_lines (number, opcional): Número de linhas de contexto para exibir (padrão: 3)
    • Retorna: Saída de diff comparando o estado atual com o destino
  5. git_commit

    • Registra alterações no repositório
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • message (string): Mensagem de commit
    • Retorna: Confirmação com o novo hash do commit
  6. git_add

    • Adiciona conteúdos de arquivos à área de staging
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • files (string[]): Matriz de caminhos de arquivos para preparar (stage)
    • Retorna: Confirmação dos arquivos preparados
  7. git_reset

    • Remove todas as alterações preparadas (unstaged)
    • Entrada:
      • repo_path (string): Caminho para o repositório Git
    • Retorna: Confirmação da operação de reset
  8. git_log

    • Mostra os logs de commit com filtro de data opcional
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • max_count (number, opcional): Número máximo de commits para exibir (padrão: 10)
      • start_timestamp (string, opcional): Timestamp de início para filtrar commits. Aceita formato ISO 8601 (ex.: '2024-01-15T14:30:25'), datas relativas (ex.: '2 semanas atrás', 'ontem') ou datas absolutas (ex.: '2024-01-15', '15 de jan de 2024')
      • end_timestamp (string, opcional): Timestamp de fim para filtrar commits. Aceita formato ISO 8601 (ex.: '2024-01-15T14:30:25'), datas relativas (ex.: '2 semanas atrás', 'ontem') ou datas absolutas (ex.: '2024-01-15', '15 de jan de 2024')
    • Retorna: Matriz de entradas de commit com hash, autor, data e mensagem
  9. git_create_branch

    • Cria um novo branch
    • Entradas:
      • repo_path (string): Caminho para o repositório Git
      • branch_name (string): Nome do novo branch
      • base_branch (string, opcional): Branch base para criar a partir (padrão: branch atual)
    • Retorna: Confirmação da criação do branch
  10. git_checkout

  • Alterna entre branches
  • Entradas:
    • repo_path (string): Caminho para o repositório Git
    • branch_name (string): Nome do branch para checkout
  • Retorna: Confirmação da troca de branch
  1. git_show
  • Mostra o conteúdo de um commit
  • Entradas:
    • repo_path (string): Caminho para o repositório Git
    • revision (string): A revisão (hash do commit, nome do branch, tag) para exibir
  • Retorna: Conteúdo do commit especificado
  1. git_branch
  • Lista branches do Git
  • Entradas:
    • repo_path (string): Caminho para o repositório Git.
    • branch_type (string): Se deve listar branches locais ('local'), branches remotos ('remote') ou todos os branches ('all').
    • contains (string, opcional): O sha do commit que o branch deve conter. Não passe nada para este parâmetro se nenhum sha de commit for especificado
    • not_contains (string, opcional): O sha do commit que o branch NÃO deve conter. Não passe nada para este parâmetro se nenhum sha de commit for especificado
  • Retorna: Lista de branches

Instalação

Usando uv (recomendado)

Ao usar uv nenhuma instalação específica é necessária. Usaremos uvx para executar diretamente o mcp-server-git.

Usando PIP

Alternativamente, você pode instalar mcp-server-git via pip:

pip install mcp-server-git

Após a instalação, você pode executá-lo como um script usando:

python -m mcp_server_git

Configuração

Uso com Claude Desktop

Adicione isso ao seu claude_desktop_config.json:

Usando uvx
"mcpServers": {
  "git": {
    "command": "uvx",
    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
  }
}
Usando docker
  • Nota: substitua '/Users/username' por um caminho que você deseja que seja acessível por esta ferramenta
"mcpServers": {
  "git": {
    "command": "docker",
    "args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
  }
}
Usando instalação via pip
"mcpServers": {
  "git": {
    "command": "python",
    "args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
  }
}

Uso com VS Code

Para instalação rápida, use um dos botões de instalação com um clique abaixo...

Install with UV in VS Code Install with UV in VS Code Insiders

Install with Docker in VS Code Install with Docker in VS Code Insiders

Para instalação manual, você pode configurar o servidor MCP usando um destes métodos:

Método 1: Configuração do Usuário (Recomendado) Adicione a configuração ao seu arquivo de configuração MCP no nível do usuário. Abra a Paleta de Comandos (Ctrl + Shift + P) e execute MCP: Open User Configuration. Isso abrirá seu arquivo mcp.json de usuário onde você pode adicionar a configuração do servidor.

Método 2: Configuração do Workspace Alternativamente, você pode adicionar a configuração a um arquivo chamado .vscode/mcp.json no seu workspace. Isso permitirá que você compartilhe a configuração com outras pessoas.

Para mais detalhes sobre a configuração do MCP no VS Code, consulte a documentação oficial do MCP do VS Code.

{
  "servers": {
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git"]
    }
  }
}

Para instalação via Docker:

{
  "mcp": {
    "servers": {
      "git": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
          "mcp/git"
        ]
      }
    }
  }
}

Uso com Zed

Adicione ao seu settings.json do Zed:

Usando uvx
"context_servers": [
  "mcp-server-git": {
    "command": {
      "path": "uvx",
      "args": ["mcp-server-git"]
    }
  }
],
Usando instalação via pip
"context_servers": {
  "mcp-server-git": {
    "command": {
      "path": "python",
      "args": ["-m", "mcp_server_git"]
    }
  }
},

Uso com Zencoder

  1. Vá ao menu do Zencoder (...)
  2. No menu suspenso, selecione Agent Tools
  3. Clique em Add Custom MCP
  4. Adicione o nome (ex.: git) e a configuração do servidor abaixo, e certifique-se de clicar no botão Install
Usando uvx
{
    "command": "uvx",
    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
}

Depuração

Você pode usar o inspetor MCP para depurar o servidor. Para instalações via uvx:

npx @modelcontextprotocol/inspector uvx mcp-server-git

Ou se você instalou o pacote em um diretório específico ou está desenvolvendo nele:

cd path/to/servers/src/git
npx @modelcontextprotocol/inspector uv run mcp-server-git

Executar tail -n 20 -f ~/Library/Logs/Claude/mcp*.log mostrará os logs do servidor e pode ajudar a depurar quaisquer problemas.

Desenvolvimento

Se você está fazendo desenvolvimento local, há duas maneiras de testar suas alterações:

  1. Execute o inspetor MCP para testar suas alterações. Consulte Depuração para instruções de execução.

  2. Teste usando o aplicativo de desktop Claude. Adicione o seguinte ao seu claude_desktop_config.json:

Docker

{
  "mcpServers": {
    "git": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
        "mcp/git"
      ]
    }
  }
}

UVX

{
"mcpServers": {
  "git": {
    "command": "uv",
    "args": [
      "--directory",
      "/<path to mcp-servers>/mcp-servers/src/git",
      "run",
      "mcp-server-git"
    ]
    }
  }
}

Compilação

Build Docker:

cd src/git
docker build -t mcp/git .

Licença

Este servidor MCP é licenciado sob a Licença MIT. Isso significa que você é livre para usar, modificar e distribuir o software, sujeito aos termos e condições da Licença MIT. Para mais detalhes, consulte o arquivo LICENSE no repositório do projeto.