Skip to main content
Glama

Commit Helper MCP

by jolfr
  • Apple
README.md8.9 kB
# Commit Helper MCP A Model Context Protocol (MCP) server that provides Commitizen functionality through MCP tools and resources, enabling AI assistants to generate, validate, and work with conventional commit messages. ## Features ### Core Functionality - **Generate Commit Messages**: Create conventional commit messages with validation - **Validate Messages**: Check existing commit messages against Commitizen rules - **Interactive Questions**: Get commit questions for guided message creation - **Commit Types**: Access available commit types and their descriptions - **Configuration Access**: View current Commitizen configuration and schema - **Plugin Support**: Works with any Commitizen plugin (conventional commits, custom plugins) - **Health Monitoring**: Built-in health checks and configuration refresh ### 🚀 Enhanced Git Integration with GitPython Commit Helper MCP now supports GitPython for enhanced git operations: - **Repository Health Analysis**: Comprehensive repository metrics and scoring - **Smart Commit Suggestions**: AI-powered commit message suggestions based on file patterns - **Detailed Diff Analysis**: Line-by-line change analysis with statistics - **Branch Management**: Comprehensive branch and remote analysis - **Performance Improvements**: 2x faster operations, thread-safe execution - **Advanced Git Operations**: Enhanced commit previews, repository analytics, and batch operations ### 📦 GitPython Installation ```bash # GitPython is automatically installed uv sync # Or install manually uv add "GitPython>=3.1.40" ``` ### 🔄 Automatic Fallback The system automatically selects the best available implementation: - **GitPython** (preferred): Enhanced features and performance - **commitizen.git** (fallback): Basic functionality, full compatibility ### 📊 Feature Comparison | Feature | Basic | Enhanced (GitPython) | |---------|-------|---------------------| | Repository status | ✅ | ✅ Rich metadata | | Commit preview | ✅ | ✅ Diff analysis | | Smart suggestions | ❌ | ✅ AI-powered | | Repository health | ❌ | ✅ Comprehensive | | Performance | Standard | 2x faster | See [GitPython Integration Guide](docs/GITPYTHON_INTEGRATION.md) for complete documentation. ## Installation ### Prerequisites - Python 3.13 or higher - [uv](https://docs.astral.sh/uv/) package manager - Git repository (for Commitizen configuration detection) ### Install from Source 1. Clone the repository: ```bash git clone <repository-url> cd commit-helper-mcp ``` 2. Install dependencies: ```bash uv sync ``` 3. Install the package: ```bash uv pip install -e . ``` ## Usage ### MCP Inspector (Development & Testing) Use the MCP Inspector to test and explore the server's capabilities: ```bash uv run mcp dev main.py ``` This will start an interactive session where you can: - Test all available tools - Explore resources - Debug server functionality - View tool schemas and documentation ### Claude Desktop Integration To use with Claude Desktop, install the server: ```bash uv run mcp install main.py ``` This will add the server to your Claude Desktop configuration, making the tools available in your conversations. ### Manual Configuration Add to your Claude Desktop configuration file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS): ```json { "mcpServers": { "commit-helper-mcp": { "command": "uv", "args": ["run", "python", "/path/to/commit-helper-mcp/main.py"], "cwd": "/path/to/commit-helper-mcp" } } } ``` ## Available Tools ### `generate_commit_message` Generate a commit message with validation using provided parameters. **Parameters:** - `type` (required): Commit type (e.g., 'feat', 'fix', 'docs') - `subject` (required): Commit subject/description - `body` (optional): Detailed description - `scope` (optional): Scope of the change - `breaking` (optional): Whether this is a breaking change - `footer` (optional): Footer (e.g., issue references) **Example:** ```python generate_commit_message( type="feat", subject="add user authentication", scope="auth", body="Implement JWT-based authentication system with login and logout functionality" ) ``` ### `create_commit_message` Generate a commit message from a complete answers dictionary. **Parameters:** - `answers_dict`: Dictionary containing all answers to commit questions **Example:** ```python create_commit_message({ "type": "fix", "subject": "resolve memory leak in data processing", "body": "Fixed memory leak caused by unclosed file handles", "scope": "core" }) ``` ### `validate_commit_message` Validate an existing commit message against current plugin rules. **Parameters:** - `message`: The commit message to validate **Example:** ```python validate_commit_message("feat(auth): add user login functionality") ``` ### `get_commit_types` Get list of available commit types from the current plugin. **Returns:** List of commit types with descriptions ### `get_commit_questions` Get interactive questions for commit message generation. **Returns:** List of questions that can be used to build commit messages ### `health_check` Check the health and status of the Commitizen service. **Returns:** Service health information and configuration details ### `refresh_configuration` Refresh the Commitizen configuration and reinitialize the service. **Returns:** Status of configuration refresh ## Available Resources ### `commitizen://config` Current Commitizen configuration including: - Active plugin information - Configuration settings - Available capabilities - Message pattern ### `commitizen://schema` Commit message schema showing: - Required fields - Field types and constraints - Validation rules ### `commitizen://example` Example commit message demonstrating the expected format for the current plugin configuration. ## Configuration The server automatically detects and uses your project's Commitizen configuration from: - `pyproject.toml` (recommended) - `.cz.toml` - `.cz.json` - `setup.cfg` ### Example Configuration Add to your `pyproject.toml`: ```toml [tool.commitizen] name = "cz_conventional_commits" tag_format = "v$version" version_scheme = "semver" version_provider = "pep621" update_changelog_on_bump = true ``` ## Supported Commitizen Plugins The server works with any Commitizen plugin, including: - **cz_conventional_commits** (default): Standard conventional commits - **cz_jira**: Jira integration - **cz_customize**: Custom commit formats - **Third-party plugins**: Any plugin following Commitizen's plugin interface ## Troubleshooting ### Server Won't Start 1. **Check Python version**: Ensure Python 3.13+ is installed 2. **Verify dependencies**: Run `uv sync` to install dependencies 3. **Check Commitizen config**: Ensure valid Commitizen configuration exists 4. **View logs**: Check console output for specific error messages ### Invalid Commit Messages 1. **Check plugin**: Verify correct Commitizen plugin is configured 2. **Validate config**: Use `health_check` tool to verify configuration 3. **Refresh config**: Use `refresh_configuration` tool after config changes 4. **Check pattern**: View `commitizen://config` resource for expected pattern ### MCP Connection Issues 1. **Verify installation**: Ensure server is properly installed 2. **Check paths**: Verify file paths in Claude Desktop configuration 3. **Test with inspector**: Use `uv run mcp dev main.py` to test locally 4. **Restart Claude**: Restart Claude Desktop after configuration changes ### Common Error Messages - **"No Commitizen configuration found"**: Add Commitizen config to your project - **"Plugin not found"**: Install the specified Commitizen plugin - **"Invalid message format"**: Check message against plugin's expected pattern - **"Service initialization failed"**: Check Python environment and dependencies ## Development ### Running Tests ```bash # Run all tests uv run pytest # Run with coverage uv run pytest --cov=src/commit_helper_mcp # Run specific test file uv run pytest tests/test_integration.py ``` ### Code Formatting ```bash # Format code uv run black src/ tests/ # Check formatting uv run black --check src/ tests/ # Lint code uv run ruff check src/ tests/ ``` ### Local Development Server ```bash # Run server directly python main.py # Run with MCP inspector uv run mcp dev main.py ``` ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests for new functionality 5. Ensure all tests pass 6. Submit a pull request ## License MIT License - see LICENSE file for details. ## Support For issues and questions: 1. Check the troubleshooting section above 2. Search existing issues in the repository 3. Create a new issue with detailed information about your problem ## Changelog See [CHANGELOG.md](CHANGELOG.md) for version history and changes.

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/jolfr/commit-helper-mcp'

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