Skip to main content
Glama

PortMaster MCP

by smspgh
README.md•13.6 kB
# PortMaster MCP [![PowerShell](https://img.shields.io/badge/PowerShell-5.1%2B-blue.svg)](https://docs.microsoft.com/en-us/powershell/) [![Python](https://img.shields.io/badge/Python-3.8%2B-green.svg)](https://www.python.org/) [![Windows](https://img.shields.io/badge/Platform-Windows-lightgrey.svg)](https://www.microsoft.com/en-us/windows) ## Overview **PortMaster MCP** is a comprehensive Windows process and service management tool that provides both AI-assisted and direct command-line interfaces. It enables secure discovery, inspection, and control of any Windows service or process by name, PID, or port number with integrated UAC elevation. ### šŸš€ **Dual Interface Design** - **šŸ¤– Claude Code Integration**: Full MCP server for AI-assisted process management - **⚔ Standalone CLI**: Direct PowerShell interface via `portmaster-cli.ps1` - **šŸ”’ Unified Security**: Consistent UAC elevation across both interfaces ## Key Features ### šŸ” **Discovery & Inspection** - Find processes by service name (supports wildcards) - Find processes listening on specific ports or port ranges - Get detailed process information by single or multiple PIDs - List all listening ports on the system - Analyze complete process trees with parent/child relationships - Network connection analysis (listening ports + active connections) - Process chain visualization with memory and resource usage ### šŸ› ļø **Management Capabilities** - Kill individual processes by PID - Kill multiple processes at once - Kill all processes using specific ports - Start, stop, and restart Windows services - UAC elevation for admin operations (no need to run Claude Code as admin) ### šŸ”’ **Security Features** - **UAC Elevation**: Only prompts for admin privileges when needed - **Confirmation Required**: All destructive operations require explicit confirmation - **Safe Defaults**: Read-only operations work without elevation - **Process Tree Analysis**: Shows impact before performing operations ## Installation ### Prerequisites - **Windows OS** (Windows 10/11 or Windows Server) - **Python 3.8+** - **PowerShell** (pre-installed on Windows) - **Claude Code** installed ### Quick Setup (Recommended) **Option A: Automatic Setup** ```powershell # Install dependencies and configure automatically pip install -r requirements.txt python portmaster_mcp_setup.py ``` The setup script will: - āœ… Check dependencies and PowerShell policy - āœ… Automatically add MCP server to your Claude config - āœ… Create backup of existing config - āœ… Show next steps **Option B: Manual Setup** ### 1. Install Python Dependencies ```powershell pip install -r requirements.txt ``` ### 2. Configure PowerShell Execution Policy ```powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` ### 3. Add to Claude Code Settings Add this configuration to your Claude Code settings file (`%USERPROFILE%\.claude.json`): ```json { "mcpServers": { "portmaster_mcp": { "type": "stdio", "command": "python", "args": [ "C:\\path\\to\\your\\portmaster_mcp\\portmaster_mcp.py" ], "env": {} } } } ``` **Replace the path** with your actual installation directory. ### 4. Restart Claude Code Close and restart Claude Code to load the new MCP server. ## Standalone CLI Usage For direct command-line access without Claude Code, use the included `portmaster-cli.ps1` script: ### šŸš€ Quick Start ### Option 1: Automated Setup (Recommended) ```powershell # Clone and setup in one go git clone <repository-url> portmaster_mcp cd portmaster_mcp pip install -r requirements.txt python portmaster_mcp_setup.py ``` ### Option 2: Quick CLI Examples ```powershell # Check what's running on development ports .\portmaster-cli.ps1 check-ports 3000-3005 # Check specific ports .\portmaster-cli.ps1 check-ports 443,8080,8443 # Find services with wildcards .\portmaster-cli.ps1 find-service "*Docker*" # Get detailed process info with full chain analysis .\portmaster-cli.ps1 process-info 1234 # Kill processes on specific ports (requires admin) .\portmaster-cli.ps1 kill-port 8080 -Force # Show all available commands .\portmaster-cli.ps1 help ``` ### šŸ“‹ CLI Commands Reference | Command | Description | Admin Required | Example | |---------|-------------|----------------|---------| | `check-ports <ports>` | Check what's listening on ports | āŒ | `check-ports 3000-3005` | | `all-ports` | Show all listening ports | āŒ | `all-ports` | | `find-service <pattern>` | Find services by pattern | āŒ | `find-service "*Docker*"` | | `service-info <name>` | Get service details | āŒ | `service-info "W3SVC"` | | `process-info <PID>` | Comprehensive process analysis | āŒ | `process-info 1234` | | `kill-process <PID>` | Terminate specific process | āœ… | `kill-process 1234` | | `kill-port <ports>` | Kill processes using ports | āœ… | `kill-port 8080 -Force` | | `kill-multiple <PIDs>` | Kill multiple processes | āœ… | `kill-multiple 1234,5678` | | `stop-service <name>` | Stop Windows service | āœ… | `stop-service "Docker"` | | `start-service <name>` | Start Windows service | āœ… | `start-service "W3SVC"` | | `restart-service <name>` | Restart Windows service | āœ… | `restart-service "IIS"` | ## Claude Code Usage Examples ### Service Management ``` "Find processes for services matching SQL*" "Find processes for WindowsTestService" "Find processes for *Web*" "Stop service W3SVC" "Start service MSSQLSERVER" "Restart service Docker Desktop Service" ``` ### Port-Based Discovery ``` "What process is listening on port 80?" "Find processes on ports 443, 8080, and 3000" "Kill all processes using port 8080" ``` ### Process Management ``` "Get detailed information about process 1234" "Get information about multiple processes 1234, 5678, 9012" "Kill process 5678" "Kill processes 1234, 5678, 9012" "Show me all listening ports" ``` ### Multiple Process Analysis ``` "Analyze processes 51008 and 30200 together" "Compare resource usage for PIDs 1234, 5678, 9012" "Show network connections for processes 51008, 30200" "Get detailed chain info for multiple Node.js processes" ``` ### Advanced Operations ``` "Find all IIS-related services and their ports" "Stop all Node.js processes on development ports" "Find which service is using port 443 and restart it" ``` ## Available MCP Tools ### Discovery Tools (No Admin Required) | Tool | Description | Example Usage | |------|-------------|---------------| | `find_processes_by_service` | Find processes for any service pattern | `"Find *SQL* services"` | | `find_processes_by_port` | Find processes on specific ports | `"What's on port 80?"` | | `get_all_listening_ports` | List all listening ports | `"Show all ports"` | | `get_process_info` | Get details for a PID | `"Info for process 1234"` | | `get_multiple_process_info` | **NEW**: Get details for multiple PIDs | `"Info for processes [1234, 5678]"` | | `get_service_info` | Get details for a service | `"Info for W3SVC service"` | ### Management Tools (UAC Elevation Required) | Tool | Description | Security | |------|-------------|----------| | `kill_process` | Terminate a process by PID | UAC + Confirmation | | `kill_processes_by_port` | Kill all processes on port(s) | UAC + Confirmation | | `kill_multiple_processes` | Kill multiple processes by PIDs | UAC + Confirmation | | `stop_service` | Stop a Windows service | UAC + Confirmation | | `start_service` | Start a Windows service | UAC | | `restart_service` | Restart a Windows service | UAC + Confirmation | ## File Structure ``` portmaster_mcp/ ā”œā”€ā”€ portmaster_mcp.py # Main MCP server with UAC elevation ā”œā”€ā”€ portmaster-cli.ps1 # Standalone CLI interface ā”œā”€ā”€ admin_helper.ps1 # PowerShell helper for elevated operations ā”œā”€ā”€ portmaster_mcp_setup.py # Automatic setup script ā”œā”€ā”€ requirements.txt # Python dependencies └── README.md # This documentation ``` ## How UAC Elevation Works 1. **Normal Operations**: Claude Code runs with standard user privileges 2. **Admin Required**: When you request a destructive operation (kill process, stop service) 3. **UAC Prompt**: Windows shows a UAC dialog asking for administrator approval 4. **Elevated Execution**: If approved, the operation runs with admin privileges in a separate session 5. **Return to Normal**: After completion, returns to standard privileges This approach is **more secure** than running Claude Code as administrator constantly. ## Troubleshooting **"Administrator privileges required"** - This is normal for kill/service operations - Approve the UAC prompt when it appears - If UAC is disabled, you could run Claude Code as Administrator but I would advise to NOT do this. **"PowerShell execution policy error"** ```powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` **"Module not found" errors** ```powershell pip install mcp pydantic ``` **"Service not found"** - Use wildcards: `*partial-name*` - Check exact service name: `Get-Service` in PowerShell **"Process not found"** - Process may have already terminated - Check PID with Task Manager or `Get-Process` ### Getting Service Names To find the exact names of Windows services: ```powershell Get-Service | Where-Object {$_.DisplayName -like "*keyword*"} ``` ### Checking Port Usage To see what's using ports: ```powershell netstat -ano | findstr :PORT_NUMBER ``` ## Security Considerations ### Safe Operations - **Read operations** never require elevation - **Discovery tools** are completely safe - **UAC prompts** appear only for destructive operations ### Admin Operations - **Always confirm** before approving UAC prompts - **Review the operation** in the confirmation dialog - **Cancel** if you're unsure about the operation ### Best Practices - Use **discovery tools first** to understand what you're managing - **Review process trees** before killing multiple processes - **Prefer service operations** over direct process killing when possible - **Test on non-critical systems** first ## Example Workflows ### Troubleshooting a Web Service 1. `"Find processes for *Web*"` - Discover web-related services 2. `"What's listening on port 80?"` - Check if port is in use 3. `"Get info for service W3SVC"` - Get IIS service details 4. `"Restart service W3SVC"` - Restart if needed ### Cleaning Up Development Processes 1. `"Find processes on ports 3000, 8080, 9000"` - Find dev servers 2. `"Kill processes using ports 3000, 8080"` - Clean up dev ports 3. `"Show all listening ports"` - Verify cleanup **CLI Alternative:** ```powershell .\portmaster-cli.ps1 check-ports 3000-9000 .\portmaster-cli.ps1 kill-port 3000,8080 -Force .\portmaster-cli.ps1 all-ports ``` ### Managing Database Services 1. `"Find services matching *SQL*"` - Find database services 2. `"Stop service MSSQLSERVER"` - Stop SQL Server 3. `"Start service MSSQLSERVER"` - Start SQL Server ### Analyzing Multiple Processes (NEW) Comprehensive analysis of multiple processes at once: **Claude Code Examples:** ``` "Analyze processes 51008 and 30200 together" "Compare memory usage for Node.js processes 1234, 5678" "Show network connections for multiple processes [51008, 30200]" ``` **CLI Example:** ```powershell # Get detailed info on multiple processes .\portmaster-cli.ps1 process-info 51008 # Individual analysis .\portmaster-cli.ps1 process-info 30200 # Individual analysis ``` **What Multiple Process Analysis Shows:** - **Individual Details**: Complete process info for each PID - **Parent/Child Relationships**: Process tree visualization - **Network Analysis**: Listening ports + active connections per process - **Resource Summary**: Combined memory usage and process type grouping - **Process Chain**: How processes relate to each other - **Service Associations**: Which processes belong to services **Example Output Summary:** ``` Found: 2 of 2 processes Total Memory: 113.7 MB Process Types: node: 2 instances ``` ## šŸ”§ Advanced Configuration ### PowerShell Execution Policy If you encounter execution policy errors: ```powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` ### Custom Port Ranges The CLI supports flexible port specifications: ```powershell # Single ports .\portmaster-cli.ps1 check-ports 80 # Multiple ports .\portmaster-cli.ps1 check-ports 80,443,8080 # Port ranges .\portmaster-cli.ps1 check-ports 3000-3010 # Mixed notation .\portmaster-cli.ps1 check-ports 80,443,3000-3005,8080 ``` ### Environment Variables Set these for customized behavior: - `PORTMASTER_TIMEOUT` - Command timeout in seconds (default: 30) - `PORTMASTER_FORCE_COLOR` - Force colored output (true/false) ## šŸ¤ Contributing PortMaster MCP is designed with these principles: - **šŸ›”ļø Security First** - UAC elevation only when needed - **šŸ”§ Extensible** - Easy to add new commands and features - **šŸŽÆ User-Friendly** - Clear confirmations and error messages - **šŸ“Š Comprehensive** - Complete process and service lifecycle management ### Development Setup ```powershell git clone <repository-url> cd portmaster_mcp pip install -r requirements.txt # Test CLI .\portmaster-cli.ps1 help # Test MCP server python portmaster_mcp.py ``` ## šŸ“„ License This project is provided as-is under the MIT License for managing Windows processes and services. ## šŸ™ Acknowledgments - Built for [Claude Code](https://docs.anthropic.com/en/docs/claude-code) MCP integration - Powered by Windows PowerShell and Python - Designed for Windows system administrators and developers

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/smspgh/portmaster_mcp'

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