Windows-MCP
Um servidor MCP leve para interagir com o Sistema Operacional Windows.
Documentação
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
- Windows-MCP alcançou
2M+ Usersem Claude Desktop Extensiosn. - Experimente 🪟Windows-Use, um agente construído usando Windows-MCP.
- Windows-MCP agora está disponível no PyPI (portanto, suporta
uvx windows-mcp) - Windows-MCP foi adicionado ao MCP Registry
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 especialuse_dom=Truepara 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õeRootWebAreavia 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 uvoucurl -LsSf https://astral.sh/uv/install.sh | sh - A ferramenta
Appresolve 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
- Instale o Claude Desktop.
npm install -g @anthropic-ai/mcpb
- 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
- Clone o repositório:
git clone https://github.com/CursorTouch/Windows-MCP.git
cd Windows-MCP
- 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"
]
}
}
}
- 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:
- O arquivo de configuração está localizado em:
%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json(não%APPDATA%\Claude\). - 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
- Em um terminal, execute
uv tool install windows-mcp. - 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
- Instale o Perplexity Desktop.
- Abra o Perplexity Desktop e vá para
Settings -> Connectors -> Add Connector -> Advanced. - Digite o nome como
Windows-MCPe 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"
]
}
- Clique em
Savee 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
- Instale o Gemini CLI.
npm install -g @google/gemini-cli
- Abra
%USERPROFILE%/.gemini/settings.json. - Adicione a configuração
windows-mcpe 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"].
- Reinicie o Gemini CLI.
Instalar no Qwen Code
1. Instale o Qwen Code.npm install -g @qwen-code/qwen-code@latest
- Abra
%USERPROFILE%/.qwen/settings.json. - Adicione a configuração
windows-mcpe 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"].
- Reinicie o Qwen Code.
Instalar no Codex CLI
1. Instale o Codex CLI.npm install -g @openai/codex
- Abra
%USERPROFILE%/.codex/config.toml. - Adicione a configuração
windows-mcpe 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"].
- 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
- Instale o Claude Code:
npm install -g @anthropic-ai/claude-code
- 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
- Clone o repositório:
git clone https://github.com/CursorTouch/Windows-MCP.git
cd Windows-MCP
- 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.
- 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:
- Instale
uvno Windows (a partir de um terminal PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
- 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.
- 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
| Transporte | Comando | Caso de Uso |
|---|---|---|
stdio (padrão) | serve --transport stdio | Conexão direta de clientes MCP como Claude Desktop, Cursor, etc. |
sse | serve --transport sse --host HOST --port PORT | Acessível pela rede via Server-Sent Events |
streamable-http | serve --transport streamable-http --host HOST --port PORT | Acessí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 (S256obrigató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:
--config /path/to/config.toml~/.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ítica | Operaçõ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ável | Padrão | Descrição |
|---|---|---|
WINDOWS_MCP_SCREENSHOT_SCALE | 1.0 | Fator 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_BACKEND | auto | Backend 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ável | Padrão | Descriçã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ável | Padrão | Descrição |
|---|---|---|
WINDOWS_MCP_CONTROL | true | Habilita 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_POLICY | relaxed | Política de bloqueio: relaxed, balanced ou strict. Equivalente a --control-policy; reinicialização necessária. |
WINDOWS_MCP_CONTROL_IDLE_TIMEOUT | 10.0 | Espera de inatividade positiva finita em segundos. Equivalente a --control-idle-timeout; reinicialização necessária. |
Segurança
| Variável | Padrão | Descriçã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_HTTP | false | Defina 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. |
Telemetria
| Variável | Padrão | Descrição |
|---|---|---|
ANONYMIZED_TELEMETRY | true | Defina 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_KEY | Padrão do projeto | Substitui 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_HOST | https://us.i.posthog.com | Substitui o host do PostHog para telemetria anônima, como para uma implantação PostHog auto-hospedada. |
Depuração
| Variável | Padrão | Descrição |
|---|---|---|
WINDOWS_MCP_DEBUG | false | Defina 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ável | Padrão | Descrição |
|---|---|---|
WINDOWS_MCP_WATCHDOG | false | Defina 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, definafrom_loc=[x, y]comdrag=Truepara pressionar em um ponto inicial explícito e soltar emlocem uma única chamada de ferramenta. Odurationopcional 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 pressionarCtrl+Alt+Shift+Backspacedevolve 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, emboraControlStatuspossa brevemente ainda relataraiaté 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,PowerShellou uma inicialização deApp) 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 consultarControlStatusquando 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. Suportadisplay=[0]oudisplay=[0,1]usando índices de display ativos do Windows baseados em zero, eregion=[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.regiontem precedência sobredisplayquando 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 (definaWINDOWS_MCP_DISABLE_FLASH=1para 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 navegadoruse_dom=True. Suportause_vision=Truepara incluir capturas de tela,display=[0]oudisplay=[0,1]usando índices de display ativos do Windows baseados em zero, eregion=[left, top, right, bottom](coordenadas de pixels da área de trabalho virtual) para inspecionar apenas esse retângulo em vez da tela inteira;regiontem precedência sobredisplayquando 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:
-
📢 Siga-nos no X para as últimas notícias e atualizações
-
💬 Junte-se à nossa Comunidade no Discord
Histórico de Estrelas
👥 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}
}
