Windows-MCP

Um servidor MCP leve para interagir com o Sistema Operacional Windows.

Documentação

🪟 Windows-MCP

License Python Platform: Windows 10 and 11 Last Commit PyPI Downloads
Follow on Twitter Join us on Discord

CursorTouch%2FWindows-MCP | Trendshift

Windows-MCP é um projeto leve e de código aberto que permite integração perfeita entre agentes de IA e o sistema operacional Windows. Atuando como um servidor MCP, ele preenche a lacuna entre LLMs e o sistema operacional Windows, permitindo que agentes executem tarefas como navegação de arquivos, controle de aplicativos, interação com interface de usuário, testes de QA e muito mais.

mcp-name: io.github.CursorTouch/Windows-MCP

Atualizações

Sistemas Operacionais Suportados

  • Windows 10
  • Windows 11

O pacote atual requer Python 3.14+, que suporta Windows 10 e versões mais recentes. Versões anteriores do Windows não são suportadas pela instalação atual.

🎥 Demonstrações

https://github.com/user-attachments/assets/d0e7ed1d-6189-4de6-838a-5ef8e1cad54e

https://github.com/user-attachments/assets/d2b372dc-8d00-4d71-9677-4c64f5987485

✨ Principais Recursos

  • Integração Perfeita com Windows
    Interage nativamente com elementos de interface do Windows, abre aplicativos, controla janelas, simula entrada do usuário e muito mais.

  • Use Qualquer LLM (Visão Opcional) Diferente de muitas ferramentas de automação, o Windows-MCP não depende de técnicas tradicionais de visão computacional ou modelos específicos ajustados; ele funciona com qualquer LLM, reduzindo complexidade e tempo de configuração.

  • Conjunto Rico de Ferramentas para Automação de UI
    Inclui ferramentas para operações básicas de teclado, mouse e captura de estado de janelas/UI.

  • Leve e de Código Aberto
    Dependências mínimas e configuração fácil com código-fonte completo disponível sob licença MIT.

  • Personalizável e Extensível
    Adapte ou estenda facilmente as ferramentas para atender às suas necessidades exclusivas de automação ou integração com IA.

  • Interação em Tempo Real
    A latência típica entre ações (por exemplo, de um clique do mouse para o próximo) varia de 0,2 a 0,5 segundos, podendo variar ligeiramente com base no número de aplicativos ativos e na carga do sistema, além da velocidade de inferência do LLM.

  • Modo DOM para Automação de Navegador
    Modo especial use_dom=True para a Ferramenta de Estado que foca exclusivamente no conteúdo da página web, filtrando elementos de interface do navegador para automação web mais limpa e eficiente. Suporta Chrome, Edge e Firefox (Firefox usa um fallback IAccessible2, pois não expõe RootWebArea via UIA).

🛠️ Instalação

Nota: Ao instalar este servidor MCP pela primeira vez, pode levar um ou dois minutos devido à instalação das dependências em pyproject.toml. Na primeira execução, o servidor pode expirar; ignore e reinicie-o.

Pré-requisitos

  • Python 3.14+
  • UV (Gerenciador de Pacotes) da Astra, instale com pip install uv ou curl -LsSf https://astral.sh/uv/install.sh | sh
  • A ferramenta App resolve nomes de exibição localizados do Menu Iniciar, bem como nomes internos de aplicativos; um idioma de exibição em inglês do Windows não é necessário.

Executar no Login

Execute o servidor diretamente quando necessário:

uvx windows-mcp serve
uvx windows-mcp serve --transport sse --host localhost --port 8000
uvx windows-mcp serve --transport streamable-http --host localhost --port 8000

Instale-o como uma tarefa em segundo plano que inicia agora e a cada login:

windows-mcp install

# Or choose the HTTP transport and bind address explicitly
windows-mcp install --transport sse --host 127.0.0.1 --port 8000

Isso cria uma Tarefa Agendada por usuário chamada windows-mcp-server e um script wrapper em ~/.windows-mcp/start-server.cmd. Use windows-mcp uninstall para removê-la. Os logs são gravados em ~/.windows-mcp/server.log e ~/.windows-mcp/server.error.log.

Instalar no Claude Desktop
  1. Instale o Claude Desktop.
npm install -g @anthropic-ai/mcpb
  1. Configure o servidor MCP.

Opção A: Instalar a partir do PyPI (Recomendado)

Use uvx para executar a versão mais recente diretamente do PyPI.

Adicione isso ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Opção B: Instalar a partir do Código-Fonte

  1. Clone o repositório:
git clone https://github.com/CursorTouch/Windows-MCP.git
cd Windows-MCP
  1. Adicione isso ao seu claude_desktop_config.json:
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "<path to the windows-mcp directory>",
        "run",
        "windows-mcp",
        "serve"
      ]
    }
  }
}
  1. Reinicie completamente o Claude Desktop e verifique se o servidor aparece na lista de ferramentas MCP.

Claude Desktop MSIX (Windows Store)

O Claude Desktop empacotado com MSIX (versão Microsoft Store) virtualiza %APPDATA%. Isso causa dois problemas principais:

  1. O arquivo de configuração está localizado em: %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json (não %APPDATA%\Claude\).
  2. A instalação automática do "Claude Directory" falhará porque a variável ${__dirname} resolve para o caminho incorreto (não virtualizado).

Para configurar o Windows-MCP na versão Windows Store do Claude:

Você deve editar manualmente o arquivo de configuração. Observe que aplicativos Electron no sandbox MSIX não herdam o PATH do sistema, então você deve usar o caminho absoluto completo para uvx.exe (ou uv.exe).

Opção A: Usando executável pré-instalado

  1. Em um terminal, execute uv tool install windows-mcp.
  2. Use o executável gerado na sua configuração:
{
  "mcpServers": {
    "windows-mcp": {
      "command": "C:\\Users\\<user>\\.local\\bin\\windows-mcp.exe",
      "args": ["serve"]
    }
  }
}

Opção B: Usando uvx

{
  "mcpServers": {
    "windows-mcp": {
      "command": "C:\\Users\\<user>\\.local\\bin\\uvx.exe",
      "args": ["windows-mcp", "serve"]
    }
  }
}

Opção C: Instalar a partir do Código-Fonte

{
  "mcpServers": {
    "windows-mcp": {
      "command": "C:\\Users\\<user>\\.local\\bin\\uv.exe",
      "args": [
        "--directory",
        "C:\\path\\to\\Windows-MCP",
        "run",
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Substitua <user> pelo seu nome de usuário do Windows. Para encontrar os caminhos corretos, execute where uvx, where windows-mcp ou where uv. Saia completamente do Claude Desktop (Bandeja → Sair) e reabra após salvar a configuração.

Para solução de problemas adicionais de integração com Claude Desktop, consulte a documentação do MCP.

Instalar no Perplexity Desktop
  1. Instale o Perplexity Desktop.
  2. Abra o Perplexity Desktop e vá para Settings -> Connectors -> Add Connector -> Advanced.
  3. Digite o nome como Windows-MCP e cole uma das seguintes configurações.

Opção A: Instalar a partir do PyPI (Recomendado)

{
  "command": "uvx",
  "args": [
    "windows-mcp",
    "serve"
  ]
}

Opção B: Instalar a partir do Código-Fonte

{
  "command": "uv",
  "args": [
    "--directory",
    "<path to the windows-mcp directory>",
    "run",
    "windows-mcp",
    "serve"
  ]
}
  1. Clique em Save e reinicie o Perplexity Desktop, se necessário.

Para solução de problemas adicionais de integração com Claude Desktop, consulte o Suporte MCP do Perplexity. A documentação inclui dicas úteis para verificar logs e resolver problemas comuns.

Instalar no Gemini CLI
  1. Instale o Gemini CLI.
npm install -g @google/gemini-cli
  1. Abra %USERPROFILE%/.gemini/settings.json.
  2. Adicione a configuração windows-mcp e salve-a.
{
  "theme": "Default",
  ...
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Nota: Para executar a partir do código-fonte, substitua o comando por uv e os argumentos por ["--directory", "<path>", "run", "windows-mcp", "serve"].

  1. Reinicie o Gemini CLI.
Instalar no Qwen Code 1. Instale o Qwen Code.
npm install -g @qwen-code/qwen-code@latest
  1. Abra %USERPROFILE%/.qwen/settings.json.
  2. Adicione a configuração windows-mcp e salve-a.
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Nota: Para executar a partir do código-fonte, substitua o comando por uv e os argumentos por ["--directory", "<path>", "run", "windows-mcp", "serve"].

  1. Reinicie o Qwen Code.
Instalar no Codex CLI 1. Instale o Codex CLI.
npm install -g @openai/codex
  1. Abra %USERPROFILE%/.codex/config.toml.
  2. Adicione a configuração windows-mcp e salve-a.
[mcp_servers.windows-mcp]
command="uvx"
args=[
  "windows-mcp",
  "serve"
]

Nota: Para executar a partir do código-fonte, substitua o comando por uv e os argumentos por ["--directory", "<path>", "run", "windows-mcp", "serve"].

  1. Reinicie o Codex CLI.
Instalar no Autohand Code

Adicione o servidor stdio publicado a partir de um terminal Windows:

autohand mcp add windows-mcp uvx windows-mcp serve

Adicione --scope project após add para manter a configuração do servidor no projeto atual. Consulte Autohand Code para detalhes atuais de instalação e CLI.

Instalar no Claude Code
  1. Instale o Claude Code:
npm install -g @anthropic-ai/claude-code
  1. Configure o servidor:

Opção A: Instalar a partir do PyPI (Recomendado)

Use uvx para executar a versão mais recente diretamente do PyPI.

claude mcp add --transport stdio windows-mcp -- uvx windows-mcp serve

Opção B: Instalar a partir do Código-Fonte

  1. Clone o repositório:
git clone https://github.com/CursorTouch/Windows-MCP.git
cd Windows-MCP
  1. Execute o seguinte comando no seu terminal:
claude mcp add --transport stdio windows-mcp -- uv --directory "<path>" run windows-mcp serve

Nota: Para disponibilizar o servidor em todos os projetos, adicione --scope user ao comando.

  1. Execute novamente o Claude Code no terminal. Aproveite 🥳

Nota: No Windows, se você encontrar erros de "Connection closed", use o caminho completo para uvx.exe:

claude mcp add --transport stdio windows-mcp -- C:\Users\<user>\.local\bin\uvx.exe windows-mcp serve

Para verificar se o servidor está registrado, execute claude mcp list. Dentro do Claude Code, use /mcp para verificar o status do servidor.

WSL (Subsistema Windows para Linux)

Se você executar o Claude Code a partir do WSL, o servidor MCP ainda deve ser executado no lado do Windows (ele precisa das APIs do Windows para automação de UI). Use powershell.exe como comando para fazer a ponte entre WSL e Windows:

  1. Instale uv no Windows (a partir de um terminal PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
  1. A partir do seu terminal WSL, registre o servidor:
claude mcp add windows-mcp --transport stdio -s user -- powershell.exe -Command "C:\Users\<user>\.local\bin\uvx.exe windows-mcp serve"

Substitua <user> pelo seu nome de usuário do Windows. A flag -s user disponibiliza o servidor em todos os projetos.

  1. Reinicie o Claude Code e verifique com /mcp.

🖥️ Executando o Windows-MCP

O Windows-MCP é executado diretamente na sua máquina Windows e expõe suas ferramentas ao cliente MCP conectado.

# Runs with stdio transport (default)
uvx windows-mcp serve

# Or with SSE/Streamable HTTP for network access
uvx windows-mcp serve --transport sse --host localhost --port 8000
uvx windows-mcp serve --transport streamable-http --host localhost --port 8000

Variáveis de ambiente opcionais podem ser definidas para personalizar o comportamento — consulte Variáveis de Ambiente abaixo.

Segurança para Acesso Remoto

Para acesso à rede, habilite autenticação e TLS:

windows-mcp serve --transport sse --host 0.0.0.0 \
  --auth-key "your_secret_token" \
  --ip-allowlist "203.0.113.0/24" \
  --ssl-certfile cert.pem --ssl-keyfile key.pem

Consulte 🔐 Segurança e Controle de Acesso para todas as opções.

Opções de Transporte

TransporteComandoCaso de Uso
stdio (padrão)serve --transport stdioConexão direta de clientes MCP como Claude Desktop, Cursor, etc.
sseserve --transport sse --host HOST --port PORTAcessível pela rede via Server-Sent Events
streamable-httpserve --transport streamable-http --host HOST --port PORTAcessível pela rede via streaming HTTP (recomendado para produção)

🔐 Segurança e Controle de Acesso

Autenticação

windows-mcp serve --transport sse --host 0.0.0.0 --auth-key "your_token"

Requer cabeçalho Authorization: Bearer your_token em todas as solicitações.

Lista de Permissões de IP

windows-mcp serve --auth-key "token" --ip-allowlist "203.0.113.0/24,198.51.100.5"

Restringe conexões a faixas CIDR especificadas. Bloqueia IPs privados/loopback por padrão.

Origens CORS

Por padrão, nenhum cabeçalho CORS é emitido. Os navegadores bloqueiam solicitações de origens cruzadas por meio de sua própria Política de Mesma Origem, o que significa que sites arbitrários não podem alcançar o plano de controle MCP, mesmo que o servidor esteja em localhost. A validação do cabeçalho Host (proteção contra rebinding de DNS) também é aplicada automaticamente com base no endereço de bind.

Se você precisar que um cliente MCP baseado em navegador alcance o servidor, opte por uma lista de permissões de origens explícita:

windows-mcp serve --cors-origins "https://my-client.example.com,https://other.example.com"

Apenas as origens listadas recebem cabeçalhos Access-Control-Allow-Origin; todas as outras solicitações de origens cruzadas são rejeitadas pelo navegador. A variável de ambiente equivalente é WINDOWS_MCP_CORS_ORIGINS.

Seleção de Ferramentas

Todas as ferramentas estão habilitadas por padrão. Use --tools para permitir ferramentas específicas ou --exclude-tools para bloquear ferramentas específicas.

windows-mcp serve --tools "Screenshot,Click,Snapshot"   # Enable only these tools
windows-mcp serve --exclude-tools "PowerShell,Registry" # Disable specific tools

TLS/HTTPS

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

windows-mcp serve --ssl-certfile cert.pem --ssl-keyfile key.pem

OAuth 2.0 + PKCE

Para clientes MCP que usam OAuth (por exemplo, Claude Desktop) em vez de uma chave de API estática:

windows-mcp serve --transport streamable-http --host 0.0.0.0 \
  --ssl-certfile ~/.windows-mcp/cert.pem \
  --ssl-keyfile  ~/.windows-mcp/key.pem \
  --oauth-client-id my-client \
  --oauth-client-secret my-secret

Configuração do Claude Desktop:

{
  "mcpServers": {
    "windows-mcp": {
      "type": "http",
      "url": "https://<host>:8000/mcp/",
      "oauth": {
        "clientId": "my-client",
        "clientSecret": "my-secret"
      }
    }
  }
}

O servidor OAuth expõe:

  • GET /.well-known/oauth-authorization-server — metadados do servidor (RFC 8414)
  • GET /oauth/authorize — Código de Autorização + PKCE (S256 obrigatório)
  • POST /oauth/token — troca de token (segredo do cliente obrigatório)
  • POST /oauth/register — desabilitado; os clientes devem ser pré-provisionados

O registro dinâmico de clientes está desabilitado. As URIs de redirecionamento devem ser apenas loopback http(s). A chave de autenticação e o OAuth podem coexistir — ambos são aceitos como tokens Bearer válidos.

Arquivo de Configuração (~/.windows-mcp/config.toml)

Em vez de passar flags toda vez, armazene sua configuração em ~/.windows-mcp/config.toml. As flags da CLI sempre substituem os valores do arquivo de configuração. Ordem de pesquisa:

  1. --config /path/to/config.toml
  2. ~/.windows-mcp/config.toml

stdio — apenas local, sem necessidade de segurança:

[server]
transport = "stdio"

SSE — acesso à rede com autenticação e restrição de IP:

[server]
transport = "sse"
host      = "0.0.0.0"
port      = 8000
auth_key  = "your-secret-key"

[security]
ip_allowlist = ["192.168.1.0/24"]

HTTP Streamable — com autenticação, TLS e exclusões de ferramentas:

[server]
transport    = "streamable-http"
host         = "0.0.0.0"
port         = 8000
auth_key     = "your-secret-key"
ssl_certfile = "cert.pem"   # resolved relative to ~/.windows-mcp/
ssl_keyfile  = "key.pem"

[security]
ip_allowlist        = ["192.168.1.0/24"]
cors_origins        = ["https://my-client.example.com"]   # optional — browser CORS opt-in
oauth_client_id     = "my-client"      # optional — enables OAuth 2.0 + PKCE
oauth_client_secret = "my-secret"

[tools]
exclude = ["PowerShell", "Registry"]   # disable specific tools

Coloque os arquivos de certificado e chave no mesmo diretório:

~/.windows-mcp/
├── config.toml
├── cert.pem
└── key.pem

Gere um certificado autoassinado diretamente nesse diretório:

mkdir -p ~/.windows-mcp
openssl req -x509 -newkey rsa:4096 \
  -keyout ~/.windows-mcp/key.pem \
  -out ~/.windows-mcp/cert.pem \
  -days 365 -nodes

Controle da área de trabalho

O controle da área de trabalho é habilitado por padrão com a política relaxada: ações diretas na área de trabalho são bloqueadas, enquanto ferramentas em segundo plano podem ser executadas enquanto você usa o computador. Configure-o em ~/.windows-mcp/config.toml (ou desative-o completamente com enabled = false):

[control]
enabled = true
policy = "relaxed"
idle_timeout_seconds = 10.0

Ou substitua-o para uma única inicialização do servidor MCP:

windows-mcp serve --no-control
windows-mcp serve --control --control-idle-timeout 3
windows-mcp serve --control-policy strict

Nos argumentos de inicialização do seu cliente MCP, coloque essas opções após serve. A prioridade é CLI > variável de ambiente > TOML > padrão. --control pode substituir explicitamente enabled = false. O tempo limite aceita segundos positivos finitos (incluindo frações); zero não desativa o controle. O padrão permanece 10 segundos.

Reinicie o processo do servidor Windows-MCP após alterar essas configurações. Não há recarga a quente nem ferramenta de configuração por IA. ControlStatus informa os valores efetivos de enabled, policy e idle_timeout_seconds, com o estado disabled quando o controle está desativado.

Desativar o controle desliga o bloqueio de propriedade, a proteção de entrada física, o monitoramento de tomada de controle e o indicador de controle. As ferramentas permanecem disponíveis e serializadas, com a limpeza de teclas/botões injetados mantida. As ações de IA na área de trabalho podem então interferir na sua própria entrada; scripts do PowerShell também podem operar a interface. A configuração separada do flash de captura de tela permanece inalterada. Quando o controle está ativado, o temporizador de inatividade reinicia com a entrada física, portanto, encurtá-lo não permite chamadas bloqueadas enquanto você continua usando o computador.

Durante o controle de IA, pequenos movimentos do mouse permanecem bloqueados sem pausar a ferramenta atual. A tomada de controle do mouse soma o comprimento de cada movimento relativo de entrada bruta, incluindo movimentos de vaivém, até atingir 500 unidades de dispositivo por padrão. Uma lacuna de 0,5 segundo sem movimento inicia um novo segmento; alternar de dispositivo ou iniciar um novo período de controle também zera o total. Defina control.mouse_takeover_units no TOML para alterar o limite (40–2000) e reinicie o servidor. São unidades de dispositivo, não pixels de tela. Dispositivos que não fornecem entrada bruta relativa identificável, incluindo alguns touchpads e dispositivos de entrada remotos, devem usar Ctrl+Alt+Shift+Backspace para assumir o controle. A configuração legada mouse_takeover_pixels ainda é aceita para compatibilidade, mas não afeta mais a tomada de controle.

Políticas de bloqueio da área de trabalho

PolíticaOperações que exigem propriedade da área de trabalho
relaxed (A, padrão)Entrada direta: Click, Type, Scroll, Move, Shortcut, MultiSelect, MultiEdit; App switch e resize.
balanced (B)Tudo em A, mais PowerShell, Notification, App launch/launch_executable, Process kill e Clipboard set.
strict (C)Todas as ferramentas, exceto ControlStatus, correspondendo ao comportamento de bloqueio anterior.

FileSystem, Registry, Snapshot, Screenshot, Scrape, Wait, WaitFor, DisplayInventory, Process list e Clipboard get ignoram a propriedade em A e B. Essa classificação diz respeito à interferência na área de trabalho, não a permissões ou segurança de dados. O PowerShell ainda pode operar a interface, e operações de arquivo/registro podem ter outros efeitos colaterais.

Chamadas não bloqueadas não adquirem nem estendem a concessão da área de trabalho, não ativam seu indicador nem aguardam seu bloqueio de ferramenta. As restrições de recursos existentes ainda se aplicam: as operações de automação de interface compartilham um worker dedicado, portanto, um WaitFor longo pode atrasar outros trabalhos de UIA. O flash de captura de tela separado permanece inalterado. --no-control mantém sua serialização existente de todas as ferramentas e substitui as verificações de propriedade da política.

No modo relaxado, os agentes devem preferir o trabalho em segundo plano e coordenar a interferência conhecida na área de trabalho com o usuário. Obtenha permissão antes de interromper conscientemente o processo de um usuário ou assumir o foco, reutilizando a autorização existente. Estas são diretrizes de uso de ferramentas, não aprovação imposta pelo servidor ou rastreamento de propriedade de processo. A área de transferência continua usando a área de transferência real do Windows; nenhuma área de transferência virtual é introduzida.

Para contribuidores: as categorias de ferramentas e as poucas exceções específicas de modo estão em src/windows_mcp/tools/control_policy.py. Atualize essa tabela ao adicionar ferramentas ou modos; os testes de detecção de cobertura de registro detectam omissões. Extensões desconhecidas usam conservadoramente o bloqueio. Mantenha as decisões de política fora das implementações individuais de ferramentas.

Auxiliar auth

Gere uma chave de autenticação e salve uma configuração funcional em ~/.windows-mcp/config.toml:

windows-mcp auth

Gere autenticação mais um certificado TLS autoassinado:

windows-mcp auth --transport streamable-http --host 0.0.0.0 --port 8000 --with-tls

Este comando grava a chave de autenticação no arquivo de configuração, pode gerar cert.pem e key.pem e imprime um exemplo de configuração de cliente MCP para o transporte selecionado.

Proteção SSRF

A ferramenta Scrape bloqueia: IPs privados, loopback, link-local, credenciais em URLs e esquemas não HTTP.


⚙️ Variáveis de Ambiente

Todas as variáveis são opcionais, salvo indicação em contrário. Defina-as por meio da chave env em claude_desktop_config.json (ou na configuração equivalente do seu cliente MCP).

Captura de tela e Snapshot

VariávelPadrãoDescrição
WINDOWS_MCP_SCREENSHOT_SCALE1.0Fator de escala aplicado às capturas de tela antes da codificação. Aceita um float no intervalo 0.1–1.0. Útil em monitores de alta resolução (1440p, 4K) onde o padrão produz imagens que excedem o limite de 1 MB de resultado de ferramenta do Claude Desktop. Defina como 0.5 para reduzir ambas as dimensões pela metade (um quarto do tamanho do arquivo).
WINDOWS_MCP_SCREENSHOT_BACKENDautoBackend de captura de tela. Valores aceitos: auto (tenta dxcam → mss → pillow nessa ordem), dxcam, mss, pillow. Use mss ou pillow se dxcam estiver indisponível ou causar problemas na sua GPU.
WINDOWS_MCP_PROFILE_SNAPSHOT(desativado)Defina como 1, true, yes ou on para emitir logs de tempo por estágio para chamadas de Screenshot/Snapshot. Útil para diagnosticar capturas lentas.
WINDOWS_MCP_DISABLE_FLASH(desativado)Defina como 1, true, yes ou on para suprimir a borda brilhante laranja-avermelhada que destaca brevemente a área capturada após cada captura de tela. O flash é renderizado em uma janela transparente sempre no topo após a captura, portanto nunca aparece na imagem capturada.

Excluindo processos da travessia de automação de interface

VariávelPadrãoDescrição
WINDOWS_MCP_EXCLUDE_PROCESSES(nenhum)Nomes base de processos separados por vírgula cujas janelas são excluídas da travessia da árvore de automação de interface, ex.: Code.exe,Cursor.exe. A correspondência é insensível a maiúsculas/minúsculas e exata — sem curingas ou expressões regulares. Não definido ou vazio preserva o comportamento atual.

Alguns aplicativos expõem árvores de acessibilidade que podem ficar lentas ou não responder durante a travessia de automação de interface. Snapshot e WaitFor podem percorrer a janela ativa e outros handles de nível superior selecionados para captura de árvore, portanto, um provedor de acessibilidade problemático pode travar a captura.

Defina:

WINDOWS_MCP_EXCLUDE_PROCESSES=Code.exe,Cursor.exe

Os nomes de processos são nomes base de executáveis separados por vírgula. Eles são correspondidos sem diferenciar maiúsculas de minúsculas após a remoção de espaços em branco ao redor; entradas vazias são ignoradas e duplicatas são inofensivas.

Uma janela é excluída antes de qualquer chamada de automação de interface ser feita contra ela, portanto, seu provedor de acessibilidade nunca é acessado. Aplicativos excluídos ainda podem aparecer na lista de janelas, mas o Windows-MCP não percorrerá suas árvores de acessibilidade e eles não são relatados como capturas com falha. Se o processo proprietário de uma janela não puder ser resolvido, a janela é percorrida normalmente.

Este é um mecanismo de exclusão — uma mitigação, não uma correção completa para toda forma de #383. Ele apenas ignora os processos que você nomeia; uma janela problemática que você não listou ainda pode travar uma captura.

Configurações de controle da área de trabalho

Se um evento de liberação de tecla/botão físico for perdido, o monitor de entrada verifica retenções residuais após a espera de inatividade configurada. Cinco amostras consecutivas de tudo liberado, com pelo menos 100 ms de intervalo, limpam os registros obsoletos. Nova entrada física ou uma tecla/botão relatado como pressionado redefine a confirmação. Isso é o melhor esforço: um resultado zero de GetAsyncKeyState conta como liberado mesmo quando o Windows não pode fornecer o estado; a amostragem repetida filtra leituras transitórias, mas não pode distinguir falha persistente de consulta.

VariávelPadrãoDescrição
WINDOWS_MCP_CONTROLtrueHabilita a coordenação de controle da área de trabalho. Defina como false para desativar. Equivalente a --control/--no-control; reinicialização necessária.
WINDOWS_MCP_CONTROL_POLICYrelaxedPolítica de bloqueio: relaxed, balanced ou strict. Equivalente a --control-policy; reinicialização necessária.
WINDOWS_MCP_CONTROL_IDLE_TIMEOUT10.0Espera de inatividade positiva finita em segundos. Equivalente a --control-idle-timeout; reinicialização necessária.

Segurança

VariávelPadrãoDescrição
WINDOWS_MCP_AUTH_KEY(nenhum)Token Bearer exigido em todas as solicitações HTTP. Alternativa ao sinalizador de CLI --auth-key.
WINDOWS_MCP_IP_ALLOWLIST(nenhum)Lista separada por vírgulas de IPs de clientes permitidos ou intervalos CIDR (ex.: 203.0.113.0/24,198.51.100.5). Alternativa ao sinalizador de CLI --ip-allowlist.
WINDOWS_MCP_CORS_ORIGINS(nenhum)Lista separada por vírgulas de origens permitidas para fazer solicitações de navegador entre origens (ex.: https://my-client.example.com). Nenhum cabeçalho CORS é emitido quando não definido. Alternativa ao sinalizador de CLI --cors-origins.
WINDOWS_MCP_TOOLS(todos habilitados)Lista explícita separada por vírgulas de ferramentas para habilitar (ex.: Screenshot,Click,Snapshot). Alternativa ao sinalizador de CLI --tools.
WINDOWS_MCP_EXCLUDE_TOOLS(nenhum)Lista separada por vírgulas de ferramentas para desabilitar (ex.: PowerShell,Registry). Alternativa ao sinalizador de CLI --exclude-tools.
WINDOWS_MCP_SSL_CERTFILE(nenhum)Caminho para o arquivo de certificado TLS (.pem) para HTTPS. Deve ser fornecido com WINDOWS_MCP_SSL_KEYFILE.
WINDOWS_MCP_SSL_KEYFILE(nenhum)Caminho para o arquivo de chave privada TLS (.pem) para HTTPS. Deve ser fornecido com WINDOWS_MCP_SSL_CERTFILE.
WINDOWS_MCP_OAUTH_CLIENT_ID(nenhum)ID do cliente OAuth para transportes HTTP. Deve ser fornecido com WINDOWS_MCP_OAUTH_CLIENT_SECRET.
WINDOWS_MCP_OAUTH_CLIENT_SECRET(nenhum)Segredo do cliente OAuth para transportes HTTP. Deve ser fornecido com WINDOWS_MCP_OAUTH_CLIENT_ID.
WINDOWS_MCP_STATELESS_HTTPfalseDefina como 1, true, yes ou on para executar streamable-http sem estado de conexão Mcp-Session-Id. Útil para reconexões após reinicializações e para implantações com escala horizontal.

MseeP.ai Security Assessment Badge

Telemetria

VariávelPadrãoDescrição
ANONYMIZED_TELEMETRYtrueDefina como false para desativar a telemetria anônima de uso. Nenhum dado pessoal, argumentos de ferramenta ou saídas são coletados, independentemente desta configuração.
POSTHOG_API_KEYPadrão do projetoSubstitui a chave de gravação do projeto PostHog usada para telemetria anônima. Defina como uma string vazia para pular a inicialização do cliente PostHog.
POSTHOG_HOSThttps://us.i.posthog.comSubstitui o host do PostHog para telemetria anônima, como para uma implantação PostHog auto-hospedada.

Depuração

VariávelPadrãoDescrição
WINDOWS_MCP_DEBUGfalseDefina como 1, true, yes ou on para habilitar o modo de depuração, que define o nível de log como DEBUG para saída detalhada. Também disponível como sinalizador de CLI --debug.

WatchDog

VariávelPadrãoDescrição
WINDOWS_MCP_WATCHDOGfalseDefina como on, 1, true, yes ou enabled (sem diferenciar maiúsculas de minúsculas) para executar o watchdog de foco da UIA. Ele fica desativado por padrão porque seu único efeito restante é o registro de depuração de mudanças de foco, enquanto custa uma thread em segundo plano e uma assinatura de evento UIA de longa duração que pode travar o servidor em ambientes UIA instáveis após longos períodos de atividade (por exemplo, após suspensão/retomada ou troca de sessão). A árvore de acessibilidade é construída sob demanda para cada chamada de ferramenta de qualquer forma, portanto o comportamento das ferramentas não é afetado.

Exemplo claude_desktop_config.json:

Local (sem segurança):

{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": ["windows-mcp", "serve"],
      "env": { "WINDOWS_MCP_SCREENSHOT_SCALE": "0.5" }
    }
  }
}

Remoto (com autenticação + lista de permissões de IP + TLS):

{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": ["windows-mcp", "serve", "--transport", "sse", "--host", "0.0.0.0"],
      "env": {
        "WINDOWS_MCP_AUTH_KEY": "your_token",
        "WINDOWS_MCP_IP_ALLOWLIST": "203.0.113.0/24",
        "WINDOWS_MCP_SSL_CERTFILE": "/path/to/cert.pem",
        "WINDOWS_MCP_SSL_KEYFILE": "/path/to/key.pem"
      }
    }
  }
}

🔨Ferramentas MCP

O cliente MCP pode acessar as seguintes ferramentas para interagir com o Windows:

  • Click: Clique na tela nas coordenadas fornecidas.
  • Type: Digite texto em um elemento (opcionalmente limpa o texto existente).
  • Scroll: Role vertical ou horizontalmente na janela ou em regiões específicas.
  • Move: Mova o ponteiro do mouse ou arraste (defina drag=True) para coordenadas. Para arrastar de forma determinística, defina from_loc=[x, y] com drag=True para pressionar em um ponto inicial explícito e soltar em loc em uma única chamada de ferramenta. O duration opcional adiciona movimento intermediário limitado.
  • Shortcut: Pressione atalhos de teclado (Ctrl+c, Alt+Tab, etc).
  • Wait: Pause por uma duração definida.
  • WaitFor: Aguarde até que texto, uma janela ativa, um elemento ou um elemento focado apareça, pesquisando o estado da interface em uma única chamada de ferramenta.
  • ControlStatus: Leia o proprietário do controle da área de trabalho e o tempo restante de inatividade do usuário. Ele permanece disponível quando a tomada de controle pelo usuário bloqueia novas chamadas de ferramenta. Durante o controle de IA, uma borda visível e um brilho do cursor indicam a propriedade; mover o mouse físico substancialmente ou pressionar Ctrl+Alt+Shift+Backspace devolve o controle ao usuário até 10 segundos de inatividade. Durante a captura de tela, o indicador é temporariamente ocultado e a entrada física é liberada; qualquer entrada física durante esse intervalo antecipa o controle de IA, embora ControlStatus possa brevemente ainda relatar ai até que esse evento seja processado. A entrada de área de trabalho em etapas para no próximo ponto de verificação, mas um comando externo já em execução (por exemplo, PowerShell ou uma inicialização de App) pode continuar após a tomada de controle; essa barreira de controle não cancela processos nem desfaz efeitos colaterais concluídos. Em uma falha de hook detectada, teclas e botões do mouse injetados são liberados de forma assíncrona, portanto a entrada física pode brevemente se sobrepor a uma tecla ou botão de IA ainda pressionado. O Windows também pode remover silenciosamente um hook de baixo nível sem notificar este processo; a substituição periódica do hook reduz, mas não elimina, essa janela não detectada. A tomada de controle pelo usuário é, portanto, um esforço de melhor esforço, não uma fronteira de segurança ou uma garantia de controle exclusivo. Clientes MCP sem sessão de 28/07/2026 não podem receber logs de estado de controle não solicitados; eles devem consultar ControlStatus quando precisarem do proprietário atual.
  • DisplayInventory: Leia o layout do display, áreas de trabalho, DPI efetivo e metadados de escala.
  • Screenshot: Captura rápida da área de trabalho com prioridade para captura de tela, incluindo posição do cursor, janelas ativas/abertas e uma imagem. Ignora a extração da árvore da interface para velocidade e deve ser a primeira chamada padrão quando você precisar principalmente de contexto visual. Suporta display=[0] ou display=[0,1] usando índices de display ativos do Windows baseados em zero, e region=[left, top, right, bottom] (coordenadas de pixels da área de trabalho virtual) para capturar apenas esse retângulo em vez da tela inteira — mais barato em tokens quando você já sabe qual área importa. region tem precedência sobre display quando ambos são fornecidos; uma região inválida ou fora dos limites gera um erro. Após a captura, uma borda brilhante laranja-avermelhada é desenhada dentro da área capturada como confirmação visual (defina WINDOWS_MCP_DISABLE_FLASH=1 para desativar).
  • Snapshot: Captura completa do estado da área de trabalho para fluxos de trabalho que precisam de IDs de elementos interativos, regiões roláveis ou extração de navegador use_dom=True. Suporta use_vision=True para incluir capturas de tela, display=[0] ou display=[0,1] usando índices de display ativos do Windows baseados em zero, e region=[left, top, right, bottom] (coordenadas de pixels da área de trabalho virtual) para inspecionar apenas esse retângulo em vez da tela inteira; region tem precedência sobre display quando ambos são fornecidos, e uma região inválida ou fora dos limites gera um erro.
  • App: Inicie um aplicativo pelo nome no Menu Iniciar ou estritamente pelo caminho do executável com argv separado e cwd opcional; redimensione, mova e alterne entre janelas.
  • PowerShell: Para executar comandos do PowerShell.
  • FileSystem: Leia, escreva, copie, mova, exclua, liste, pesquise e inspecione arquivos e diretórios.
  • Scrape: Para extrair informações de uma página da web inteira.
  • MultiSelect: Selecione vários itens (arquivos, pastas, caixas de seleção) com a tecla Ctrl opcional. Usa resolução em massa de rótulo para coordenadas quando rótulos são fornecidos.
  • MultiEdit: Insira texto em vários campos de entrada em coordenadas especificadas. Usa resolução em massa de rótulo para coordenadas quando rótulos são fornecidos.
  • Clipboard: Leia ou defina o conteúdo da área de transferência do Windows.
  • Process: Liste processos em execução ou encerre-os por PID ou nome.
  • Notification: Envie uma notificação toast do Windows com título e mensagem.
  • Registry: Leia, escreva, exclua ou liste valores e chaves do Registro do Windows.

🤝 Conecte-se Conosco

Fique atualizado e junte-se à nossa comunidade:

Histórico de Estrelas

Star History Chart

👥 Contribuidores

Obrigado a todas as pessoas incríveis que contribuíram para o Windows-MCP! 🎉

Agradecemos cada contribuição, seja código, documentação, relatórios de bugs ou sugestões de recursos. Quer contribuir? Confira nossas Diretrizes de Contribuição!

🔒 Segurança

Importante: O Windows-MCP opera com acesso total ao sistema e pode realizar operações irreversíveis. Revise nossas diretrizes abrangentes de segurança antes da implantação.

Para informações detalhadas de segurança, incluindo:

  • Avaliações de risco específicas de ferramentas
  • Recomendações de implantação
  • Procedimentos de relato de vulnerabilidades
  • Diretrizes de conformidade e auditoria

Leia nossa Política de Segurança.

📊 Telemetria

O Windows-MCP coleta dados de uso para ajudar a melhorar o servidor MCP. Nenhuma informação pessoal, nenhum argumento de ferramenta, nenhuma saída é rastreada.

Para desativar a telemetria, defina ANONYMIZED_TELEMETRY como false na configuração do seu cliente MCP:

{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ],
      "env": {
        "ANONYMIZED_TELEMETRY": "false"
      }
    }
  }
}

Consulte a seção Variáveis de Ambiente para a lista completa de opções configuráveis.

Para informações detalhadas sobre quais dados são coletados e como são tratados, consulte a seção Telemetria e Privacidade de Dados em nossa Política de Segurança.

📝 Limitações

  • Selecionar seções específicas do texto em um parágrafo, pois o MCP depende da árvore de acessibilidade. (⌛ Trabalhando nisso.)
  • Type-Tool é destinado a digitar texto, não a programar em IDE, porque digita o programa como um todo em um arquivo. (⌛ Trabalhando nisso.)
  • Este servidor MCP não pode ser usado para jogar videogames 🎮.

🪪 Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

🙏 Agradecimentos

O Windows-MCP utiliza vários projetos de código aberto excelentes que alimentam seus recursos de automação do Windows:

Muito obrigado aos mantenedores e contribuidores dessas bibliotecas por seu trabalho excepcional e espírito de código aberto.

🤝Contribuindo

Contribuições são bem-vindas! Consulte CONTRIBUTING para instruções de configuração e diretrizes de desenvolvimento.

Feito com ❤️ por CursorTouch

Citação

@software{
  author       = {CursorTouch},
  title        = {Windows-MCP: Lightweight open-source project for integrating LLM agents with Windows},
  year         = {2024},
  publisher    = {GitHub},
  url={https://github.com/CursorTouch/Windows-MCP}
}