Files
flyer-crawler.projectium.com/scripts/verify_podman.ps1
Torben Sorensen 46c1e56b14
Some checks failed
Deploy to Test Environment / deploy-to-test (push) Failing after 46s
progress enforcing adr-0005
2026-01-08 21:40:20 -08:00

93 lines
3.3 KiB
PowerShell

# verify_podman.ps1
# This script directly tests Windows Named Pipes for Docker/Podman API headers
function Test-PipeConnection {
param ( [string]$PipeName )
Write-Host "Testing pipe: \\.\pipe\$PipeName ..." -NoNewline
if (-not (Test-Path "\\.\pipe\$PipeName")) {
Write-Host " NOT FOUND (Skipping)" -ForegroundColor Yellow
return $false
}
try {
# Create a direct client stream to the pipe
$pipeClient = New-Object System.IO.Pipes.NamedPipeClientStream(".", $PipeName, [System.IO.Pipes.PipeDirection]::InOut)
# Try to connect with a 1-second timeout
$pipeClient.Connect(1000)
# Send a raw Docker API Ping
$writer = New-Object System.IO.StreamWriter($pipeClient)
$writer.AutoFlush = $true
# minimal HTTP request to the socket
$writer.Write("GET /_ping HTTP/1.0`r`n`r`n")
# Read the response
$reader = New-Object System.IO.StreamReader($pipeClient)
$response = $reader.ReadLine() # Read first line (e.g., HTTP/1.1 200 OK)
$pipeClient.Close()
if ($response -match "OK") {
Write-Host " SUCCESS! (Server responded: '$response')" -ForegroundColor Green
return $true
} else {
Write-Host " CONNECTED BUT INVALID RESPONSE ('$response')" -ForegroundColor Red
return $false
}
}
catch {
Write-Host " CONNECTION FAILED ($($_.Exception.Message))" -ForegroundColor Red
return $false
}
}
Write-Host "`n--- Checking Podman Status ---"
$podmanState = (podman machine info --format "{{.Host.MachineState}}" 2>$null)
Write-Host "Podman Machine State: $podmanState"
if ($podmanState -ne "Running") {
Write-Host "WARNING: Podman machine is not running. Attempting to start..." -ForegroundColor Yellow
podman machine start
}
Write-Host "`n--- Testing Named Pipes ---"
$found = $false
# List of common pipe names to test
$candidates = @("podman-machine-default", "docker_engine", "podman-machine")
foreach ($name in $candidates) {
if (Test-PipeConnection -PipeName $name) {
$found = $true
$validPipe = "npipe:////./pipe/$name"
Write-Host "`n---------------------------------------------------" -ForegroundColor Cyan
Write-Host "CONFIRMED CONFIGURATION FOUND" -ForegroundColor Cyan
Write-Host "Update your mcp-servers.json 'podman' section to:" -ForegroundColor Cyan
Write-Host "---------------------------------------------------"
$jsonConfig = @"
"podman": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-docker"],
"env": {
"DOCKER_HOST": "$validPipe"
}
}
"@
Write-Host $jsonConfig -ForegroundColor White
break # Stop after finding the first working pipe
}
}
if (-not $found) {
Write-Host "`n---------------------------------------------------" -ForegroundColor Red
Write-Host "NO WORKING PIPES FOUND" -ForegroundColor Red
Write-Host "---------------------------------------------------"
Write-Host "Since SSH is available, you may need to use the SSH connection."
Write-Host "However, MCP servers often struggle with SSH agents on Windows."
Write-Host "Current SSH URI from podman:"
podman system connection list --format "{{.URI}}"
}