Windows-MCP

Un servidor MCP ligero para interactuar con el sistema operativo Windows.

Documentación

🪟 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 es un proyecto ligero y de código abierto que permite una integración perfecta entre agentes de IA y el sistema operativo Windows. Actuando como un servidor MCP, tiende un puente entre los LLM y el sistema operativo Windows, permitiendo a los agentes realizar tareas como navegación de archivos, control de aplicaciones, interacción con la interfaz de usuario, pruebas de QA y más.

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

Actualizaciones

Sistemas Operativos Compatibles

  • Windows 10
  • Windows 11

El paquete actual requiere Python 3.14+, que es compatible con Windows 10 y versiones posteriores. Las versiones anteriores de Windows no son compatibles con la instalación actual.

🎥 Demostraciones

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

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

✨ Características Clave

  • Integración Perfecta con Windows
    Interactúa de forma nativa con los elementos de la interfaz de Windows, abre aplicaciones, controla ventanas, simula entrada de usuario y más.

  • Usa Cualquier LLM (Visión Opcional) A diferencia de muchas herramientas de automatización, Windows-MCP no depende de técnicas tradicionales de visión por computadora ni de modelos específicos ajustados; funciona con cualquier LLM, reduciendo la complejidad y el tiempo de configuración.

  • Amplio Conjunto de Herramientas para Automatización de UI
    Incluye herramientas para operaciones básicas de teclado, ratón y captura del estado de ventanas/UI.

  • Ligero y de Código Abierto
    Dependencias mínimas y configuración sencilla con el código fuente completo disponible bajo licencia MIT.

  • Personalizable y Extensible
    Adapta o amplía fácilmente las herramientas para satisfacer tus necesidades únicas de automatización o integración con IA.

  • Interacción en Tiempo Real
    La latencia típica entre acciones (por ejemplo, de un clic de ratón al siguiente) oscila entre 0,2 y 0,5 segundos, y puede variar ligeramente según el número de aplicaciones activas y la carga del sistema, así como la velocidad de inferencia del LLM.

  • Modo DOM para Automatización de Navegador
    Modo especial use_dom=True para la Herramienta de Estado que se centra exclusivamente en el contenido de la página web, filtrando los elementos de la interfaz del navegador para una automatización web más limpia y eficiente. Compatible con Chrome, Edge y Firefox (Firefox utiliza un respaldo IAccessible2 ya que no expone RootWebArea a través de UIA).

🛠️Instalación

Nota: Cuando instales este servidor MCP por primera vez, puede tardar uno o dos minutos debido a la instalación de las dependencias en pyproject.toml. En la primera ejecución, el servidor puede agotar el tiempo de espera; ignóralo y reinícialo.

Requisitos Previos

  • Python 3.14+
  • UV (Gestor de Paquetes) de Astra, instala con pip install uv o curl -LsSf https://astral.sh/uv/install.sh | sh
  • La herramienta App resuelve los nombres de visualización localizados del Menú Inicio, así como los nombres internos de las aplicaciones; no se requiere un idioma de visualización de Windows en inglés.

Ejecutar al Iniciar Sesión

Ejecuta el servidor directamente cuando sea necesario:

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

Instálalo como una tarea en segundo plano que se inicia ahora y en cada inicio de sesión:

windows-mcp install

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

Esto crea una Tarea Programada por usuario llamada windows-mcp-server y un script contenedor en ~/.windows-mcp/start-server.cmd. Usa windows-mcp uninstall para eliminarla. Los registros se escriben en ~/.windows-mcp/server.log y ~/.windows-mcp/server.error.log.

Instalar en Claude Desktop
  1. Instala Claude Desktop.
npm install -g @anthropic-ai/mcpb
  1. Configura el servidor MCP.

Opción A: Instalar desde PyPI (Recomendado)

Usa uvx para ejecutar la última versión directamente desde PyPI.

Añade esto a tu claude_desktop_config.json:

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

Opción B: Instalar desde el Código Fuente

  1. Clona el repositorio:
git clone https://github.com/CursorTouch/Windows-MCP.git
cd Windows-MCP
  1. Añade esto a tu claude_desktop_config.json:
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "<path to the windows-mcp directory>",
        "run",
        "windows-mcp",
        "serve"
      ]
    }
  }
}
  1. Reinicia completamente Claude Desktop y verifica que el servidor aparezca en la lista de herramientas MCP.

Claude Desktop MSIX (Microsoft Store)

La versión empaquetada con MSIX de Claude Desktop (versión de Microsoft Store) virtualiza %APPDATA%. Esto causa dos problemas principales:

  1. El archivo de configuración se encuentra en: %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json (no %APPDATA%\Claude\).
  2. La instalación automática desde el "Directorio de Claude" fallará porque la variable ${__dirname} se resuelve a la ruta incorrecta (no virtualizada).

Para configurar Windows-MCP en la versión de Claude de Microsoft Store:

Debes editar manualmente el archivo de configuración. Ten en cuenta que las aplicaciones Electron en el sandbox MSIX no heredan el PATH del sistema, por lo que debes usar la ruta absoluta completa a uvx.exe (o uv.exe).

Opción A: Usando el ejecutable preinstalado

  1. En una terminal, ejecuta uv tool install windows-mcp.
  2. Usa el ejecutable generado en tu configuración:
{
  "mcpServers": {
    "windows-mcp": {
      "command": "C:\\Users\\<user>\\.local\\bin\\windows-mcp.exe",
      "args": ["serve"]
    }
  }
}

Opción B: Usando uvx

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

Opción C: Instalar desde el Código Fuente

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

Reemplaza <user> con tu nombre de usuario de Windows. Para encontrar las rutas correctas, ejecuta where uvx, where windows-mcp o where uv. Cierra completamente Claude Desktop (Bandeja → Salir) y vuelve a abrirlo después de guardar la configuración.

Para obtener ayuda adicional sobre la integración con Claude Desktop, consulta la documentación de MCP.

Instalar en Perplexity Desktop
  1. Instala Perplexity Desktop.
  2. Abre Perplexity Desktop y ve a Settings -> Connectors -> Add Connector -> Advanced.
  3. Introduce el nombre como Windows-MCP, luego pega una de las siguientes configuraciones.

Opción A: Instalar desde PyPI (Recomendado)

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

Opción B: Instalar desde el Código Fuente

{
  "command": "uv",
  "args": [
    "--directory",
    "<path to the windows-mcp directory>",
    "run",
    "windows-mcp",
    "serve"
  ]
}
  1. Haz clic en Save, luego reinicia Perplexity Desktop si es necesario.

Para obtener ayuda adicional sobre la integración con Claude Desktop, consulta el Soporte MCP de Perplexity. La documentación incluye consejos útiles para revisar registros y resolver problemas comunes.

Instalar en Gemini CLI
  1. Instala Gemini CLI.
npm install -g @google/gemini-cli
  1. Abre %USERPROFILE%/.gemini/settings.json.
  2. Añade la configuración windows-mcp y guárdala.
{
  "theme": "Default",
  ...
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Nota: Para ejecutar desde el código fuente, reemplaza el comando con uv y los argumentos con ["--directory", "<path>", "run", "windows-mcp", "serve"].

  1. Reinicia Gemini CLI.
Instalar en Qwen Code 1. Instala Qwen Code.
npm install -g @qwen-code/qwen-code@latest
  1. Abre %USERPROFILE%/.qwen/settings.json.
  2. Añade la configuración windows-mcp y guárdala.
{
  "mcpServers": {
    "windows-mcp": {
      "command": "uvx",
      "args": [
        "windows-mcp",
        "serve"
      ]
    }
  }
}

Nota: Para ejecutar desde el código fuente, reemplaza el comando con uv y los argumentos con ["--directory", "<path>", "run", "windows-mcp", "serve"].

  1. Reinicia Qwen Code.
Instalar en Codex CLI 1. Instala Codex CLI.
npm install -g @openai/codex
  1. Abre %USERPROFILE%/.codex/config.toml.
  2. Añade la configuración windows-mcp y guárdala.
[mcp_servers.windows-mcp]
command="uvx"
args=[
  "windows-mcp",
  "serve"
]

Nota: Para ejecutar desde el código fuente, reemplaza el comando con uv y los argumentos con ["--directory", "<path>", "run", "windows-mcp", "serve"].

  1. Reinicia Codex CLI.
Instalar en Autohand Code

Añade el servidor stdio publicado desde una terminal de Windows:

autohand mcp add windows-mcp uvx windows-mcp serve

Añade --scope project después de add para mantener la configuración del servidor en el proyecto actual. Consulta Autohand Code para obtener detalles actuales de instalación y CLI.

Instalar en Claude Code
  1. Instala Claude Code:
npm install -g @anthropic-ai/claude-code
  1. Configura el servidor:

Opción A: Instalar desde PyPI (Recomendado)

Usa uvx para ejecutar la última versión directamente desde PyPI.

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

Opción B: Instalar desde el Código Fuente

  1. Clona el repositorio:
git clone https://github.com/CursorTouch/Windows-MCP.git
cd Windows-MCP
  1. Ejecuta el siguiente comando en tu terminal:
claude mcp add --transport stdio windows-mcp -- uv --directory "<path>" run windows-mcp serve

Nota: Para que el servidor esté disponible en todos los proyectos, añade --scope user al comando.

  1. Vuelve a ejecutar Claude Code en la terminal. Disfruta 🥳

Nota: En Windows, si encuentras errores de "Conexión cerrada", usa la ruta completa a uvx.exe:

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

Para verificar que el servidor está registrado, ejecuta claude mcp list. Dentro de Claude Code, usa /mcp para comprobar el estado del servidor.

WSL (Subsistema de Windows para Linux)

Si ejecutas Claude Code desde WSL, el servidor MCP debe ejecutarse en el lado de Windows (necesita las API de Windows para la automatización de UI). Usa powershell.exe como comando para conectar WSL y Windows:

  1. Instala uv en Windows (desde una terminal de PowerShell):
irm https://astral.sh/uv/install.ps1 | iex
  1. Desde tu terminal WSL, registra el servidor:
claude mcp add windows-mcp --transport stdio -s user -- powershell.exe -Command "C:\Users\<user>\.local\bin\uvx.exe windows-mcp serve"

Reemplaza <user> con tu nombre de usuario de Windows. La bandera -s user hace que el servidor esté disponible en todos los proyectos.

  1. Reinicia Claude Code y verifica con /mcp.

🖥️ Ejecutar Windows-MCP

Windows-MCP se ejecuta directamente en tu máquina Windows y expone sus herramientas al 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

Se pueden establecer variables de entorno opcionales para personalizar el comportamiento — consulta Variables de Entorno a continuación.

Seguridad para Acceso Remoto

Para acceso a la red, habilita la autenticación y 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

Consulta 🔐 Seguridad y Control de Acceso para todas las opciones.

Opciones de Transporte

TransporteComandoCaso de Uso
stdio (predeterminado)serve --transport stdioConexión directa desde clientes MCP como Claude Desktop, Cursor, etc.
sseserve --transport sse --host HOST --port PORTAccesible por red mediante Server-Sent Events
streamable-httpserve --transport streamable-http --host HOST --port PORTAccesible por red mediante transmisión HTTP (recomendado para producción)

🔐 Seguridad y Control de Acceso

Autenticación

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

Requiere el encabezado Authorization: Bearer your_token en todas las solicitudes.

Lista de Permisos de IP

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

Restringe las conexiones a rangos CIDR especificados. Bloquea IPs privadas/de bucle local por defecto.

Orígenes CORS

Por defecto, no se emiten encabezados CORS. Los navegadores bloquean las solicitudes de origen cruzado mediante su propia Política de Mismo Origen, lo que significa que sitios web arbitrarios no pueden alcanzar el plano de control MCP incluso si el servidor está en localhost. La validación del encabezado de host (protección contra rebinding de DNS) también se aplica automáticamente según la dirección de enlace.

Si necesitas que un cliente MCP basado en navegador alcance el servidor, opta por una lista de permisos de orígenes explícita:

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

Solo los orígenes listados reciben encabezados Access-Control-Allow-Origin; todas las demás solicitudes de origen cruzado son rechazadas por el navegador. La variable de entorno equivalente es WINDOWS_MCP_CORS_ORIGINS.

Selección de Herramientas

Todas las herramientas están habilitadas por defecto. Usa --tools para permitir herramientas específicas, o --exclude-tools para bloquear algunas 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 usan OAuth (por ejemplo, Claude Desktop) en lugar de una clave 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

Configuración de Claude Desktop:

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

El servidor OAuth expone:

  • GET /.well-known/oauth-authorization-server — metadatos del servidor (RFC 8414)
  • GET /oauth/authorize — Código de Autorización + PKCE (S256 requerido)
  • POST /oauth/token — intercambio de tokens (secreto de cliente requerido)
  • POST /oauth/register — deshabilitado; los clientes deben estar preaprovisionados

El registro dinámico de clientes está deshabilitado. Las URI de redirección deben ser solo de bucle local http(s). La clave de autenticación y OAuth pueden coexistir — ambos se aceptan como tokens Bearer válidos.

Archivo de Configuración (~/.windows-mcp/config.toml)

En lugar de pasar banderas cada vez, almacena tu configuración en ~/.windows-mcp/config.toml. Las banderas CLI siempre anulan los valores del archivo de configuración.

Orden de búsqueda:

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

stdio — solo local, no se necesita seguridad:

[server]
transport = "stdio"

SSE — acceso de red con autenticación y restricción 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 — con autenticación, TLS y exclusiones de herramientas:

[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 los archivos de certificado y clave en el mismo directorio:

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

Genere un certificado autofirmado directamente en ese directorio:

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

Control de escritorio

El control de escritorio está habilitado por defecto con la política relajada: las acciones directas de escritorio están restringidas, mientras que las herramientas en segundo plano pueden ejecutarse mientras usas la computadora. Configúralo en ~/.windows-mcp/config.toml (o desactívalo por completo con enabled = false):

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

O anúlalo para un solo lanzamiento del servidor MCP:

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

En los argumentos de lanzamiento de tu cliente MCP, coloca estas opciones después de serve. La prioridad es CLI > variable de entorno > TOML > predeterminado. --control puede anular explícitamente enabled = false. El tiempo de espera acepta segundos positivos finitos (incluidas fracciones); cero no desactiva el control. El valor predeterminado sigue siendo 10 segundos.

Reinicia el proceso del servidor Windows-MCP después de cambiar estos ajustes. No hay recarga en caliente ni herramienta de configuración de IA. ControlStatus informa los valores efectivos de enabled, policy y idle_timeout_seconds, con el estado disabled cuando el control está desactivado.

Desactivar el control apaga la restricción de propiedad, la protección de entrada física, el monitoreo de toma de control y el indicador de control. Las herramientas permanecen disponibles y serializadas, con la limpieza de teclas/botones inyectados conservada. Las acciones de IA en el escritorio pueden entonces interferir con tu propia entrada; los scripts de PowerShell también pueden operar la interfaz de usuario. El ajuste separado de flash de captura no cambia. Cuando el control está habilitado, el temporizador de inactividad se reinicia con la entrada física, por lo que acortarlo no permite llamadas restringidas mientras sigues usando la computadora.

Durante el control de IA, los pequeños movimientos del mouse permanecen bloqueados sin pausar la herramienta actual. La toma de control del mouse suma la longitud de cada movimiento relativo de entrada sin procesar, incluido el movimiento de ida y vuelta, hasta alcanzar 500 unidades de dispositivo por defecto. Una pausa de 0,5 segundos sin movimiento inicia un nuevo segmento; cambiar de dispositivo o iniciar un nuevo período de control también borra el total. Establece control.mouse_takeover_units en TOML para cambiar el umbral (40–2000) y luego reinicia el servidor. Estas son unidades de dispositivo, no píxeles de pantalla. Los dispositivos que no proporcionan entrada sin procesar relativa identificable, incluidos algunos paneles táctiles y dispositivos de entrada remotos, deben usar Ctrl+Alt+Shift+Backspace para tomar el control. El ajuste heredado mouse_takeover_pixels sigue siendo aceptado por compatibilidad, pero ya no afecta la toma de control.

Políticas de restricción de escritorio

PolíticaOperaciones que requieren propiedad del escritorio
relaxed (A, predeterminada)Entrada directa: Click, Type, Scroll, Move, Shortcut, MultiSelect, MultiEdit; App switch y resize.
balanced (B)Todo en A, más PowerShell, Notification, App launch/launch_executable, Process kill y Clipboard set.
strict (C)Todas las herramientas excepto ControlStatus, que coincide con el comportamiento de restricción anterior.

FileSystem, Registry, Snapshot, Screenshot, Scrape, Wait, WaitFor, DisplayInventory, Process list y Clipboard get omiten la propiedad en A y B. Esta clasificación se refiere a la interferencia del escritorio, no a permisos o seguridad de datos. PowerShell aún puede operar la interfaz de usuario, y las operaciones de archivos/registro pueden tener otros efectos secundarios.

Las llamadas sin restricción no adquieren ni extienden la concesión del escritorio, no activan su indicador ni esperan su bloqueo de herramienta. Las restricciones de recursos existentes aún se aplican: las operaciones de automatización de interfaz de usuario comparten un trabajador dedicado, por lo que un WaitFor prolongado puede retrasar otro trabajo de UIA. El flash de captura separado no cambia. --no-control conserva su serialización existente de todas las herramientas y anula las comprobaciones de propiedad de la política.

En modo relajado, los agentes deben preferir el trabajo en segundo plano y coordinar la interferencia conocida del escritorio con el usuario. Obtén permiso antes de interrumpir a sabiendas el proceso de un usuario o tomar el foco, reutilizando la autorización existente. Estas son pautas de uso de herramientas, no aprobación impuesta por el servidor ni seguimiento de propiedad de procesos. El portapapeles continúa usando el portapapeles real de Windows; no se introduce un portapapeles virtual.

Para contribuyentes: las categorías de herramientas y las pocas excepciones específicas de modo viven en src/windows_mcp/tools/control_policy.py. Actualiza esa tabla al agregar herramientas o modos; las pruebas de detección de cobertura de registro detectan omisiones. Las extensiones desconocidas usan conservadoramente la restricción. Mantén las decisiones de política fuera de las implementaciones de herramientas individuales.

Helper auth

Genera una clave de autenticación y guarda una configuración funcional en ~/.windows-mcp/config.toml:

windows-mcp auth

Genera autenticación más un certificado TLS autofirmado:

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

Este comando escribe la clave de autenticación en el archivo de configuración, puede generar cert.pem y key.pem, e imprime un ejemplo de configuración de cliente MCP para el transporte seleccionado.

Protección SSRF

La herramienta Scrape bloquea: IP privadas, loopback, link-local, credenciales en URL, esquemas no HTTP.


⚙️ Variables de entorno

Todas las variables son opcionales a menos que se indique. Configúralas mediante la clave env en claude_desktop_config.json (o la configuración equivalente de tu cliente MCP).

Captura de pantalla y Snapshot

VariablePredeterminadoDescripción
WINDOWS_MCP_SCREENSHOT_SCALE1.0Factor de escala aplicado a las capturas antes de codificarlas. Acepta un flotante en el rango 0.1–1.0. Útil en pantallas de alta resolución (1440p, 4K) donde el valor predeterminado produce imágenes que superan el límite de resultado de herramienta de 1 MB de Claude Desktop. Establécelo en 0.5 para reducir ambas dimensiones a la mitad (un cuarto del tamaño del archivo).
WINDOWS_MCP_SCREENSHOT_BACKENDautoBackend de captura de pantalla. Valores aceptados: auto (prueba dxcam → mss → pillow en orden), dxcam, mss, pillow. Usa mss o pillow si dxcam no está disponible o causa problemas en tu GPU.
WINDOWS_MCP_PROFILE_SNAPSHOT(deshabilitado)Establécelo en 1, true, yes o on para emitir registros de tiempo por etapa para llamadas de Screenshot/Snapshot. Útil para diagnosticar capturas lentas.
WINDOWS_MCP_DISABLE_FLASH(deshabilitado)Establécelo en 1, true, yes o on para suprimir el borde brillante naranja-rojizo que resalta brevemente el área capturada después de cada captura. El flash se renderiza en una ventana transparente siempre encima después de la captura, por lo que nunca aparece en la imagen capturada.

Exclusión de procesos del recorrido de automatización de interfaz de usuario

VariablePredeterminadoDescripción
WINDOWS_MCP_EXCLUDE_PROCESSES(ninguno)Nombres base de procesos separados por comas cuyas ventanas se excluyen del recorrido del árbol de automatización de interfaz de usuario, p. ej., Code.exe,Cursor.exe. La coincidencia no distingue mayúsculas y es exacta: sin comodines ni expresiones regulares. Sin establecer o vacío conserva el comportamiento actual.

Algunas aplicaciones exponen árboles de accesibilidad que pueden volverse lentos o no responder durante el recorrido de automatización de interfaz de usuario. Snapshot y WaitFor pueden recorrer la ventana activa y otros identificadores de nivel superior seleccionados para la captura de árbol, por lo que un proveedor de accesibilidad patológico puede detener la captura.

Establece:

WINDOWS_MCP_EXCLUDE_PROCESSES=Code.exe,Cursor.exe

Los nombres de procesos son nombres base de ejecutables separados por comas. Se comparan sin distinguir mayúsculas después de eliminar el espacio en blanco circundante; las entradas vacías se ignoran y los duplicados son inofensivos.

Una ventana se excluye antes de que se realice cualquier llamada de automatización de interfaz de usuario contra ella, por lo que su proveedor de accesibilidad nunca se ingresa. Las aplicaciones excluidas aún pueden aparecer en la lista de ventanas, pero Windows-MCP no recorrerá sus árboles de accesibilidad y no se informan como capturas fallidas. Si no se puede resolver el proceso propietario de una ventana, la ventana se recorre como de costumbre.

Este es un mecanismo de exclusión: una mitigación, no una solución completa para cada forma de #383. Solo omite los procesos que nombres; una ventana patológica que no hayas listado aún puede detener una captura.

Configuración de control de escritorio

Si se pierde un evento de liberación de tecla/botón físico, el monitor de entrada verifica las retenciones residuales después de la espera de inactividad configurada. Cinco muestras consecutivas de todo liberado, con al menos 100 ms de diferencia, borran los registros obsoletos. Nueva entrada física o una tecla/botón informado como presionado reinicia la confirmación. Esto es de mejor esfuerzo: un resultado de GetAsyncKeyState cero cuenta como liberado incluso cuando Windows no puede proporcionar el estado; el muestreo repetido filtra lecturas transitorias pero no puede distinguir una falla persistente de consulta.

VariablePredeterminadoDescripción
WINDOWS_MCP_CONTROLtrueHabilita la coordinación de control de escritorio. Establécelo en false para deshabilitar. Equivalente a --control/--no-control; se requiere reinicio.
WINDOWS_MCP_CONTROL_POLICYrelaxedPolítica de restricción: relaxed, balanced o strict. Equivalente a --control-policy; se requiere reinicio.
WINDOWS_MCP_CONTROL_IDLE_TIMEOUT10.0Espera de inactividad positiva finita en segundos. Equivalente a --control-idle-timeout; se requiere reinicio.

Seguridad

VariablePredeterminadoDescripción
WINDOWS_MCP_AUTH_KEY(ninguno)Token Bearer requerido en todas las solicitudes HTTP. Alternativa al indicador CLI --auth-key.
WINDOWS_MCP_IP_ALLOWLIST(ninguno)Lista separada por comas de IP de cliente permitidas o rangos CIDR (p. ej., 203.0.113.0/24,198.51.100.5). Alternativa al indicador CLI --ip-allowlist.
WINDOWS_MCP_CORS_ORIGINS(ninguno)Lista separada por comas de orígenes permitidos para realizar solicitudes de navegador entre orígenes (p. ej., https://my-client.example.com). No se emiten encabezados CORS cuando no está establecido. Alternativa al indicador CLI --cors-origins.
WINDOWS_MCP_TOOLS(todos habilitados)Lista explícita separada por comas de herramientas para habilitar (p. ej., Screenshot,Click,Snapshot). Alternativa al indicador CLI --tools.
WINDOWS_MCP_EXCLUDE_TOOLS(ninguno)Lista separada por comas de herramientas para deshabilitar (p. ej., PowerShell,Registry). Alternativa al indicador CLI --exclude-tools.
WINDOWS_MCP_SSL_CERTFILE(ninguno)Ruta al archivo de certificado TLS (.pem) para HTTPS. Debe proporcionarse con WINDOWS_MCP_SSL_KEYFILE.
WINDOWS_MCP_SSL_KEYFILE(ninguno)Ruta al archivo de clave privada TLS (.pem) para HTTPS. Debe proporcionarse con WINDOWS_MCP_SSL_CERTFILE.
WINDOWS_MCP_OAUTH_CLIENT_ID(ninguno)ID de cliente OAuth para transportes HTTP. Debe proporcionarse con WINDOWS_MCP_OAUTH_CLIENT_SECRET.
WINDOWS_MCP_OAUTH_CLIENT_SECRET(ninguno)Secreto de cliente OAuth para transportes HTTP. Debe proporcionarse con WINDOWS_MCP_OAUTH_CLIENT_ID.
WINDOWS_MCP_STATELESS_HTTPfalseEstablécelo en 1, true, yes o on para ejecutar streamable-http sin estado de conexión Mcp-Session-Id. Útil para reconexiones después de reinicios y para implementaciones escaladas horizontalmente.

MseeP.ai Security Assessment Badge

Telemetría

VariablePredeterminadoDescripción
ANONYMIZED_TELEMETRYtrueEstablécelo en false para deshabilitar la telemetría de uso anónima. Nunca se recopilan datos personales, argumentos de herramientas ni salidas, independientemente de esta configuración.
POSTHOG_API_KEYPredeterminado del proyectoAnula la clave de escritura del proyecto PostHog utilizada para la telemetría anónima. Establécelo en una cadena vacía para omitir la inicialización del cliente PostHog.
POSTHOG_HOSThttps://us.i.posthog.comAnula el host de PostHog para la telemetría anónima, como para una implementación de PostHog autoalojada.

Depuración

VariablePredeterminadoDescripción
WINDOWS_MCP_DEBUGfalseEstablécelo en 1, true, yes o on para habilitar el modo de depuración, que establece el nivel de registro en DEBUG para una salida detallada. También disponible como indicador CLI --debug.

WatchDog

VariableValor por defectoDescripción
WINDOWS_MCP_WATCHDOGfalseEstablézcalo en on, 1, true, yes o enabled (sin distinción de mayúsculas y minúsculas) para ejecutar el watchdog de enfoque de UIA. Está desactivado por defecto porque su único efecto restante es el registro de depuración de los cambios de enfoque, mientras que cuesta un hilo en segundo plano y una suscripción de eventos UIA de larga duración que puede bloquear el servidor en entornos UIA inestables después de un largo tiempo de actividad (por ejemplo, a través de una suspensión/reanudación o un cambio de sesión). El árbol de accesibilidad se construye bajo demanda para cada llamada de herramienta de cualquier manera, por lo que el comportamiento de la herramienta no se ve afectado.

Ejemplo claude_desktop_config.json:

Local (sin seguridad):

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

Remoto (con autenticación + lista de permitidos 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"
      }
    }
  }
}

🔨Herramientas MCP

El cliente MCP puede acceder a las siguientes herramientas para interactuar con Windows:

  • Click: Hacer clic en la pantalla en las coordenadas dadas.
  • Type: Escribir texto en un elemento (opcionalmente borra el texto existente).
  • Scroll: Desplazarse vertical u horizontalmente en la ventana o regiones específicas.
  • Move: Mover el puntero del mouse o arrastrar (establezca drag=True) a las coordenadas. Para un arrastre determinista, establezca from_loc=[x, y] con drag=True para presionar en un punto de inicio explícito y soltar en loc en una sola llamada de herramienta. El duration opcional agrega movimiento intermedio acotado.
  • Shortcut: Presionar atajos de teclado (Ctrl+c, Alt+Tab, etc.).
  • Wait: Pausar durante una duración definida.
  • WaitFor: Esperar hasta que aparezca texto, una ventana activa, un elemento o un elemento enfocado mediante el sondeo del estado de la interfaz de usuario dentro de una sola llamada de herramienta.
  • ControlStatus: Leer el propietario del control del escritorio y la espera restante de inactividad del usuario. Permanece disponible cuando la toma de control del usuario bloquea nuevas llamadas de herramienta. Durante el control de IA, un borde visible y un brillo del cursor indican propiedad; mover el mouse físico sustancialmente o presionar Ctrl+Alt+Shift+Backspace devuelve el control al usuario hasta 10 segundos de inactividad. Durante la captura de pantalla, el indicador se oculta temporalmente y la entrada física se libera; cualquier entrada física durante este intervalo adelanta el control de IA, aunque ControlStatus puede informar brevemente ai hasta que se procese ese evento. La entrada de escritorio paso a paso se detiene en su siguiente punto de control, pero un comando externo ya en ejecución (por ejemplo, PowerShell o un lanzamiento de App) puede continuar después de la toma de control; esta puerta de control no cancela procesos ni deshace efectos secundarios completados. En una falla de gancho detectada, las teclas y botones del mouse inyectados se liberan de forma asíncrona, por lo que la entrada física puede superponerse brevemente con una tecla o botón de IA aún sostenido. Windows también puede eliminar silenciosamente un gancho de bajo nivel sin notificar a este proceso; el reemplazo periódico de ganchos reduce pero no elimina esa ventana no detectada. La toma de control del usuario es, por lo tanto, un esfuerzo de mejor esfuerzo, no un límite de seguridad ni una garantía de control exclusivo. Los clientes MCP sin sesión 2026-07-28 no pueden recibir registros de estado de control no solicitados; deben consultar ControlStatus cuando necesiten el propietario actual.
  • DisplayInventory: Leer el diseño de la pantalla, las áreas de trabajo, el DPI efectivo y los metadatos de escala.
  • Screenshot: Captura de escritorio rápida de pantalla primero con posición del cursor, ventanas activas/abiertas y una imagen. Omite la extracción del árbol de interfaz de usuario por velocidad y debe ser la primera llamada predeterminada cuando principalmente necesita contexto visual. Admite display=[0] o display=[0,1] usando índices de pantalla activos de Windows basados en cero, y region=[left, top, right, bottom] (coordenadas de píxeles del escritorio virtual) para capturar solo ese rectángulo en lugar de toda la pantalla: más barato en tokens cuando ya sabe qué área importa. region tiene prioridad sobre display cuando ambos se proporcionan; una región no válida o fuera de límites genera un error. Después de la captura, se dibuja un borde brillante de color naranja-rojo breve dentro del área capturada como confirmación visual (establezca WINDOWS_MCP_DISABLE_FLASH=1 para deshabilitar).
  • Snapshot: Captura completa del estado del escritorio para flujos de trabajo que necesitan identificadores de elementos interactivos, regiones desplazables o extracción de navegador use_dom=True. Admite use_vision=True para incluir capturas de pantalla, display=[0] o display=[0,1] usando índices de pantalla activos de Windows basados en cero, y region=[left, top, right, bottom] (coordenadas de píxeles del escritorio virtual) para inspeccionar solo ese rectángulo en lugar de toda la pantalla; region tiene prioridad sobre display cuando ambos se proporcionan, y una región no válida o fuera de límites genera un error.
  • App: Iniciar una aplicación por nombre del menú Inicio o estrictamente por ruta de ejecutable con argv separado y cwd opcional; redimensionar, mover y cambiar entre ventanas.
  • PowerShell: Para ejecutar comandos de PowerShell.
  • FileSystem: Leer, escribir, copiar, mover, eliminar, listar, buscar e inspeccionar archivos y directorios.
  • Scrape: Para extraer toda la página web en busca de información.
  • MultiSelect: Seleccionar múltiples elementos (archivos, carpetas, casillas de verificación) con la tecla Ctrl opcional. Utiliza resolución de etiqueta a coordenadas en masa cuando se proporcionan etiquetas.
  • MultiEdit: Ingresar texto en múltiples campos de entrada en coordenadas especificadas. Utiliza resolución de etiqueta a coordenadas en masa cuando se proporcionan etiquetas.
  • Clipboard: Leer o establecer el contenido del portapapeles de Windows.
  • Process: Listar procesos en ejecución o terminarlos por PID o nombre.
  • Notification: Enviar una notificación de brindis de Windows con un título y mensaje.
  • Registry: Leer, escribir, eliminar o listar valores y claves del Registro de Windows.

🤝 Conéctese con nosotros

Manténgase actualizado y únase a nuestra comunidad:

  • 📢 Síganos en X para las últimas noticias y actualizaciones

  • 💬 Únase a nuestra Comunidad de Discord

Historial de estrellas

Star History Chart

👥 Colaboradores

¡Gracias a todas las personas increíbles que han contribuido a Windows-MCP! 🎉

Apreciamos cada contribución, ya sea código, documentación, informes de errores o sugerencias de funciones. ¿Quiere contribuir? ¡Consulte nuestras Pautas de contribución!

🔒 Seguridad

Importante: Windows-MCP opera con acceso completo al sistema y puede realizar operaciones irreversibles. Revise nuestras pautas de seguridad integrales antes de la implementación.

Para información de seguridad detallada, incluyendo:

  • Evaluaciones de riesgo específicas de herramientas
  • Recomendaciones de implementación
  • Procedimientos de informes de vulnerabilidades
  • Pautas de cumplimiento y auditoría

Por favor, lea nuestra Política de seguridad.

📊 Telemetría

Windows-MCP recopila datos de uso para ayudar a mejorar el servidor MCP. No se rastrean datos personales, argumentos de herramientas ni salidas.

Para deshabilitar la telemetría, establezca ANONYMIZED_TELEMETRY a false en su configuración del cliente MCP:

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

Consulte la sección Variables de entorno para la lista completa de opciones configurables.

Para información detallada sobre qué datos se recopilan y cómo se manejan, consulte la sección Telemetría y privacidad de datos en nuestra Política de seguridad.

📝 Limitaciones

  • Seleccionar secciones específicas del texto en un párrafo, ya que el MCP depende del árbol de accesibilidad. (⌛ Trabajando en ello.)
  • Type-Tool está destinado a escribir texto, no a programar en IDE porque escribe el programa como un todo en un archivo. (⌛ Trabajando en ello.)
  • Este servidor MCP no se puede usar para jugar videojuegos 🎮.

🪪 Licencia

Este proyecto está licenciado bajo la Licencia MIT: consulte el archivo LICENCIA para más detalles.

🙏 Agradecimientos

Windows-MCP utiliza varios proyectos de código abierto excelentes que impulsan sus funciones de automatización de Windows:

Muchas gracias a los mantenedores y colaboradores de estas bibliotecas por su excelente trabajo y espíritu de código abierto.

🤝Contribuciones

¡Las contribuciones son bienvenidas! Consulte CONTRIBUIR para instrucciones de configuración y pautas de desarrollo.

Hecho con ❤️ por CursorTouch

Cita

@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}
}