Skip to main content
Glama
FradSer

Git Commit Message Generator MCP Server

by FradSer

Git Commit Message Generator MCP Server

Python 3.10+ License: MIT MCP Compatible

An intelligent MCP server that automatically generates Conventional Commits style commit messages using LLM providers like DeepSeek and Groq.

Features

  • AI-Powered: Leverages LLM providers (DeepSeek, Groq) for intelligent commit message generation

  • Conventional Commits: Follows industry-standard commit message conventions

  • Multi-Provider: Supports multiple LLM providers with easy switching

  • MCP Compatible: Works seamlessly with Claude, Cursor, Gemini CLI, and other MCP clients

  • Easy Setup: Simple configuration via environment variables

Related MCP server: Cursor Auto-Review MCP Server

Table of Contents

Quick Start

  1. Clone and install:

    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 environment:

    cp .env.example .env
    # Edit .env with your API keys
  3. Run the server:

    uv run mcp-server-git-cz

Installation

Prerequisites

Step-by-step Installation

  1. Clone the repository:

    git clone https://github.com/FradSer/mcp-server-git-cz.git
    cd mcp-server-git-cz
  2. Create virtual environment and install dependencies:

    uv venv
    uv pip install -r requirements.txt
  3. Set up environment variables:

    cp .env.example .env

    Edit .env file:

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

Configuration

Environment Variables

Variable

Description

Default

Required

DEEPSEEK_API_KEY

DeepSeek API key

-

Yes (if using DeepSeek)

GROQ_API_KEY

Groq API key

-

Yes (if using Groq)

LLM_PROVIDER

LLM provider to use

deepseek

No

Transport Options

The server supports multiple transport methods:

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

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

Usage

The server exposes a single tool: generate_commit_message that analyzes your git diff and generates conventional commit messages.

Basic Example

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())

MCP Client Setup

Note: Replace /path/to/mcp-server-git-cz with your actual project directory path in all configurations below.

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

Add to Cursor settings:

{
  "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

Add to ~/.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": {}
    }
  }
}

Finding Your Paths

  1. Get virtual environment path:

    cd mcp-server-git-cz
    uv venv
    which python  # Copy this path
  2. Get project directory:

    pwd  # Copy this path
  3. Update configurations with your actual paths

Advanced Configuration

With Environment Variables

{
  "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"
      }
    }
  }
}

With Working Directory

{
  "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": {}
    }
  }
}

Examples

Using with MCP Clients

Once configured, you can interact with the tool using natural language:

  • "Generate a commit message for my current changes"

  • "Create a conventional commit message based on my git diff"

  • "Help me write a commit message following conventional commits"

The server will:

  1. Analyze your current git diff

  2. Generate a conventional commit message using AI

  3. Return the formatted message for review

Example Output

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

Contributing

We welcome contributions! Please follow these guidelines:

Development Setup

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/amazing-feature

  3. Make your changes

  4. Run tests: make test

  5. Commit using conventional commits: git commit -m 'feat: add amazing feature'

  6. Push to your branch: git push origin feature/amazing-feature

  7. Open a Pull Request

Code Style

  • Follow PEP 8 for Python code

  • Use Black for code formatting

  • Add type hints where appropriate

  • Write tests for new features

Reporting Issues

Found a bug? Have a feature request? Please open an issue with:

  • Clear description of the problem

  • Steps to reproduce

  • Expected vs actual behavior

  • Environment details

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments


Available Tools

1 tool
generate_commit_messageCommit Message GeneratorB

Generate a commit message from the git changes in the current project directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates a commit message but does not describe how it works (e.g., whether it uses AI, templates, or summaries), what output format to expect, or any constraints (e.g., error handling if no git changes exist). This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that directly states the tool's function without redundancy. It is front-loaded with the core action and includes essential context (git changes, current directory). There is no wasted verbiage, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains what the tool does but lacks details on behavior, output, or error conditions. Without annotations or output schema, the description should provide more context to be fully complete, but it meets minimum viability for a basic tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description appropriately does not discuss parameters, which is efficient. A baseline score of 4 is applied for zero parameters, as it avoids unnecessary detail while matching the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Generate a commit message from the git changes in the current project directory.' It specifies the verb ('generate') and resource ('commit message'), and explains the source of input ('git changes in the current project directory'). However, since there are no sibling tools, it cannot differentiate from alternatives, preventing a score of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., being in a git repository), exclusions, or contextual cues. The absence of sibling tools means no explicit alternatives are named, but the description still lacks usage context beyond the basic operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.3/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined and distinct by default.

Naming Consistency5/5

The single tool name follows a clear verb_noun pattern (generate_commit_message), which is consistent and predictable. There are no other tools to compare against, so no inconsistency exists.

Tool Count2/5

One tool is too few for a server's purpose, as it limits functionality and suggests a narrow scope that might not support complex workflows. Typically, a well-scoped server would have 3-15 tools to cover a domain adequately.

Completeness2/5

The server is severely incomplete for generating commit messages, as it only offers generation without supporting operations like customization, validation, history management, or integration with other git tasks. This creates significant gaps for agent workflows.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/FradSer/mcp-server-git-cz'

If you have feedback or need assistance with the MCP directory API, please join our Discord server