Skip to main content
Glama
raymondsambur

Automation Script Generator MCP Server

review_and_enhance_code

Analyze generated code to add improvements, documentation, validation, POM patterns, and reusable functions for better maintainability.

Instructions

Review generated code and enhance it with improvements, documentation, validation, POM patterns, and reusable functions

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
file_pathsYesPaths to the generated files to review
review_criteriaNoSpecific review criteria (docs, pom, functions, utils, format, existing_steps)
repo_pathNoRepository path for checking existing functions and patterns

Implementation Reference

  • The primary handler function for the 'review_and_enhance_code' MCP tool. It processes each file in file_paths, reads the content, invokes performCodeReview for analysis and enhancement, applies changes by writing enhanced_content back to files, and returns a summary of reviews.
    async reviewAndEnhanceCode(args) {
        const { file_paths, review_criteria = ['docs', 'pom', 'functions', 'utils', 'format', 'existing_steps'], repo_path } = args;
    
        try {
            const reviews = [];
    
            for (const filePath of file_paths) {
                const content = await fs.readFile(filePath, 'utf8');
                const review = await this.performCodeReview(content, review_criteria, repo_path, filePath);
                reviews.push({ file: filePath, review });
    
                // Apply enhancements
                if (review.enhanced_content) {
                    await fs.writeFile(filePath, review.enhanced_content);
                }
            }
    
            return {
                content: [
                    {
                        type: 'text',
                        text: `Code review and enhancement complete:\n\n${JSON.stringify(reviews, null, 2)}`,
                    },
                ],
            };
        } catch (error) {
            throw new Error(`Failed to review and enhance code: ${error.message}`);
        }
    }
  • Core helper method performing detailed code review based on specified criteria. Analyzes repository patterns if provided, invokes specific review methods (docs, pom, functions, etc.), collects issues/suggestions/improvements, applies enhancements, and computes a quality score.
    async performCodeReview(content, review_criteria, repo_path, filePath) {
        const review = {
            issues: [],
            suggestions: [],
            enhanced_content: content,
            score: 100,
            improvements: []
        };
    
        try {
            // Get existing patterns from repository if available
            let repoPatterns = {};
            if (repo_path) {
                try {
                    const analysisResult = await this.analyzeRepositoryPatterns({
                        repo_path,
                        pattern_types: ['features', 'steps', 'pages', 'components']
                    });
                    repoPatterns = JSON.parse(analysisResult.content[0].text).patterns || {};
                } catch (error) {
                    console.warn(`Could not analyze repository patterns: ${error.message}`);
                }
            }
    
            // Perform review based on criteria
            for (const criteria of review_criteria) {
                switch (criteria) {
                    case 'docs':
                        this.reviewDocumentation(content, review, filePath);
                        break;
                    case 'pom':
                        this.reviewPageObjectModel(content, review, filePath);
                        break;
                    case 'functions':
                        this.reviewFunctionQuality(content, review, filePath);
                        break;
                    case 'utils':
                        this.reviewUtilityUsage(content, review, repoPatterns);
                        break;
                    case 'format':
                        this.reviewCodeFormatting(content, review);
                        break;
                    case 'existing_steps':
                        this.reviewStepReuse(content, review, repoPatterns);
                        break;
                }
            }
    
            // Apply enhancements to content
            review.enhanced_content = this.applyEnhancements(content, review.improvements);
    
            // Calculate final score
            review.score = Math.max(0, 100 - (review.issues.length * 10) - (review.suggestions.length * 5));
    
        } catch (error) {
            review.issues.push(`Review process failed: ${error.message}`);
        }
    
        return review;
    }
  • JSON Schema defining the input parameters for the 'review_and_enhance_code' tool, including file_paths (required array of strings), review_criteria (enum array with defaults), and optional repo_path.
    inputSchema: {
        type: 'object',
        properties: {
            file_paths: {
                type: 'array',
                items: { type: 'string', minLength: 1 },
                description: 'Paths to the generated files to review',
                minItems: 1,
            },
            review_criteria: {
                type: 'array',
                items: {
                    type: 'string',
                    enum: ['docs', 'pom', 'functions', 'utils', 'format', 'existing_steps']
                },
                description: 'Specific review criteria (docs, pom, functions, utils, format, existing_steps)',
                default: ['docs', 'pom', 'functions', 'utils', 'format', 'existing_steps'],
            },
            repo_path: {
                type: 'string',
                description: 'Repository path for checking existing functions and patterns',
            },
        },
        required: ['file_paths'],
        additionalProperties: false,
    },
  • index.js:356-357 (registration)
    Tool dispatch/registration in the CallToolRequestSchema handler switch statement, mapping the tool name to its handler method.
    case 'review_and_enhance_code':
        return await this.reviewAndEnhanceCode(args);
  • index.js:330-334 (registration)
    Registration of ListToolsRequestSchema handler that returns the tool list including 'review_and_enhance_code' with its schema and description.
    this.server.setRequestHandler(ListToolsRequestSchema, async () => {
        return {
            tools: toolConfigs,
        };
    });
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 mentions 'enhance' (implying mutation) and lists enhancement types, but doesn't describe what happens during enhancement (e.g., whether it modifies files in-place, creates backups, requires user confirmation, or has side effects like adding dependencies). For a mutation tool with zero annotation coverage, this lacks critical behavioral details like safety, permissions, or output format.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the core action ('Review generated code and enhance it') followed by specific enhancement areas. There's no wasted verbiage or redundancy. However, it could be slightly more structured by separating purpose from enhancement list for clarity.

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

Completeness2/5

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

Given the tool's complexity (code review and enhancement with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects (e.g., how enhancements are applied), error handling, or what the tool returns (e.g., success status, modified code snippets). For a mutation tool without structured safety hints, more context is needed to guide safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (file_paths, review_criteria, repo_path) with descriptions and constraints. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain the meaning of review criteria like 'pom' or 'existing_steps' in more depth. Baseline 3 is appropriate when the schema does the heavy lifting.

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: 'Review generated code and enhance it with improvements, documentation, validation, POM patterns, and reusable functions.' This specifies the verb (review and enhance) and resource (generated code) with concrete enhancement areas. However, it doesn't explicitly differentiate from sibling tools like 'analyze_repository_patterns' or 'generate_*' files, which might have overlapping code analysis functions.

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 doesn't mention prerequisites (e.g., that code must be generated first), exclusions (e.g., not for raw code creation), or comparisons to siblings like 'analyze_repository_patterns' (which might focus on patterns rather than enhancements) or 'generate_*' tools (which create rather than review). Usage is implied but not explicitly defined.

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

Install Server

Other Tools

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/raymondsambur/automation-script-generator'

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