Computer Control MCP
Controla el mouse, el teclado y realiza OCR usando PyAutoGUI y RapidOCR. Funciona en Windows, con soporte potencial para otras plataformas.
Documentación
Computer Control MCP
Servidor MCP que proporciona capacidades de control de computadora, como mouse, teclado, OCR, etc. usando PyAutoGUI, RapidOCR, ONNXRuntime. Similar a 'computer-use' de Anthropic. Con cero dependencias externas.

Uso rápido (Configuración de MCP usando uvx)
Nota: Ejecutar uvx computer-control-mcp@latest por primera vez descargará dependencias de Python (alrededor de 70 MB) que pueden tomar tiempo. Se recomienda ejecutarlo en una terminal antes de usarlo como MCP. Las ejecuciones posteriores serán instantáneas.
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"]
}
}
}
O instalar globalmente con pip:
pip install computer-control-mcp
Luego ejecutar el servidor con:
computer-control-mcp # instead of uvx computer-control-mcp, so you can use the latest version, also you can `uv cache clean` to clear the cache and `uvx` again to use latest version.
Características
- Control de movimientos y clics del mouse
- Escribir texto en la posición actual del cursor
- Tomar capturas de pantalla de toda la pantalla o de ventanas específicas con opción de guardar en el directorio de descargas
- Extraer texto de capturas de pantalla usando OCR (Reconocimiento Óptico de Caracteres)
- Listar y activar ventanas
- Presionar teclas del teclado
- Operaciones de arrastrar y soltar
- Captura de pantalla mejorada para ventanas aceleradas por GPU (solo Windows)
Nota sobre ventanas aceleradas por GPU
Los métodos tradicionales de captura de pantalla como GDI/PrintWindow fallan al capturar ventanas aceleradas por GPU, resultando en pantallas negras. Esto afecta a juegos, reproductores de medios, aplicaciones Electron, navegadores con aceleración de GPU, software de transmisión y herramientas CAD. Use WGC a través de la opción de la herramienta take_screenshot o la variable ENV
Configuración
Directorio personalizado de capturas de pantalla
Por defecto, las capturas de pantalla se guardan en el directorio de descargas del sistema operativo. Puede personalizar esto configurando la variable de entorno COMPUTER_CONTROL_MCP_SCREENSHOT_DIR:
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"],
"env": {
"COMPUTER_CONTROL_MCP_SCREENSHOT_DIR": "C:\\Users\\YourName\\Pictures\\Screenshots"
}
}
}
}
O configúrela a nivel de sistema:
# Windows (PowerShell)
$env:COMPUTER_CONTROL_MCP_SCREENSHOT_DIR = "C:\Users\YourName\Pictures\Screenshots"
# macOS/Linux
export COMPUTER_CONTROL_MCP_SCREENSHOT_DIR="/home/yourname/Pictures/Screenshots"
Si el directorio especificado no existe, el servidor usará el directorio de descargas predeterminado.
WGC automático para ventanas específicas
Puede configurar el sistema para usar automáticamente Windows Graphics Capture (WGC) para ventanas específicas configurando la variable de entorno COMPUTER_CONTROL_MCP_WGC_PATTERNS. Esta variable debe contener patrones separados por comas que coincidan con los títulos de las ventanas:
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"],
"env": {
"COMPUTER_CONTROL_MCP_WGC_PATTERNS": "obs, discord, game, steam"
}
}
}
}
O configúrela a nivel de sistema:
# Windows (PowerShell)
$env:COMPUTER_CONTROL_MCP_WGC_PATTERNS = "obs, discord, game, steam"
# macOS/Linux
export COMPUTER_CONTROL_MCP_WGC_PATTERNS="obs, discord, game, steam"
Cuando esta variable está configurada, cualquier ventana cuyo título contenga cualquiera de los patrones especificados usará automáticamente WGC para la captura de pantalla, eliminando las pantallas negras para aplicaciones aceleradas por GPU.
Herramientas disponibles
Control del mouse
click_screen(x: int, y: int): Hacer clic en coordenadas específicas de la pantallamove_mouse(x: int, y: int): Mover el cursor del mouse a coordenadas específicasdrag_mouse(from_x: int, from_y: int, to_x: int, to_y: int, duration: float = 0.5): Arrastrar el mouse de una posición a otramouse_down(button: str = "left"): Mantener presionado un botón del mouse ('left', 'right', 'middle')mouse_up(button: str = "left"): Soltar un botón del mouse ('left', 'right', 'middle')
Control del teclado
type_text(text: str): Escribir el texto especificado en la posición actual del cursorkey_down(key: str): Mantener presionada una tecla específica del teclado hasta que se sueltekey_up(key: str): Soltar una tecla específica del tecladopress_keys(keys: Union[str, List[Union[str, List[str]]]]): Presionar teclas del teclado (admite teclas individuales, secuencias y combinaciones)
Gestión de pantalla y ventanas
take_screenshot(title_pattern: str = None, use_regex: bool = False, threshold: int = 10, scale_percent_for_ocr: int = None, save_to_downloads: bool = False, use_wgc: bool = False): Capturar pantalla o ventanatake_screenshot_with_ocr(title_pattern: str = None, use_regex: bool = False, threshold: int = 10, scale_percent_for_ocr: int = None, save_to_downloads: bool = False): Extraer y devolver texto con coordenadas usando OCR de pantalla o ventanaget_screen_size(): Obtener la resolución actual de la pantallalist_windows(): Listar todas las ventanas abiertasactivate_window(title_pattern: str, use_regex: bool = False, threshold: int = 60): Traer la ventana especificada al primer planowait_milliseconds(milliseconds: int): Esperar un número específico de milisegundos
Probar el servidor MCP con mcp-caller
Puede probar rápidamente las herramientas del servidor MCP sin un cliente MCP usando mcp-caller:
# List all available tools
npx mcp-caller --server-json '{"type":"stdio","command":"uvx","args":["computer-control-mcp@latest","server"]}' --list-tools
# Call a specific tool
npx mcp-caller --server-json '{"type":"stdio","command":"uvx","args":["computer-control-mcp@latest","server"]}' --tool list_windows --params-json '{}'
Desarrollo
Configuración del entorno de desarrollo
# Clone the repository
git clone https://github.com/AB498/computer-control-mcp.git
cd computer-control-mcp
# Build/Run:
# 1. Install in development mode | Meaning that your edits to source code will be reflected in the installed package.
pip install -e .
# Then Start server | This is equivalent to `uvx computer-control-mcp@latest` just the local code is used
computer-control-mcp
# -- OR --
# 2. Build after `pip install hatch` | This needs version increment in orer to reflect code changes
hatch build
# Windows
$latest = Get-ChildItem .\dist\*.whl | Sort-Object LastWriteTime -Descending | Select-Object -First 1
pip install $latest.FullName --upgrade
# Non-windows
pip install dist/*.whl --upgrade
# Run
computer-control-mcp
Ejecución de pruebas
python -m pytest
Referencia de la API
Consulte la Referencia de la API para obtener información detallada sobre las funciones y clases disponibles.
Licencia
MIT