Files
shopdb-flask/.claude/setup/quick-start-mcp.ps1
Proudlock bd48814021 Reorganize repository structure and clean up documentation
Clean up and organize the flask-shopdb repository for better
maintainability and discoverability:

## Changes

- Update .gitignore for build artifacts (publish/, data/, 122M total)
- Reorganize .claude/ into 6 subdirectories with README navigation
- Consolidate overlapping MCP setup guides into MCP-QUICK-START.md
- Move deployment docs from root to docs/deployment/
- Archive dated status reports to .claude/archived/
- Delete temporary files (logs, backups, empty reports, ~50K)

## New Structure

.claude/ organized into:
- setup/ - MCP, VM, Hyper-V, GitHub setup guides + scripts (17 files)
- plans/ - Feature plans and protocols (5 files)
- maintenance/ - Deployment checklists and reports (4 files)
- archived/ - Historical documentation (9 files)
- skills/ - Claude Code automation (5 files)
- workflows/ - Security audit workflow (1 file)

docs/deployment/ created with 6 deployment guides:
- LOCAL-DEV-SETUP.md, DOCKER-SETUP.md, DOCKER-PREBUILT-APPROACH.md
- PRODUCTION-READINESS.md, DEPLOY-TO-VM.md, README.md

Root directory cleaned to essential docs only:
- CLAUDE.md, README.md, CONTRIBUTING.md, CHANGELOG.md

Benefits:
- Clear navigation via README.md in each subdirectory
- No duplicate/overlapping documentation
- Large artifacts properly gitignored (won't bloat repository)
- Historical context preserved in archived/

See .claude/CLEANUP-SUMMARY.md for complete details.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-09-11 15:45:05 -04:00

222 lines
8.1 KiB
PowerShell

# Quick Start MCP Servers for ShopDB Development
# Sets up all prerequisites and tests MCP server configuration
#
# Usage:
# .\\.claude\quick-start-mcp.ps1
# .\\.claude\quick-start-mcp.ps1 -SkipVMSetup
# .\\.claude\quick-start-mcp.ps1 -InstallOnly
param(
[switch]$SkipVMSetup,
[switch]$InstallOnly
)
$ErrorActionPreference = "Stop"
Write-Host ""
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host "ShopDB MCP Quick Start" -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
$installDir = "C:\Users\270015376\Documents"
$repoDir = "C:\Users\270015376\Documents\github\flask-shopdb"
# Check we're in the right directory
if ((Get-Location).Path -ne $repoDir) {
Write-Host "Switching to flask-shopdb directory..." -ForegroundColor Yellow
Set-Location $repoDir
}
# Step 1: Check Node.js/npm
Write-Host "[1/6] Checking Node.js/npm..." -ForegroundColor Yellow
try {
$nodeVersion = node --version
$npmVersion = npm --version
Write-Host " OK: Node.js $nodeVersion, npm $npmVersion" -ForegroundColor Green
} catch {
Write-Host " FAIL: Node.js not found" -ForegroundColor Red
Write-Host ""
Write-Host "Install Node.js from: https://nodejs.org/" -ForegroundColor Yellow
Write-Host "After installing, restart this script" -ForegroundColor Yellow
exit 1
}
# Step 2: Check/Install Gortex
Write-Host "[2/6] Checking Gortex..." -ForegroundColor Yellow
$gortexPath = Join-Path $installDir "gortex.exe"
if (Test-Path $gortexPath) {
try {
$gortexVersion = & $gortexPath --version 2>&1
Write-Host " OK: Gortex found ($gortexVersion)" -ForegroundColor Green
} catch {
Write-Host " WARN: Gortex found but may be corrupted" -ForegroundColor Yellow
}
} else {
Write-Host " Installing Gortex..." -ForegroundColor Yellow
try {
$zipPath = Join-Path $installDir "gortex_windows_amd64.zip"
# Download latest release
Write-Host " Downloading from GitHub..." -ForegroundColor Gray
$latestUrl = "https://github.com/zzet/gortex/releases/latest/download/gortex_windows_amd64.zip"
Invoke-WebRequest -Uri $latestUrl -OutFile $zipPath -UseBasicParsing
# Extract
Write-Host " Extracting..." -ForegroundColor Gray
Expand-Archive -Path $zipPath -DestinationPath $installDir -Force
# Cleanup
Remove-Item $zipPath
Write-Host " OK: Gortex installed" -ForegroundColor Green
} catch {
Write-Host " FAIL: Could not install Gortex: $($_.Exception.Message)" -ForegroundColor Red
Write-Host " Manual download: https://github.com/zzet/gortex/releases" -ForegroundColor Yellow
}
}
# Step 3: Check MySQL/Docker
Write-Host "[3/6] Checking MySQL database..." -ForegroundColor Yellow
$mysqlRunning = Test-NetConnection -ComputerName 127.0.0.1 -Port 3306 -WarningAction SilentlyContinue -InformationLevel Quiet
if ($mysqlRunning) {
Write-Host " OK: MySQL is running at 127.0.0.1:3306" -ForegroundColor Green
} else {
Write-Host " WARN: MySQL not running" -ForegroundColor Yellow
Write-Host " Start with: docker compose up -d db" -ForegroundColor Gray
# Try to start Docker automatically
try {
$dockerRunning = docker ps 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host " Starting MySQL database..." -ForegroundColor Yellow
docker compose up -d db
Start-Sleep -Seconds 5
$mysqlRunning = Test-NetConnection -ComputerName 127.0.0.1 -Port 3306 -WarningAction SilentlyContinue -InformationLevel Quiet
if ($mysqlRunning) {
Write-Host " OK: MySQL started successfully" -ForegroundColor Green
}
} else {
Write-Host " Docker not running. Start Docker Desktop first." -ForegroundColor Yellow
}
} catch {
Write-Host " Docker not available. Install Docker Desktop." -ForegroundColor Yellow
}
}
# Step 4: Check MCP packages
Write-Host "[4/6] Checking MCP packages..." -ForegroundColor Yellow
$packages = @(
"@benborla29/mcp-server-mysql",
"@agent-infra/mcp-server-browser",
"ssh-mcp"
)
foreach ($pkg in $packages) {
try {
$pkgInfo = npm view $pkg version 2>&1
if ($LASTEXITCODE -eq 0) {
Write-Host " OK: $pkg available (v$pkgInfo)" -ForegroundColor Green
} else {
Write-Host " WARN: $pkg not found in registry" -ForegroundColor Yellow
}
} catch {
Write-Host " WARN: Cannot check $pkg" -ForegroundColor Yellow
}
}
# Step 5: Check VM (if not skipped)
if (-not $SkipVMSetup) {
Write-Host "[5/6] Checking Hyper-V VM..." -ForegroundColor Yellow
$vmIP = "192.168.100.10"
$vmReachable = Test-Connection -ComputerName $vmIP -Count 1 -Quiet -ErrorAction SilentlyContinue
if ($vmReachable) {
Write-Host " OK: VM reachable at $vmIP" -ForegroundColor Green
# Check SSH port
$sshOpen = Test-NetConnection -ComputerName $vmIP -Port 22 -WarningAction SilentlyContinue -InformationLevel Quiet
if ($sshOpen) {
Write-Host " OK: SSH port 22 is open" -ForegroundColor Green
} else {
Write-Host " WARN: SSH port not open on VM" -ForegroundColor Yellow
Write-Host " Run on VM (as Admin): .\\.claude\enable-vm-ssh.ps1" -ForegroundColor Gray
}
} else {
Write-Host " WARN: VM not reachable at $vmIP" -ForegroundColor Yellow
Write-Host " Check: VM is running in Hyper-V Manager" -ForegroundColor Gray
Write-Host " Check: VM has internal network adapter" -ForegroundColor Gray
}
} else {
Write-Host "[5/6] Skipping VM check (--SkipVMSetup)" -ForegroundColor Gray
}
# Step 6: Verify MCP config
Write-Host "[6/6] Verifying MCP configuration..." -ForegroundColor Yellow
$mcpConfigPath = Join-Path $repoDir ".claude\mcp-servers.json"
if (Test-Path $mcpConfigPath) {
$mcpConfig = Get-Content $mcpConfigPath | ConvertFrom-Json
$serverCount = $mcpConfig.mcpServers.PSObject.Properties.Count
Write-Host " OK: Config file found with $serverCount servers" -ForegroundColor Green
# List configured servers
foreach ($server in $mcpConfig.mcpServers.PSObject.Properties) {
Write-Host " - $($server.Name)" -ForegroundColor Gray
}
} else {
Write-Host " FAIL: MCP config not found at $mcpConfigPath" -ForegroundColor Red
exit 1
}
Write-Host ""
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host "Setup Complete" -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
if ($InstallOnly) {
Write-Host "Installation complete! (Skipping tests)" -ForegroundColor Green
exit 0
}
# Run tests
Write-Host "Running MCP test suite..." -ForegroundColor Yellow
Write-Host ""
$testScript = Join-Path $repoDir ".claude\test-mcp-servers.ps1"
if (Test-Path $testScript) {
if ($SkipVMSetup) {
& $testScript -SkipVM
} else {
& $testScript
}
} else {
Write-Host "Test script not found at $testScript" -ForegroundColor Red
exit 1
}
Write-Host ""
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host "Next Steps" -ForegroundColor Cyan
Write-Host "==========================================" -ForegroundColor Cyan
Write-Host ""
Write-Host "1. Read the integration guide:" -ForegroundColor White
Write-Host " cat .claude\MCP-INTEGRATION-GUIDE.md" -ForegroundColor Gray
Write-Host ""
Write-Host "2. Create VM snapshots (see guide):" -ForegroundColor White
Write-Host " cat .claude\VM-SNAPSHOT-GUIDE.md" -ForegroundColor Gray
Write-Host ""
Write-Host "3. Start Claude Code from this directory:" -ForegroundColor White
Write-Host " claude" -ForegroundColor Gray
Write-Host ""
Write-Host "4. Test MCP servers with Claude:" -ForegroundColor White
Write-Host " - 'List all tasks in the current project'" -ForegroundColor Gray
Write-Host " - 'Show me the endpoints table schema'" -ForegroundColor Gray
Write-Host " - 'Take a screenshot of localhost:5001'" -ForegroundColor Gray
Write-Host " - 'What is the hostname of the VM?'" -ForegroundColor Gray
Write-Host ""
exit 0