Skip to main content
Glama

Zen MCP Server

code_quality_checks.ps18.41 kB
<# .SYNOPSIS Code quality checks script for Zen MCP server on Windows. .DESCRIPTION This PowerShell script performs code quality checks for the Zen MCP server project: - Runs static analysis and linting tools on the codebase - Ensures code style compliance and detects potential issues - Can be integrated into CI/CD pipelines or used locally before commits .PARAMETER Help Displays help information for using the script. .PARAMETER Verbose Enables detailed output during code quality checks. .EXAMPLE .\code_quality_checks.ps1 Runs all code quality checks on the project. .\code_quality_checks.ps1 -Verbose Runs code quality checks with detailed output. .NOTES Project Author : BeehiveInnovations Script Author : GiGiDKR (https://github.com/GiGiDKR) Date : 07-05-2025 Version : See project documentation References : https://github.com/BeehiveInnovations/zen-mcp-server #> #Requires -Version 5.1 [CmdletBinding()] param( [switch]$SkipTests, [switch]$SkipLinting, [switch]$VerboseOutput ) # Set error action preference $ErrorActionPreference = "Stop" # Colors for output function Write-ColorText { param( [Parameter(Mandatory)] [string]$Text, [string]$Color = "White" ) Write-Host $Text -ForegroundColor $Color } function Write-Emoji { param( [Parameter(Mandatory)] [string]$Emoji, [Parameter(Mandatory)] [string]$Text, [string]$Color = "White" ) Write-Host "$Emoji " -NoNewline Write-ColorText $Text -Color $Color } Write-Emoji "🔍" "Running Code Quality Checks for Zen MCP Server" -Color Cyan Write-ColorText "=================================================" -Color Cyan # Determine Python command $pythonCmd = $null $pipCmd = $null if (Test-Path ".zen_venv") { if ($IsWindows -or $env:OS -eq "Windows_NT") { if (Test-Path ".zen_venv\Scripts\python.exe") { $pythonCmd = ".zen_venv\Scripts\python.exe" $pipCmd = ".zen_venv\Scripts\pip.exe" } } else { if (Test-Path ".zen_venv/bin/python") { $pythonCmd = ".zen_venv/bin/python" $pipCmd = ".zen_venv/bin/pip" } } if ($pythonCmd) { Write-Emoji "✅" "Using venv" -Color Green } } elseif ($env:VIRTUAL_ENV) { $pythonCmd = "python" $pipCmd = "pip" Write-Emoji "✅" "Using activated virtual environment: $env:VIRTUAL_ENV" -Color Green } else { Write-Emoji "❌" "No virtual environment found!" -Color Red Write-ColorText "Please run: .\run-server.ps1 first to set up the environment" -Color Yellow exit 1 } Write-Host "" # Check and install dev dependencies if needed Write-Emoji "🔍" "Checking development dependencies..." -Color Cyan $devDepsNeeded = $false # List of dev tools to check $devTools = @("ruff", "black", "isort", "pytest") foreach ($tool in $devTools) { $toolFound = $false # Check in venv if ($IsWindows -or $env:OS -eq "Windows_NT") { if (Test-Path ".zen_venv\Scripts\$tool.exe") { $toolFound = $true } } else { if (Test-Path ".zen_venv/bin/$tool") { $toolFound = $true } } # Check in PATH if (!$toolFound) { try { $null = Get-Command $tool -ErrorAction Stop $toolFound = $true } catch { # Tool not found } } if (!$toolFound) { $devDepsNeeded = $true break } } if ($devDepsNeeded) { Write-Emoji "📦" "Installing development dependencies..." -Color Yellow try { & $pipCmd install -q -r requirements-dev.txt if ($LASTEXITCODE -ne 0) { throw "Failed to install dev dependencies" } Write-Emoji "✅" "Development dependencies installed" -Color Green } catch { Write-Emoji "❌" "Failed to install development dependencies" -Color Red Write-ColorText "Error: $_" -Color Red exit 1 } } else { Write-Emoji "✅" "Development dependencies already installed" -Color Green } # Set tool paths if ($IsWindows -or $env:OS -eq "Windows_NT") { $ruffCmd = if (Test-Path ".zen_venv\Scripts\ruff.exe") { ".zen_venv\Scripts\ruff.exe" } else { "ruff" } $blackCmd = if (Test-Path ".zen_venv\Scripts\black.exe") { ".zen_venv\Scripts\black.exe" } else { "black" } $isortCmd = if (Test-Path ".zen_venv\Scripts\isort.exe") { ".zen_venv\Scripts\isort.exe" } else { "isort" } $pytestCmd = if (Test-Path ".zen_venv\Scripts\pytest.exe") { ".zen_venv\Scripts\pytest.exe" } else { "pytest" } } else { $ruffCmd = if (Test-Path ".zen_venv/bin/ruff") { ".zen_venv/bin/ruff" } else { "ruff" } $blackCmd = if (Test-Path ".zen_venv/bin/black") { ".zen_venv/bin/black" } else { "black" } $isortCmd = if (Test-Path ".zen_venv/bin/isort") { ".zen_venv/bin/isort" } else { "isort" } $pytestCmd = if (Test-Path ".zen_venv/bin/pytest") { ".zen_venv/bin/pytest" } else { "pytest" } } Write-Host "" # Step 1: Linting and Formatting if (!$SkipLinting) { Write-Emoji "📋" "Step 1: Running Linting and Formatting Checks" -Color Cyan Write-ColorText "--------------------------------------------------" -Color Cyan try { Write-Emoji "🔧" "Running ruff linting with auto-fix..." -Color Yellow & $ruffCmd check --fix --exclude test_simulation_files --exclude .zen_venv if ($LASTEXITCODE -ne 0) { throw "Ruff linting failed" } Write-Emoji "🎨" "Running black code formatting..." -Color Yellow & $blackCmd . --exclude="test_simulation_files/" --exclude=".zen_venv/" if ($LASTEXITCODE -ne 0) { throw "Black formatting failed" } Write-Emoji "📦" "Running import sorting with isort..." -Color Yellow & $isortCmd . --skip-glob=".zen_venv/*" --skip-glob="test_simulation_files/*" if ($LASTEXITCODE -ne 0) { throw "Import sorting failed" } Write-Emoji "✅" "Verifying all linting passes..." -Color Yellow & $ruffCmd check --exclude test_simulation_files --exclude .zen_venv if ($LASTEXITCODE -ne 0) { throw "Final linting verification failed" } Write-Emoji "✅" "Step 1 Complete: All linting and formatting checks passed!" -Color Green } catch { Write-Emoji "❌" "Step 1 Failed: Linting and formatting checks failed" -Color Red Write-ColorText "Error: $_" -Color Red exit 1 } } else { Write-Emoji "⏭️" "Skipping linting and formatting checks" -Color Yellow } Write-Host "" # Step 2: Unit Tests if (!$SkipTests) { Write-Emoji "🧪" "Step 2: Running Complete Unit Test Suite" -Color Cyan Write-ColorText "---------------------------------------------" -Color Cyan try { Write-Emoji "🏃" "Running unit tests (excluding integration tests)..." -Color Yellow $pytestArgs = @("tests/", "-v", "-x", "-m", "not integration") if ($VerboseOutput) { $pytestArgs += "--verbose" } & $pythonCmd -m pytest @pytestArgs if ($LASTEXITCODE -ne 0) { throw "Unit tests failed" } Write-Emoji "✅" "Step 2 Complete: All unit tests passed!" -Color Green } catch { Write-Emoji "❌" "Step 2 Failed: Unit tests failed" -Color Red Write-ColorText "Error: $_" -Color Red exit 1 } } else { Write-Emoji "⏭️" "Skipping unit tests" -Color Yellow } Write-Host "" # Step 3: Final Summary Write-Emoji "🎉" "All Code Quality Checks Passed!" -Color Green Write-ColorText "==================================" -Color Green if (!$SkipLinting) { Write-Emoji "✅" "Linting (ruff): PASSED" -Color Green Write-Emoji "✅" "Formatting (black): PASSED" -Color Green Write-Emoji "✅" "Import sorting (isort): PASSED" -Color Green } else { Write-Emoji "⏭️" "Linting: SKIPPED" -Color Yellow } if (!$SkipTests) { Write-Emoji "✅" "Unit tests: PASSED" -Color Green } else { Write-Emoji "⏭️" "Unit tests: SKIPPED" -Color Yellow } Write-Host "" Write-Emoji "🚀" "Your code is ready for commit and GitHub Actions!" -Color Green Write-Emoji "💡" "Remember to add simulator tests if you modified tools" -Color Yellow

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/BeehiveInnovations/zen-mcp-server'

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