PC Controller MCP Server

PC Controller MCP Server

Enables AI assistants to control Windows PCs by executing shell commands, managing files, capturing screenshots, and monitoring system information through a comprehensive set of MCP tools.

Category
Visit Server

README

PC Controller MCP Server

PC Controller Banner

Universal MCP Server for Windows PC Control

TypeScript Node.js MCP License Tests


πŸ“‹ Overview

PC Controller MCP Server is a powerful Model Context Protocol (MCP) server that enables AI assistants to control Windows PCs through a comprehensive set of tools. Built with TypeScript and Node.js, it provides seamless integration with AI clients like Claude Desktop, Cursor, Windsurf, and OpenClaude.

🎯 What It Does

This server bridges the gap between AI assistants and your Windows PC, allowing AI to:

  • Execute shell commands and scripts
  • Read, write, and search files
  • Capture screenshots and view them
  • Monitor system information and processes
  • Manage clipboard content
  • Open files, folders, and URLs
  • And much more...

πŸ”Œ Compatibility

Works with any MCP-compatible AI client:

  • βœ… Claude Desktop
  • βœ… Cursor IDE
  • βœ… Windsurf
  • βœ… OpenClaude CLI
  • βœ… ChatGPT (with appropriate configuration)
  • βœ… Any MCP-compliant client

✨ Features

πŸ› οΈ 18 Powerful Tools

Tool Description
run_command Execute shell commands (PowerShell default; also Git Bash & WSL via shell param)
run_command_long Run long-running commands with extended timeout (2 minutes)
file_read Read file contents with encoding support
file_write Write files with automatic directory creation
dir_list List directory contents with recursive option
file_search Search files by glob pattern recursively
screen_capture Capture screenshots as base64 images
sys_info Get comprehensive system information
process_list List running processes with filtering and sorting
process_kill Force-terminate processes by name or PID
open_path Open files, folders, or URLs with default applications
clipboard_get Read the current text content of the system clipboard
clipboard_set Copy text to the system clipboard
zip_create Compress files/folders into a .zip archive
zip_extract Extract a .zip archive to a folder
window_focus Bring a window to the foreground (by title/process name)
key_type Type text or send keystrokes to the focused window
notify Show a Windows notification balloon with a title and message

🎨 Key Capabilities

  • Universal Compatibility: Works with any MCP-compatible AI client
  • Comprehensive Control: From file operations to process management
  • Visual Feedback: Screenshot capture with base64 encoding for AI viewing
  • Safe by Design: Detailed tool descriptions help AI make informed decisions
  • Production Ready: Fully tested (25/25 tests passing) and documented
  • Developer Friendly: TypeScript source code with full type safety

πŸš€ Quick Start

Prerequisites

  • Node.js 18+ (recommended: 20+)
  • Windows 10/11
  • PowerShell 5.1+
  • An MCP-compatible AI client (Claude Desktop, Cursor, etc.)

Installation

# Clone or download this repository
cd D:\All_project\own\AI_Coder\MCP_Tools\pc_controller

# Install dependencies
npm install

# Build the project
npm run build

Running the Server

# Production mode
npm start

# Development mode (with hot reload)
npm run dev

# Watch mode (auto-rebuild on changes)
npm run watch

βš™οΈ Configuration

Claude Desktop

Edit: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "pc-controller": {
      "command": "node",
      "args": ["D:\\All_project\\own\\AI_Coder\\MCP_Tools\\pc_controller\\dist\\index.js"]
    }
  }
}

Cursor IDE

Edit: ~/.cursor/mcp.json

{
  "mcpServers": {
    "pc-controller": {
      "command": "node",
      "args": ["D:\\All_project\\own\\AI_Coder\\MCP_Tools\\pc_controller\\dist\\index.js"]
    }
  }
}

Windsurf

Edit: ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "pc-controller": {
      "command": "node",
      "args": ["D:\\All_project\\own\\AI_Coder\\MCP_Tools\\pc_controller\\dist\\index.js"]
    }
  }
}

OpenClaude CLI

Edit: ~/.openclaude/config.json

{
  "mcpServers": {
    "pc-controller": {
      "command": "node",
      "args": ["D:\\All_project\\own\\AI_Coder\\MCP_Tools\\pc_controller\\dist\\index.js"]
    }
  }
}

ChatGPT Web

For ChatGPT web access, you'll need to set up an HTTP bridge server (future enhancement). Currently, ChatGPT Desktop app may support MCP with similar configuration to Claude Desktop.


πŸ“– Usage Examples

Once configured, you can ask your AI assistant to perform tasks like:

Shell Commands

"Run npm install in D:\Projects\myapp"
"Execute git status"
"Check disk space with PowerShell"

File Operations

"Read the contents of C:\config.json"
"Create a new file at D:\output.txt with 'Hello World'"
"List all files on my Desktop"
"Search for all .log files in D:\logs"

System Information

"Show me my system information"
"What processes are using the most memory?"
"List all running Chrome processes"

Screenshots

"Take a screenshot of my screen"
"Capture the screen and save it to D:\screenshots\screen.png"

Process Management

"Kill the notepad process"
"Terminate process with PID 1234"

Utilities

"Open https://github.com in my browser"
"Copy 'Hello World' to clipboard"
"What's currently in my clipboard?"

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    AI Client (Claude, Cursor, etc.)          β”‚
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚
β”‚  β”‚              MCP Protocol (JSON-RPC 2.0)              β”‚  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό stdio transport
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              PC Controller MCP Server (Node.js)              β”‚
β”‚                                                              β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”‚
β”‚  β”‚ run_command  β”‚  β”‚ file_read    β”‚  β”‚ screen_      β”‚      β”‚
β”‚  β”‚ run_command_ β”‚  β”‚ file_write   β”‚  β”‚ capture      β”‚      β”‚
β”‚  β”‚ long         β”‚  β”‚ dir_list     β”‚  β”‚ sys_info     β”‚      β”‚
β”‚  β”‚ (shell:      β”‚  β”‚ file_search  β”‚  β”‚ process_list β”‚      β”‚
β”‚  β”‚  ps/bash/wsl)β”‚  β”‚ zip_create   β”‚  β”‚ process_kill β”‚      β”‚
β”‚  β”‚              β”‚  β”‚ zip_extract  β”‚  β”‚ open_path    β”‚      β”‚
β”‚  β”‚              β”‚  β”‚              β”‚  β”‚ clipboard_   β”‚      β”‚
β”‚  β”‚              β”‚  β”‚              β”‚  β”‚ get+set      β”‚      β”‚
β”‚  β”‚              β”‚  β”‚              β”‚  β”‚ window_focus β”‚      β”‚
β”‚  β”‚              β”‚  β”‚              β”‚  β”‚ key_type     β”‚      β”‚
β”‚  β”‚              β”‚  β”‚              β”‚  β”‚ notify       β”‚      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
                            β–Ό PowerShell / Windows API
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Windows Operating System                   β”‚
β”‚                                                              β”‚
β”‚  File System β”‚ Processes β”‚ Registry β”‚ Network β”‚ Clipboard    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ§ͺ Testing

The project includes a comprehensive test suite with 25 tests covering all tools and error handling.

# Run all tests
npm test

# Run specific test file
node test/test.js

Test Coverage

  • βœ… Protocol handshake (initialize, tools/list)
  • βœ… All 18 tools functionality
  • βœ… Error handling (invalid commands, non-existent files, unknown tools)
  • βœ… Edge cases and boundary conditions

Test Results: 25/25 passing βœ…


πŸ“š Documentation

Skill Documentation

For AI assistants, detailed skill documentation is available in:

  • skill/SKILL.md - Main skill file with tool overview
  • skill/reference/tools.md - Detailed parameter reference

API Reference

Each tool is fully documented with:

  • Purpose and use cases
  • Parameter descriptions
  • Return value specifications
  • Usage examples
  • Error handling

See the source code in src/index.ts for complete tool definitions.


πŸ› οΈ Development

Project Structure

pc_controller/
β”œβ”€β”€ src/
β”‚   └── index.ts              # Main MCP server implementation
β”œβ”€β”€ dist/                      # Compiled JavaScript
β”‚   └── index.js
β”œβ”€β”€ test/
β”‚   └── test.js               # Test suite (25 tests)
β”œβ”€β”€ skill/
β”‚   β”œβ”€β”€ SKILL.md              # AI skill documentation
β”‚   └── reference/
β”‚       └── tools.md          # Detailed tool reference
β”œβ”€β”€ config/                    # Configuration examples
β”‚   β”œβ”€β”€ claude-desktop.json
β”‚   β”œβ”€β”€ cursor.json
β”‚   β”œβ”€β”€ windsurf.json
β”‚   β”œβ”€β”€ openclaude.json
β”‚   └── chatgpt-setup.md
β”œβ”€β”€ images/
β”‚   └── banner.png             # Project banner image
β”œβ”€β”€ README.md                  # This file
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── .gitignore

Build Commands

# Install dependencies
npm install

# Build TypeScript to JavaScript
npm run build

# Development mode with hot reload
npm run dev

# Watch mode (auto-rebuild on changes)
npm run watch

# Run tests
npm test

# Start production server
npm start

Tech Stack

  • Runtime: Node.js 18+
  • Language: TypeScript 5.0
  • MCP SDK: @modelcontextprotocol/sdk ^1.30.0
  • Validation: Zod ^4.4.3
  • Transport: stdio (universal MCP)

πŸ”’ Security Considerations

Current Implementation

  • Commands execute with user privileges
  • No built-in sandbox or command whitelisting
  • File operations can overwrite existing files
  • Process kill is forceful without confirmation

Best Practices

  1. Review commands before executing destructive operations
  2. Use absolute paths to avoid ambiguity
  3. Backup important files before modifications
  4. Verify process names/PIDs before killing
  5. Test in development before production use

Future Enhancements

  • Command whitelisting/blacklisting
  • Sandbox mode for restricted operations
  • Confirmation prompts for dangerous actions
  • Audit logging for all operations

πŸ› Troubleshooting

Server Not Starting

# Check Node.js version
node --version  # Should be 18+

# Rebuild the project
npm run build

# Check for errors
npm run dev  # Shows detailed error messages

AI Client Not Detecting Server

  • Verify the path to dist/index.js is correct in your config
  • Restart the AI client after config changes
  • Check JSON syntax in config file
  • Ensure Node.js is in your system PATH

Commands Failing

  • Verify PowerShell is available: powershell.exe -Command "echo test"
  • Check file permissions
  • Use absolute paths for all operations
  • Increase timeout for long-running commands

Screenshots Not Working

  • Ensure display/monitor is active
  • Check display permissions
  • Verify .NET Framework is available
  • Try running as Administrator if needed

🀝 Contributing

Contributions are welcome! Areas for improvement:

  • Mouse and keyboard control
  • Window management
  • Security/sandbox features
  • HTTP/SSE transport for web clients
  • Additional system monitoring tools
  • Cross-platform support (Linux, macOS)

Development Workflow

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests: npm test
  5. Submit a pull request

πŸ“„ License

MIT License - see LICENSE file for details


πŸ™ Acknowledgments


πŸ“ž Support

  • Issues: Open an issue on GitHub
  • Questions: Check the documentation in skill/ directory
  • Discussions: Join the MCP community

πŸ—ΊοΈ Roadmap

Version 1.1 (Planned)

  • [ ] Mouse and keyboard control tools
  • [ ] Window management (minimize, maximize, resize)
  • [ ] System notifications
  • [ ] Volume control

Version 1.2 (Planned)

  • [ ] Security sandbox mode
  • [ ] Command whitelisting
  • [ ] Audit logging
  • [ ] HTTP/SSE transport

Version 2.0 (Future)

  • [ ] Cross-platform support (Linux, macOS)
  • [ ] Plugin system for custom tools
  • [ ] Remote PC control via SSH
  • [ ] Advanced automation workflows

Made with ❀️ for the AI community

Empowering AI assistants to control Windows PCs safely and effectively

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured