Universal PC Control MCP - Give any AI full control over Windows
Project description
๐ Bridge MCP
Universal PC Control for Any AI
Give any AI complete control over your Windows PC
Features โข Quick Start โข Configuration โข Tools โข Troubleshooting โข Contributing
๐ How Persistence Works
Bridge MCP v2.0 stores agent registrations in a persistent JSON file:
- Windows:
%APPDATA%\bridge-mcp\agents.json - Linux/Mac:
~/.config/bridge-mcp/agents.json
This means:
- โ Register once, works forever
- โ Survives Claude Code session restarts
- โ Survives computer reboots
- โ Works across all AI clients
First-Time Setup
- Start the local agent:
cd Bridge-MCP
python local_agent.py
-
The agent auto-registers itself - no manual registration needed!
-
Verify in any Claude session:
Use list_agents() to see registered agents
Troubleshooting
If you see "No agents connected":
- Check if local_agent.py is running - it must be running in a terminal
- Check health: Use
check_agent_health()tool - Manual register: Use
register_agent("local", "http://127.0.0.1:8006", "My PC")
Running Local Agent as Background Service
For always-on access, install local_agent as a Windows service:
python install_service.py install
python install_service.py start
To remove:
python install_service.py stop
python install_service.py remove
๐ฏ What is Bridge MCP?
Bridge MCP is a Model Context Protocol (MCP) server that gives any AI full control over a Windows PC. Whether you're using Claude, ChatGPT, Cursor, Gemini, or any other MCP-compatible AI, Bridge MCP lets you:
- ๐ฅ๏ธ Control Applications - Launch, switch, resize, close any app
- ๐ฑ๏ธ Automate Input - Mouse clicks, keyboard typing, hotkeys, scrolling
- ๐ธ See the Screen - Screenshots, UI element detection, desktop state
- ๐ Browse the Web - Full Chrome automation and control
- โก Run Commands - PowerShell, CMD, file operations
- ๐ Manage Clipboard - Copy, paste, clear
Think of it as giving your AI eyes and hands to control your computer!
โจ Features
| Category | Tools | Description |
|---|---|---|
| ๐ App Control | 8 tools | Launch, switch, close, resize, minimize, maximize applications |
| ๐ฑ๏ธ Mouse & Keyboard | 10 tools | Click, type, hotkeys, scroll, drag, move cursor |
| ๐ธ Screen Capture | 7 tools | Screenshots, desktop state, find UI elements |
| โก System | 8 tools | PowerShell, CMD, file read/write, system info |
| ๐ Browser | 15 tools | Chrome control, tabs, navigation, web scraping |
| ๐ Clipboard | 3 tools | Copy, paste, clear clipboard |
| ๐ง Utilities | 5+ tools | Wait, dialogs, action sequences |
Total: 40+ powerful tools for complete PC automation!
๐๏ธ Architecture
Bridge MCP uses a Relay Architecture to work across platforms:
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Any AI โ โ Cloud Relay โ โ Your Windows โ
โ (Claude, etc.) โโโโโโโโโโบโ (bridge_mcp) โโโโโโโโโโบโ PC (Agent) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
- bridge_mcp.py - MCP server (runs locally or on FastMCP Cloud)
- local_agent.py - HTTP server on your PC that executes commands (port 8006)
๐ Enterprise-Grade Security
Bridge MCP 2.0 includes:
- Auth Tokens: Uses secure Bearer tokens to prevent unauthorized access.
- Auto-Config: Tokens are auto-generated and saved to
agents.json.
๐ Next-Gen Browser Automation
Powered by Playwright, Bridge MCP can now:
- Click & Type: Interact with any website element.
- Semantic Understanding: Read page content programmatically.
- Headless Mode: Run automations invisible or visible.
๐ง Semantic Computer Vision
Bridge MCP "sees" your apps:
- UI Tree: It can read the accessibility tree of Windows apps.
- Precision: Knows exactly where buttons are (no more guessing pixels).
๐ก๏ธ Safety Sentinel (Human-in-the-Loop)
Bridge MCP now puts YOU in control:
- Command Interception: Dangerous commands (writing files, running shell scripts) are BLOCKED by default.
- Approval Overlay: Approval requests appear directly in the AI Activity Overlay with three options:
- โ APPROVE - Execute this one command
- โ DENY - Block this command
- โ ALWAYS APPROVE - Disable Safe Mode and approve all future commands
- Dashboard Control: View all pending requests at
http://localhost:8006 - Safe Mode Toggle: Switch Safe Mode on/off anytime from the web dashboard
- Peace of Mind: You can leave the agent running without fear of it deleting your files.
๐๏ธ Terminator Vision (Live Observability)
See what the AI sees, in real-time:
- Live Stream: The dashboard features a low-latency 1080p MJPEG stream of your desktop.
- Semantic Overlay: Green bounding boxes highlight every button, link, and window the AI detects.
- Debug Instantly: Visual confirmation that the AI has found the correct "Submit" button.
๐ Full MCP Specification Support
Bridge MCP now implements the complete Model Context Protocol specification:
Resources API
Expose desktop data as addressable resources:
desktop://screenshot/latest- Current screenshotdesktop://windows- Open windows listdesktop://logs- Agent command logsfile:///{path}- Read any desktop filedesktop://session/context- Recent session history
Prompts API
Pre-built workflow templates for one-click automation:
automate_desktop_task- Step-by-step task automationdebug_error- Interactive error debuggingweb_automation- Playwright web workflows
Session Memory
Never lose context:
- Stores last 100 commands across restarts
- Provides AI with recent session history
- Enables "continue where I left off" workflows
๐ Quick Start
Step 1: Clone the Repository
git clone https://github.com/BarhamAgha1/Bridge-MCP.git
cd Bridge-MCP
Step 2: Install Dependencies
pip install -r requirements-local.txt
Note: Playwright browsers (~100MB) auto-install on first use - no manual setup needed!
Step 3: Start the Local Agent
python local_agent.py
Keep this terminal open! The agent will display:
Bridge MCP Local Agent running on http://127.0.0.1:8006
Step 4: Configure Your AI Client
See Configuration below for Claude Desktop, Cursor, or VS Code setup.
Step 5: Register Your Agent
In your AI conversation, register the local agent:
Use register_agent with:
- agent_id: "my-pc"
- callback_url: "http://127.0.0.1:8006"
- agent_name: "My Windows PC"
Step 6: Start Controlling!
Now use any tool like screenshot(), click(100, 200), type_text("Hello"), app_launch("notepad"), etc.
๐ง Configuration
Claude Desktop
-
Open the config file at
%APPDATA%\Claude\claude_desktop_config.json -
Add Bridge MCP:
{
"mcpServers": {
"bridge-mcp": {
"command": "python",
"args": ["C:\\Users\\YourName\\Path\\To\\Bridge-MCP\\bridge_mcp.py"]
}
}
}
โ ๏ธ Important: Replace the path with the actual location where you cloned the repository!
Example paths:
C:\\Users\\PC\\Desktop\\Bridge-MCP\\bridge_mcp.pyD:\\Projects\\Bridge-MCP\\bridge_mcp.py
- Restart Claude Desktop completely (close and reopen)
Cursor
Add to your MCP settings in Cursor preferences with the same configuration format.
VS Code + Claude Code
Create .vscode/mcp.json in your project:
{
"mcpServers": {
"bridge-mcp": {
"command": "python",
"args": ["C:\\Users\\YourName\\Path\\To\\Bridge-MCP\\bridge_mcp.py"]
}
}
}
Remote Access (Optional)
To control your PC from anywhere, expose the local agent with ngrok:
ngrok http 8006
Then use the ngrok URL (e.g., https://xxxx.ngrok.io) as your callback_url when registering.
๐ ๏ธ Available Tools
๐ App Control Tools
| Tool | Description | Example |
|---|---|---|
app_launch |
Launch an application | app_launch("notepad") |
app_switch |
Switch to open app | app_switch("Chrome") |
app_close |
Close an application | app_close("notepad") |
app_list |
List all open apps | app_list() |
๐ฑ๏ธ Input Tools (Mouse & Keyboard)
| Tool | Description | Example |
|---|---|---|
click |
Click at coordinates | click(500, 300) |
double_click |
Double-click | double_click(500, 300) |
right_click |
Right-click | right_click(500, 300) |
type_text |
Type text | type_text("Hello World!") |
press_key |
Press a key | press_key("enter") |
hotkey |
Keyboard shortcut | hotkey("ctrl,c") |
scroll |
Scroll | scroll("down", 3) |
drag |
Drag and drop | drag(100, 100, 500, 500) |
move_mouse |
Move cursor | move_mouse(500, 300) |
๐ธ Screen Tools
| Tool | Description | Example |
|---|---|---|
screenshot |
Take screenshot | screenshot() |
get_desktop_state |
Get full desktop state | get_desktop_state() |
get_screen_size |
Get screen dimensions | get_screen_size() |
get_mouse_position |
Get cursor position | get_mouse_position() |
โก System Tools
| Tool | Description | Example |
|---|---|---|
run_powershell |
Run PowerShell | run_powershell("Get-Process") |
run_cmd |
Run CMD command | run_cmd("dir") |
file_read |
Read file | file_read("C:/test.txt") |
file_write |
Write file | file_write("C:/test.txt", "Hello") |
file_list |
List directory | file_list("C:/Users") |
๐ Browser Tools (Chrome)
| Tool | Description | Example |
|---|---|---|
chrome_open |
Open Chrome | chrome_open("https://google.com") |
chrome_navigate |
Go to URL | chrome_navigate("https://example.com") |
๐ Browser Tools (Playwright - Advanced)
| Tool | Description | Example |
|---|---|---|
browser_navigate |
Go to URL | browser_navigate("google.com") |
browser_click |
Click element (CSS) | browser_click("#submit-btn") |
browser_type |
Type in element | browser_type("#search", "hello") |
browser_press |
Press key | browser_press("Enter") |
browser_content |
Get page text | browser_content() |
browser_screenshot |
Browser screenshot | browser_screenshot() |
๐ Clipboard Tools
| Tool | Description | Example |
|---|---|---|
clipboard_copy |
Copy to clipboard | clipboard_copy("Hello") |
clipboard_paste |
Get clipboard | clipboard_paste() |
๐ก Usage Examples
Example 1: Open Notepad and Write Text
User: Open notepad and write "Hello from AI!"
AI uses:
1. app_launch("notepad")
2. wait(1)
3. type_text("Hello from AI!")
Example 2: Take a Screenshot
User: What's on my screen right now?
AI uses:
1. screenshot()
2. [AI analyzes the image and describes what it sees]
Example 3: Search on Google
User: Search for "Bridge MCP" on Google
AI uses:
1. chrome_open("https://google.com")
2. type_text("Bridge MCP")
3. press_key("enter")
๐ง Troubleshooting
Claude Desktop shows "Server disconnected"
-
Check the path - Make sure the path in your config points to the actual
bridge_mcp.pyfile. The path must be absolute and use double backslashes (\\) in JSON. -
Test manually - Open Command Prompt and run:
cd "C:\path\to\Bridge-MCP"
python bridge_mcp.py
It should stay running (not exit immediately). Press Ctrl+C to stop.
- Install dependencies:
pip install fastmcp httpx
- Restart Claude Desktop - Fully close and reopen after any config changes.
Local agent not receiving commands
- Make sure
local_agent.pyis running in a terminal (keep it open!) - Verify the callback URL is correct when registering the agent
- For local use:
http://127.0.0.1:8006 - For remote access: Use ngrok (
ngrok http 8006) and use the ngrok URL
"No agents connected" error
You need to register your local agent first:
register_agent("my-pc", "http://127.0.0.1:8006", "My PC")
Unicode/Emoji errors on Windows
If local_agent.py crashes with Unicode errors, the terminal may not support emojis. This has been fixed in the latest version.
โ๏ธ FastMCP Cloud Deployment
Bridge MCP can be deployed on FastMCP Cloud for easy access:
- Fork this repository
- Go to fastmcp.cloud
- Sign in with GitHub
- Create project from your forked repo
- Set entrypoint:
bridge_mcp.py - Deploy!
Your MCP will be available at: https://your-project.fastmcp.app/mcp
๐ค Contributing
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Ideas for Contributions
- Add more browser support (Firefox, Edge)
- Add Linux support
- Add macOS support
- Add more automation tools
- Improve UI element detection
- Add OCR capabilities
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Acknowledgments
๐ค Author
Barham Agha
- GitHub: @BarhamAgha1
โญ If you find this project useful, please give it a star! โญ
Made with โค๏ธ for the AI community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bridge_mcp-1.0.0.tar.gz.
File metadata
- Download URL: bridge_mcp-1.0.0.tar.gz
- Upload date:
- Size: 40.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0120cd44898320e9bfed7cf3ad4d0fd35ae74be0a0b417455f7ccdf8d31cc03d
|
|
| MD5 |
32d710b0e866839a93598f0fe6285919
|
|
| BLAKE2b-256 |
a3689c9acd087adf0aeace25a217f8fe1e126402d2721975be903886a16c685f
|
File details
Details for the file bridge_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: bridge_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54eb613e7ebfd26dbd0b95639797ad9417a32744085d88d03158abf25045c53b
|
|
| MD5 |
5ad7abc92f56871a2806b1e4565e6162
|
|
| BLAKE2b-256 |
6e472efb1ea5282f9e9c65516424011ab68e2b234190e0872b59a8413af1aebb
|