Computer Control MCP
Controle o mouse e o teclado do seu computador e realize OCR usando PyAutoGUI e RapidOCR. Funciona no Windows, com suporte potencial para outras plataformas.
Documentação
Computer Control MCP
Servidor MCP que fornece capacidades de controle de computador, como mouse, teclado, OCR, etc. usando PyAutoGUI, RapidOCR, ONNXRuntime. Similar ao 'computer-use' da Anthropic. Com Zero Dependências Externas.

Uso Rápido (Configuração MCP Usando uvx)
Nota: Executar uvx computer-control-mcp@latest pela primeira vez fará o download das dependências Python (cerca de 70MB), o que pode levar algum tempo. Recomenda-se executar isso em um terminal antes de usar como MCP. Execuções subsequentes serão instantâneas.
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"]
}
}
}
OU instale globalmente com pip:
pip install computer-control-mcp
Em seguida, execute o servidor com:
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.
Recursos
- Controlar movimentos e cliques do mouse
- Digitar texto na posição atual do cursor
- Capturar capturas de tela da tela inteira ou de janelas específicas com opção de salvar no diretório de downloads
- Extrair texto de capturas de tela usando OCR (Reconhecimento Óptico de Caracteres)
- Listar e ativar janelas
- Pressionar teclas do teclado
- Operações de arrastar e soltar
- Captura de tela aprimorada para janelas aceleradas por GPU (somente Windows)
Nota sobre Janelas Aceleradas por GPU
Métodos tradicionais de captura de tela como GDI/PrintWindow falham ao capturar janelas aceleradas por GPU, resultando em telas pretas. Isso afeta jogos, players de mídia, aplicativos Electron, navegadores com aceleração de GPU, softwares de streaming e ferramentas CAD. Use WGC através da flag da ferramenta take_screenshot ou da variável ENV
Configuração
Diretório Personalizado de Capturas de Tela
Por padrão, as capturas de tela são salvas no diretório de downloads do sistema operacional. Você pode personalizar isso definindo a variável de ambiente 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"
}
}
}
}
Ou defina em todo o 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"
Se o diretório especificado não existir, o servidor usará o diretório de downloads padrão como fallback.
WGC Automático para Janelas Específicas
Você pode configurar o sistema para usar automaticamente o Windows Graphics Capture (WGC) para janelas específicas definindo a variável de ambiente COMPUTER_CONTROL_MCP_WGC_PATTERNS. Esta variável deve conter padrões separados por vírgula que correspondam aos títulos das janelas:
{
"mcpServers": {
"computer-control-mcp": {
"command": "uvx",
"args": ["computer-control-mcp@latest"],
"env": {
"COMPUTER_CONTROL_MCP_WGC_PATTERNS": "obs, discord, game, steam"
}
}
}
}
Ou defina em todo o 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"
Quando esta variável estiver definida, qualquer janela cujo título contenha qualquer um dos padrões especificados usará automaticamente o WGC para captura de tela, eliminando telas pretas para aplicativos acelerados por GPU.
Ferramentas Disponíveis
Controle de Mouse
click_screen(x: int, y: int): Clicar nas coordenadas especificadas da telamove_mouse(x: int, y: int): Mover o cursor do mouse para as coordenadas especificadasdrag_mouse(from_x: int, from_y: int, to_x: int, to_y: int, duration: float = 0.5): Arrastar o mouse de uma posição para outramouse_down(button: str = "left"): Manter pressionado um botão do mouse ('left', 'right', 'middle')mouse_up(button: str = "left"): Soltar um botão do mouse ('left', 'right', 'middle')
Controle de Teclado
type_text(text: str): Digitar o texto especificado na posição atual do cursorkey_down(key: str): Manter pressionada uma tecla específica do teclado até ser soltakey_up(key: str): Soltar uma tecla específica do tecladopress_keys(keys: Union[str, List[Union[str, List[str]]]]): Pressionar teclas do teclado (suporta teclas únicas, sequências e combinações)
Gerenciamento de Tela e Janelas
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 tela ou janelatake_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): Extrair e retornar texto com coordenadas usando OCR da tela ou janelaget_screen_size(): Obter a resolução atual da telalist_windows(): Listar todas as janelas abertasactivate_window(title_pattern: str, use_regex: bool = False, threshold: int = 60): Trazer a janela especificada para o primeiro planowait_milliseconds(milliseconds: int): Aguardar um número especificado de milissegundos
Testando o Servidor MCP com mcp-caller
Você pode testar rapidamente as ferramentas do servidor MCP sem um 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 '{}'
Desenvolvimento
Configurando o Ambiente de Desenvolvimento
# 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
Executando Testes
python -m pytest
Referência da API
Consulte a Referência da API para informações detalhadas sobre as funções e classes disponíveis.
Licença
MIT