In-depth architectural comparison of the Powershell MCP and Google Surf MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Powershell MCP
Browser Automation · Local stdio
Quality: 51/100 (Good) | Auth: No auth required
Google Surf MCP
Browser Automation · Local stdio
Quality: 61/100 (Good) | Auth: No auth required
Verdict Summary: Choose Powershell MCP if you need specialized Browser Automation tools running via a local process. Choose Google Surf MCP if your workspace requires Browser Automation integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Powershell MCP when:
You need dedicated capabilities in the Browser Automation domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
Run any PowerShell script/command (hidden). `{ script, cwd?, timeoutMs? }
run_program
Run a **native executable directly** (no shell) and capture clean stdout/stderr + exit code - for `gh`/`git`/`docker`/`node` and other console binaries whose output a hidden shell swallows. `{ program, args?, cwd?, timeoutMs? }
list_services
List services, optional `filter` wildcard.
get_service
Detailed status of one service by name.
control_service
start` / `stop` / `restart` / `status` a service.
system_info
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Powershell MCP is categorized under Browser Automation and uses a local stdio subprocess. In contrast, Google Surf MCP belongs to Browser Automation using local stdio subprocess. Select Powershell MCP when you need capabilities focused on browser automation and Google Surf MCP when you require tools for browser automation.
Run a command on a remote host over SSH, **fully in-process** (no `ssh.exe`, no WSL — works headless). `{ host, username, command, port?, privateKeyPath?, passphrase?, password?, timeoutMs? }
winrm_exec
Run a command on a remote **Windows** host via PowerShell Remoting (WinRM / `Invoke-Command`). No SSH server or agent needed on the target. `{ computerName, command, username?, password?, useSsl?, authentication?, timeoutMs? }
sftp_upload
Upload a local file to a remote host over SFTP, in-process (ssh2 — no scp.exe/WSL, headless). `{ localPath, remotePath, host, username, port?, privateKeyPath?, passphrase?, password?, timeoutMs? }
sftp_download
Download a remote file to this host over SFTP, in-process. Same params as `sftp_upload`.