Skip to main content
Glama

mcp__gemini__precommit_guardian

Validate code changes before committing, detect issues like quality, security, and performance, and provide auto-fix suggestions. Blocks commits on critical issues with Git integration.

Instructions

Advanced pre-commit validation with auto-fix suggestions and Git integration

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
auto_fixNoGenerate auto-fix suggestions
block_on_issuesNoBlock commit on critical issues
changesYesCode changes to validate
check_typesNoCheck types
languageNoProgramming languagejavascript

Implementation Reference

  • The core handler function for the 'mcp__gemini__precommit_guardian' tool. It validates code changes for quality, security, and performance using AI prompts to aiClient.call(). Determines if commit should be blocked, generates Git pre-commit hook integration code, and stores validation metrics in storage.
    handler: async (args) => { const { changes, check_types = ['quality', 'security', 'performance'], auto_fix = true, block_on_issues = true, language = 'javascript' } = args; validateString(changes, 'changes'); const timer = performanceMonitor.startTimer('precommit_guardian'); const checks = Array.isArray(check_types) ? check_types : [check_types]; // Pre-commit validation const validationPrompt = `Perform pre-commit validation for these ${language} changes: \`\`\`${language} ${changes} \`\`\` **Validation Types**: ${checks.join(', ')} Analyze: 1. **Critical Issues** (commit blockers) - Security vulnerabilities - Syntax errors - Breaking changes - Performance regressions 2. **Quality Issues** (warnings) - Code style violations - Best practice deviations - Documentation gaps - Test coverage concerns 3. **Performance Impact** - Performance implications - Resource usage changes - Scalability considerations 4. **Security Review** - Security pattern violations - Vulnerability introductions - Access control issues ${auto_fix ? '5. **Auto-fix Suggestions**\n - Automated fixes for common issues\n - Code style corrections\n - Performance optimizations' : ''} Provide: - ✅ PASS / ❌ FAIL / ⚠️ WARNING for each category - Specific line numbers for issues - ${block_on_issues ? 'Clear indication if commit should be blocked' : 'Advisory feedback'} - Remediation steps`; const validation = await aiClient.call(validationPrompt, 'review', { complexity: 'medium', maxTokens: 3000 }); // Extract commit decision const criticalIssues = validation.toLowerCase().includes('❌ fail') || validation.toLowerCase().includes('critical'); const commitStatus = block_on_issues && criticalIssues ? 'BLOCKED' : 'APPROVED'; let result = `🛡️ **Pre-commit Guardian** (${language}) **Status**: ${commitStatus === 'BLOCKED' ? '🚫 COMMIT BLOCKED' : '✅ COMMIT APPROVED'} **Checks**: ${checks.join(', ')} **Auto-fix**: ${auto_fix ? 'Enabled' : 'Disabled'} ${validation}`; // Generate Git hook integration if requested const gitHookPrompt = `Generate Git pre-commit hook integration: Validation Status: ${commitStatus} Issues Found: ${criticalIssues} Provide: 1. **Git Hook Script** (bash/shell) - Pre-commit hook implementation - Integration with validation - Error handling and reporting 2. **Installation Instructions** - How to install the hook - Configuration options - Troubleshooting guide 3. **Workflow Integration** - CI/CD integration points - Team collaboration setup - Override procedures for emergencies`; const gitIntegration = await aiClient.call(gitHookPrompt, 'devops'); result += ` --- 🔗 **Git Integration** ${gitIntegration}`; // Store validation results for metrics const validationData = { timestamp: new Date().toISOString(), language, status: commitStatus, checks: checks, critical_issues: criticalIssues, changes_size: changes.length }; const storageData = await storage.read('validations'); if (!storageData.validations) storageData.validations = []; storageData.validations.push(validationData); // Keep only last 500 validations if (storageData.validations.length > 500) { storageData.validations = storageData.validations.slice(-500); } await storage.write('validations', storageData); timer.end(); return result; }
  • Input schema defining parameters for the precommit guardian tool, including code changes, check types, auto-fix flag, block flag, and language.
    parameters: { changes: { type: 'string', description: 'Code changes to validate', required: true }, check_types: { type: 'array', description: 'Check types', default: ['quality', 'security', 'performance'] }, auto_fix: { type: 'boolean', description: 'Generate auto-fix suggestions', default: true }, block_on_issues: { type: 'boolean', description: 'Block commit on critical issues', default: true }, language: { type: 'string', description: 'Programming language', default: 'javascript' } },
  • Tool registration/definition within the enhancedTools object exported from this file. Includes description, parameters (schema), and handler.
    'mcp__gemini__precommit_guardian': { description: 'Advanced pre-commit validation with auto-fix suggestions and Git integration', parameters: { changes: { type: 'string', description: 'Code changes to validate', required: true }, check_types: { type: 'array', description: 'Check types', default: ['quality', 'security', 'performance'] }, auto_fix: { type: 'boolean', description: 'Generate auto-fix suggestions', default: true }, block_on_issues: { type: 'boolean', description: 'Block commit on critical issues', default: true }, language: { type: 'string', description: 'Programming language', default: 'javascript' } }, handler: async (args) => { const { changes, check_types = ['quality', 'security', 'performance'], auto_fix = true, block_on_issues = true, language = 'javascript' } = args; validateString(changes, 'changes'); const timer = performanceMonitor.startTimer('precommit_guardian'); const checks = Array.isArray(check_types) ? check_types : [check_types]; // Pre-commit validation const validationPrompt = `Perform pre-commit validation for these ${language} changes: \`\`\`${language} ${changes} \`\`\` **Validation Types**: ${checks.join(', ')} Analyze: 1. **Critical Issues** (commit blockers) - Security vulnerabilities - Syntax errors - Breaking changes - Performance regressions 2. **Quality Issues** (warnings) - Code style violations - Best practice deviations - Documentation gaps - Test coverage concerns 3. **Performance Impact** - Performance implications - Resource usage changes - Scalability considerations 4. **Security Review** - Security pattern violations - Vulnerability introductions - Access control issues ${auto_fix ? '5. **Auto-fix Suggestions**\n - Automated fixes for common issues\n - Code style corrections\n - Performance optimizations' : ''} Provide: - ✅ PASS / ❌ FAIL / ⚠️ WARNING for each category - Specific line numbers for issues - ${block_on_issues ? 'Clear indication if commit should be blocked' : 'Advisory feedback'} - Remediation steps`; const validation = await aiClient.call(validationPrompt, 'review', { complexity: 'medium', maxTokens: 3000 }); // Extract commit decision const criticalIssues = validation.toLowerCase().includes('❌ fail') || validation.toLowerCase().includes('critical'); const commitStatus = block_on_issues && criticalIssues ? 'BLOCKED' : 'APPROVED'; let result = `🛡️ **Pre-commit Guardian** (${language}) **Status**: ${commitStatus === 'BLOCKED' ? '🚫 COMMIT BLOCKED' : '✅ COMMIT APPROVED'} **Checks**: ${checks.join(', ')} **Auto-fix**: ${auto_fix ? 'Enabled' : 'Disabled'} ${validation}`; // Generate Git hook integration if requested const gitHookPrompt = `Generate Git pre-commit hook integration: Validation Status: ${commitStatus} Issues Found: ${criticalIssues} Provide: 1. **Git Hook Script** (bash/shell) - Pre-commit hook implementation - Integration with validation - Error handling and reporting 2. **Installation Instructions** - How to install the hook - Configuration options - Troubleshooting guide 3. **Workflow Integration** - CI/CD integration points - Team collaboration setup - Override procedures for emergencies`; const gitIntegration = await aiClient.call(gitHookPrompt, 'devops'); result += ` --- 🔗 **Git Integration** ${gitIntegration}`; // Store validation results for metrics const validationData = { timestamp: new Date().toISOString(), language, status: commitStatus, checks: checks, critical_issues: criticalIssues, changes_size: changes.length }; const storageData = await storage.read('validations'); if (!storageData.validations) storageData.validations = []; storageData.validations.push(validationData); // Keep only last 500 validations if (storageData.validations.length > 500) { storageData.validations = storageData.validations.slice(-500); } await storage.write('validations', storageData); timer.end(); return result; } },

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/emmron/gemini-mcp'

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