Skip to main content
Glama
JJJHoons

Python Code Review MCP Agent

by JJJHoons

compare_code_versions

Identify improvements or regressions in Python code quality and security by comparing two versions to track changes effectively.

Instructions

Compare two versions of Python code to identify improvements or regressions in quality and security.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
originalCodeYesOriginal version of the Python code
revisedCodeYesRevised version of the Python code
filenameNoName of the file (optional)unknown.py

Implementation Reference

  • Handler function for the compare_code_versions tool. Parses input using CompareCodeSchema, analyzes both original and revised code using the PythonAnalyzer, generates comparison report using generateComparisonReport helper, and returns it as MCP content.
    private async handleCompareCode(args: unknown) { const { originalCode, revisedCode, filename } = CompareCodeSchema.parse(args); const originalResult = this.analyzer.analyzePythonCode(originalCode, `${filename} (original)`); const revisedResult = this.analyzer.analyzePythonCode(revisedCode, `${filename} (revised)`); const comparisonReport = this.generateComparisonReport(originalResult, revisedResult); return { content: [ { type: 'text', text: comparisonReport } ] }; }
  • Zod input validation schema for the compare_code_versions tool, defining originalCode, revisedCode, and optional filename.
    const CompareCodeSchema = z.object({ originalCode: z.string().min(1, "Original code cannot be empty"), revisedCode: z.string().min(1, "Revised code cannot be empty"), filename: z.string().optional().default("unknown.py") });
  • src/index.ts:154-176 (registration)
    Tool registration in the ListTools response, including name, description, and inputSchema matching the CompareCodeSchema.
    { name: 'compare_code_versions', description: 'Compare two versions of Python code to identify improvements or regressions in quality and security.', inputSchema: { type: 'object', properties: { originalCode: { type: 'string', description: 'Original version of the Python code' }, revisedCode: { type: 'string', description: 'Revised version of the Python code' }, filename: { type: 'string', description: 'Name of the file (optional)', default: 'unknown.py' } }, required: ['originalCode', 'revisedCode'] } },
  • Helper function that generates the detailed markdown comparison report, including metrics table, summary of improvements/regressions, and remaining issues.
    private generateComparisonReport(original: AnalysisResult, revised: AnalysisResult): string { const improvementScore = revised.codeQualityScore - original.codeQualityScore; const securityImprovement = revised.securityScore - original.securityScore; const issueImprovement = original.totalIssues - revised.totalIssues; const sections = [ 'πŸ”„ **CODE COMPARISON REPORT**', '=' + '='.repeat(50), '', '## πŸ“ˆ **IMPROVEMENT METRICS**', '', `| Metric | Original | Revised | Change |`, `|--------|----------|---------|--------|`, `| Quality Score | ${original.codeQualityScore}/100 | ${revised.codeQualityScore}/100 | ${this.formatChange(improvementScore)} |`, `| Security Score | ${original.securityScore}/100 | ${revised.securityScore}/100 | ${this.formatChange(securityImprovement)} |`, `| Total Issues | ${original.totalIssues} | ${revised.totalIssues} | ${this.formatChange(issueImprovement)} |`, `| Critical Issues | ${original.criticalIssues} | ${revised.criticalIssues} | ${this.formatChange(original.criticalIssues - revised.criticalIssues)} |`, '', this.generateComparisonSummary(improvementScore, securityImprovement, issueImprovement), '', this.generateRemainingIssues(revised) ]; return sections.join('\n'); }

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/JJJHoons/python_code_review_mcp'

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