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.

Discord License: MIT PyPi

MCP Computer Control Demo

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 tela
  • move_mouse(x: int, y: int): Mover o cursor do mouse para as coordenadas especificadas
  • drag_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 outra
  • mouse_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 cursor
  • key_down(key: str): Manter pressionada uma tecla específica do teclado até ser solta
  • key_up(key: str): Soltar uma tecla específica do teclado
  • press_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 janela
  • take_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 janela
  • get_screen_size(): Obter a resolução atual da tela
  • list_windows(): Listar todas as janelas abertas
  • activate_window(title_pattern: str, use_regex: bool = False, threshold: int = 60): Trazer a janela especificada para o primeiro plano
  • wait_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

Para mais informações ou ajuda