Git Commit Message Generator

Gera mensagens de commit no estilo Conventional Commits usando provedores de LLM como DeepSeek e Groq.

Documentação

Git Commit Message Generator MCP Server

Python 3.10+ License: MIT MCP Compatible

Um servidor MCP inteligente que gera automaticamente mensagens de commit no estilo Conventional Commits usando provedores de LLM como DeepSeek e Groq.

Recursos

  • Com IA: Utiliza provedores de LLM (DeepSeek, Groq) para geração inteligente de mensagens de commit
  • Conventional Commits: Segue as convenções padrão do setor para mensagens de commit
  • Multi-provedor: Suporta múltiplos provedores de LLM com fácil alternância
  • Compatível com MCP: Funciona perfeitamente com Claude, Cursor, Gemini CLI e outros clientes MCP
  • Configuração fácil: Configuração simples via variáveis de ambiente

Sumário

Início Rápido

  1. Clone e instale:

    git clone https://github.com/FradSer/mcp-server-git-cz.git
    cd mcp-server-git-cz
    uv venv && uv pip install -r requirements.txt
    
  2. Configure o ambiente:

    cp .env.example .env
    # Edit .env with your API keys
    
  3. Execute o servidor:

    uv run mcp-server-git-cz
    

Instalação

Pré-requisitos

Instalação Passo a Passo

  1. Clone o repositório:

    git clone https://github.com/FradSer/mcp-server-git-cz.git
    cd mcp-server-git-cz
    
  2. Crie um ambiente virtual e instale as dependências:

    uv venv
    uv pip install -r requirements.txt
    
  3. Configure as variáveis de ambiente:

    cp .env.example .env
    

    Edite o arquivo .env:

    DEEPSEEK_API_KEY=your_deepseek_api_key
    GROQ_API_KEY=your_groq_api_key
    LLM_PROVIDER=deepseek  # or groq
    

Configuração

Variáveis de Ambiente

VariávelDescriçãoPadrãoObrigatória
DEEPSEEK_API_KEYChave da API DeepSeek-Sim (se usar DeepSeek)
GROQ_API_KEYChave da API Groq-Sim (se usar Groq)
LLM_PROVIDERProvedor de LLM a usardeepseekNão

Opções de Transporte

O servidor suporta múltiplos métodos de transporte:

# STDIO transport (recommended)
uv run mcp-server-git-cz

# SSE transport
uv run mcp-server-git-cz --transport sse --port 8000

Uso

O servidor expõe uma única ferramenta: generate_commit_message que analisa seu diff do git e gera mensagens de commit convencionais.

Exemplo Básico

import asyncio
from mcp.client.session import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

async def main():
    async with stdio_client(
        StdioServerParameters(command="uv", args=["run", "mcp-server-git-cz"])
    ) as (read, write):
        async with ClientSession(read, write) as session:
            await session.initialize()
            
            # Generate commit message
            result = await session.call_tool("generate_commit_message", {})
            print(result)

asyncio.run(main())

Configuração do Cliente MCP

Nota: Substitua /path/to/mcp-server-git-cz pelo caminho real do diretório do seu projeto em todas as configurações abaixo.

Claude Code

# Project scope (recommended for teams)
claude mcp add git-cz -s project -- uv run --python /path/to/mcp-server-git-cz/.venv/bin/python -m mcp_server_git_cz

# User scope (personal use)
claude mcp add git-cz -s user -- uv run --python /path/to/mcp-server-git-cz/.venv/bin/python -m mcp_server_git_cz

Cursor

Adicione às configurações do Cursor:

{
  "mcpServers": {
    "git-cz": {
      "command": "uv",
      "args": ["run", "--python", "/path/to/mcp-server-git-cz/.venv/bin/python", "-m", "mcp_server_git_cz"],
      "env": {},
      "transport": "stdio"
    }
  }
}

Gemini CLI

Adicione a ~/.gemini/settings.json:

{
  "mcpServers": {
    "git-cz": {
      "command": "uv",
      "args": ["run", "--python", "/path/to/mcp-server-git-cz/.venv/bin/python", "-m", "mcp_server_git_cz"],
      "env": {}
    }
  }
}
Instruções Detalhadas de Configuração

Encontrando Seus Caminhos

  1. Obtenha o caminho do ambiente virtual:

    cd mcp-server-git-cz
    uv venv
    which python  # Copy this path
    
  2. Obtenha o diretório do projeto:

    pwd  # Copy this path
    
  3. Atualize as configurações com seus caminhos reais

Configuração Avançada

Com Variáveis de Ambiente

{
  "mcpServers": {
    "git-cz": {
      "command": "uv",
      "args": ["run", "--python", "/path/to/mcp-server-git-cz/.venv/bin/python", "-m", "mcp_server_git_cz"],
      "env": {
        "DEEPSEEK_API_KEY": "your_key_here",
        "LLM_PROVIDER": "deepseek"
      }
    }
  }
}

Com Diretório de Trabalho

{
  "mcpServers": {
    "git-cz": {
      "command": "uv",
      "args": ["run", "--python", "/path/to/mcp-server-git-cz/.venv/bin/python", "-m", "mcp_server_git_cz"],
      "cwd": "/path/to/mcp-server-git-cz",
      "env": {}
    }
  }
}

Exemplos

Usando com Clientes MCP

Após a configuração, você pode interagir com a ferramenta usando linguagem natural:

  • "Gere uma mensagem de commit para minhas alterações atuais"
  • "Crie uma mensagem de commit convencional com base no meu diff do git"
  • "Ajude-me a escrever uma mensagem de commit seguindo conventional commits"

O servidor irá:

  1. Analisar seu diff do git atual
  2. Gerar uma mensagem de commit convencional usando IA
  3. Retornar a mensagem formatada para revisão

Exemplo de Saída

feat(auth): add OAuth2 integration with GitHub

- Implement OAuth2 authentication flow
- Add GitHub provider configuration
- Update user model to support external auth
- Add tests for authentication endpoints

Closes #123

Contribuição

Agradecemos contribuições! Siga estas diretrizes:

Configuração de Desenvolvimento

  1. Faça um fork do repositório
  2. Crie um branch de funcionalidade: git checkout -b feature/amazing-feature
  3. Faça suas alterações
  4. Execute os testes: make test
  5. Faça commits usando conventional commits: git commit -m 'feat: add amazing feature'
  6. Envie para seu branch: git push origin feature/amazing-feature
  7. Abra um Pull Request

Estilo de Código

  • Siga PEP 8 para código Python
  • Use Black para formatação de código
  • Adicione dicas de tipo onde apropriado
  • Escreva testes para novos recursos

Relatando Problemas

Encontrou um bug? Tem uma solicitação de recurso? Por favor, abra uma issue com:

  • Descrição clara do problema
  • Passos para reproduzir
  • Comportamento esperado vs. real
  • Detalhes do ambiente

Licença

Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

Suporte

Agradecimentos


Feito com ❤️ para a comunidade de desenvolvedores
⭐ Dê uma estrela neste repositório se você o achar útil!