Skip to main content
Glama
manage_service.ps19.54 kB
#Requires -Version 5.1 <# .SYNOPSIS Management script for MCP Memory HTTP Server scheduled task. .DESCRIPTION Provides commands to manage the HTTP server scheduled task: - status: Show task and server status - start: Start the server - stop: Stop the server - restart: Restart the server - logs: View server logs - health: Check server health endpoint .PARAMETER Action The action to perform: status, start, stop, restart, logs, health .PARAMETER Lines Number of log lines to show (default: 50) .EXAMPLE .\manage_service.ps1 status Shows the current status of the task and server. .EXAMPLE .\manage_service.ps1 logs -Lines 100 Shows the last 100 lines of the log file. .NOTES File Name : manage_service.ps1 Location : scripts/service/windows/ #> param( [Parameter(Position=0)] [ValidateSet("status", "start", "stop", "restart", "logs", "health", "help")] [string]$Action = "help", [int]$Lines = 50 ) $ErrorActionPreference = "Stop" # Configuration $TaskName = "MCPMemoryHTTPServer" $LogFile = Join-Path $env:LOCALAPPDATA "mcp-memory\logs\http-server.log" $PidFile = Join-Path $env:LOCALAPPDATA "mcp-memory\http-server.pid" $HealthUrl = "http://127.0.0.1:8000/api/health" function Show-Help { Write-Host "" Write-Host "MCP Memory HTTP Server Management" -ForegroundColor Cyan Write-Host "=================================" -ForegroundColor Cyan Write-Host "" Write-Host "Usage: .\manage_service.ps1 <action>" -ForegroundColor White Write-Host "" Write-Host "Actions:" -ForegroundColor Yellow Write-Host " status - Show task and server status" Write-Host " start - Start the server" Write-Host " stop - Stop the server" Write-Host " restart - Restart the server" Write-Host " logs - View server logs (use -Lines N for more/less)" Write-Host " health - Check server health endpoint" Write-Host " help - Show this help" Write-Host "" Write-Host "Examples:" -ForegroundColor Yellow Write-Host " .\manage_service.ps1 status" Write-Host " .\manage_service.ps1 logs -Lines 100" Write-Host "" } function Get-ServerStatus { # Check task status $Task = Get-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue $TaskInfo = $null if ($Task) { $TaskInfo = Get-ScheduledTaskInfo -TaskName $TaskName -ErrorAction SilentlyContinue } # Check process via PID file $ProcessRunning = $false $ProcessPid = $null if (Test-Path $PidFile) { $StoredPid = Get-Content $PidFile -ErrorAction SilentlyContinue if ($StoredPid) { $Process = Get-Process -Id $StoredPid -ErrorAction SilentlyContinue if ($Process -and $Process.ProcessName -like "*python*") { $ProcessRunning = $true $ProcessPid = $StoredPid } } } # Check HTTP health $HttpHealthy = $false $HealthResponse = $null try { $Response = Invoke-WebRequest -Uri $HealthUrl -TimeoutSec 3 -UseBasicParsing -ErrorAction SilentlyContinue if ($Response.StatusCode -eq 200) { $HttpHealthy = $true $HealthResponse = $Response.Content | ConvertFrom-Json } } catch { # Server not responding } return @{ Task = $Task TaskInfo = $TaskInfo ProcessRunning = $ProcessRunning ProcessPid = $ProcessPid HttpHealthy = $HttpHealthy HealthResponse = $HealthResponse } } function Show-Status { Write-Host "" Write-Host "MCP Memory HTTP Server Status" -ForegroundColor Cyan Write-Host "=============================" -ForegroundColor Cyan Write-Host "" $Status = Get-ServerStatus # Task Status Write-Host "Scheduled Task:" -ForegroundColor Yellow if ($Status.Task) { Write-Host " Name: $TaskName" Write-Host " State: $($Status.Task.State)" if ($Status.TaskInfo) { Write-Host " Last Run: $($Status.TaskInfo.LastRunTime)" Write-Host " Next Run: $($Status.TaskInfo.NextRunTime)" $ResultText = switch ($Status.TaskInfo.LastTaskResult) { 0 { "Success" } 267009 { "Running" } 267014 { "Stopped" } default { "Code: $($Status.TaskInfo.LastTaskResult)" } } Write-Host " Result: $ResultText" } } else { Write-Host " [NOT INSTALLED]" -ForegroundColor Red Write-Host " Run .\install_scheduled_task.ps1 to install" } Write-Host "" # Process Status Write-Host "Server Process:" -ForegroundColor Yellow if ($Status.ProcessRunning) { Write-Host " Status: " -NoNewline Write-Host "RUNNING" -ForegroundColor Green Write-Host " PID: $($Status.ProcessPid)" } else { Write-Host " Status: " -NoNewline Write-Host "NOT RUNNING" -ForegroundColor Red } Write-Host "" # HTTP Health Write-Host "HTTP Endpoint:" -ForegroundColor Yellow if ($Status.HttpHealthy) { Write-Host " Status: " -NoNewline Write-Host "HEALTHY" -ForegroundColor Green Write-Host " URL: http://127.0.0.1:8000/" if ($Status.HealthResponse) { Write-Host " Version: $($Status.HealthResponse.version)" Write-Host " Backend: $($Status.HealthResponse.storage_backend)" } } else { Write-Host " Status: " -NoNewline Write-Host "NOT RESPONDING" -ForegroundColor Red } Write-Host "" # Log file info if (Test-Path $LogFile) { $LogInfo = Get-Item $LogFile Write-Host "Log File:" -ForegroundColor Yellow Write-Host " Path: $LogFile" Write-Host " Size: $([math]::Round($LogInfo.Length / 1KB, 2)) KB" Write-Host " Modified: $($LogInfo.LastWriteTime)" } Write-Host "" } function Start-Server { $Status = Get-ServerStatus if ($Status.HttpHealthy) { Write-Host "[INFO] Server is already running." -ForegroundColor Yellow return } if (-not $Status.Task) { Write-Host "[ERROR] Scheduled task is not installed. Run .\install_scheduled_task.ps1 first." -ForegroundColor Red return } Write-Host "[INFO] Starting server..." -ForegroundColor Green Start-ScheduledTask -TaskName $TaskName # Wait and check Write-Host "[INFO] Waiting for server to start..." -ForegroundColor Yellow for ($i = 1; $i -le 10; $i++) { Start-Sleep -Seconds 1 try { $Response = Invoke-WebRequest -Uri $HealthUrl -TimeoutSec 2 -UseBasicParsing -ErrorAction SilentlyContinue if ($Response.StatusCode -eq 200) { Write-Host "[SUCCESS] Server started successfully!" -ForegroundColor Green Write-Host "Dashboard: http://127.0.0.1:8000/" -ForegroundColor Cyan return } } catch { Write-Host "." -NoNewline } } Write-Host "" Write-Host "[WARN] Server may still be starting. Check status in a moment." -ForegroundColor Yellow } function Stop-Server { $Status = Get-ServerStatus if (-not $Status.ProcessRunning -and -not $Status.HttpHealthy) { Write-Host "[INFO] Server is not running." -ForegroundColor Yellow return } Write-Host "[INFO] Stopping server..." -ForegroundColor Yellow # Stop scheduled task if ($Status.Task -and $Status.Task.State -eq "Running") { Stop-ScheduledTask -TaskName $TaskName -ErrorAction SilentlyContinue } # Kill process if still running if ($Status.ProcessPid) { Stop-Process -Id $Status.ProcessPid -Force -ErrorAction SilentlyContinue } # Also try via port try { $Connection = Get-NetTCPConnection -LocalPort 8000 -ErrorAction SilentlyContinue | Where-Object { $_.State -eq "Listen" } if ($Connection) { Stop-Process -Id $Connection.OwningProcess -Force -ErrorAction SilentlyContinue } } catch { # Ignore } # Clean up PID file if (Test-Path $PidFile) { Remove-Item $PidFile -Force -ErrorAction SilentlyContinue } Write-Host "[SUCCESS] Server stopped." -ForegroundColor Green } function Restart-Server { Write-Host "[INFO] Restarting server..." -ForegroundColor Yellow Stop-Server Start-Sleep -Seconds 2 Start-Server } function Show-Logs { if (-not (Test-Path $LogFile)) { Write-Host "[INFO] No log file found at: $LogFile" -ForegroundColor Yellow return } Write-Host "Last $Lines lines of $LogFile" -ForegroundColor Cyan Write-Host "=" * 60 -ForegroundColor Cyan Get-Content $LogFile -Tail $Lines } function Check-Health { Write-Host "[INFO] Checking health endpoint..." -ForegroundColor Yellow try { $Response = Invoke-WebRequest -Uri $HealthUrl -TimeoutSec 5 -UseBasicParsing Write-Host "[SUCCESS] Server is healthy!" -ForegroundColor Green Write-Host "" $Response.Content | ConvertFrom-Json | Format-List } catch { Write-Host "[ERROR] Server is not responding: $_" -ForegroundColor Red } } # Main execution switch ($Action) { "status" { Show-Status } "start" { Start-Server } "stop" { Stop-Server } "restart" { Restart-Server } "logs" { Show-Logs } "health" { Check-Health } "help" { Show-Help } default { Show-Help } }

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/doobidoo/mcp-memory-service'

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