Skip to main content
Glama
JJJHoons

Python Code Review MCP Agent

by JJJHoons

compare_code_versions

Compare two Python code versions to analyze improvements, regressions, and security changes. Identify quality and vulnerability differences to enhance code integrity and maintainability.

Instructions

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

Input Schema

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

Implementation Reference

  • Main handler function that executes the compare_code_versions tool: validates input with CompareCodeSchema, analyzes original and revised code using PythonAnalyzer, generates comparison report using generateComparisonReport, and returns formatted response.
    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 required originalCode and revisedCode strings, 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:155-176 (registration)
    Tool registration in ListToolsRequestSchema response, specifying name 'compare_code_versions', description, and inputSchema matching 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, and remaining issues for the revised code.
    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