desktop-control-mcp
desktop-control-mcp

Сервер автоматизации рабочего стола Windows, который предоставляет управление мышью, клавиатурой, захват экрана и определение элементов интерфейса на основе ИИ через два интерфейса:
MCP-сервер (
mcp_server.py) — транспорт stdio, предназначен для использования с Claude Code, Claude Desktop и другими MCP-клиентамиHTTP-сервер (
server.py+app.py) — Flask API наhttp://localhost:7845, запускаемый из значка в системном трее
Оба интерфейса используют одни и те же базовые модули controller.py (автоматизация Windows) и ui_parser.py (модели компьютерного зрения), поэтому возможности идентичны.
Ключевые возможности
Клики на основе ИИ-зрения — элементы интерфейса определяются с помощью Microsoft OmniParser v2 (детектор значков YOLO + подпись Florence-2 + EasyOCR), поэтому вы можете нацеливаться на кнопки и поля по их назначению, а не угадывать пиксельные координаты по скриншоту.
Учет DPI — работает как
PROCESS_PER_MONITOR_DPI_AWARE, поэтому координаты всегда соответствуют физическим пикселям независимо от масштабирования дисплея Windows.Курсор на скриншотах — реальный курсор Windows встраивается в каждый скриншот через Win32 GDI API, чтобы ИИ-клиенты могли видеть, где находится мышь.
Три режима скриншотов — одиночный сжатый JPEG, аннотированное представление с обнаруженными элементами и серийная съемка с распределением по времени (для наблюдения за анимациями или состояниями загрузки).
Умная отправка клавиш — отдельные инструменты для обычного текста, отдельных клавиш и комбинаций с модификаторами, чтобы
"ctrl+c"никогда не вводился случайно как текст.
Related MCP server: desktop-automation-mcp
Установка
Требуется Windows и Python 3.10+.
git clone https://github.com/ahmetdenizyilmaz/desktop-control-mcp.git
cd desktop-control-mcp
pip install -r requirements.txtПри первом запуске веса модели OmniParser v2 (~1 ГБ) загружаются с Hugging Face в локальный кэш. GPU используется автоматически, если установлен PyTorch с поддержкой CUDA; в противном случае используется CPU.
Запуск
Как MCP-сервер (stdio)
Добавьте запись в конфигурацию вашего MCP-клиента (например, Claude Desktop / Claude Code):
{
"mcpServers": {
"desktop-control": {
"command": "python",
"args": ["C:\\path\\to\\desktop-control-mcp\\mcp_server.py"]
}
}
}Сервер запускается немедленно; модели загружаются в фоновом потоке, поэтому первый вызов detect_ui_elements ожидает их загрузки, а остальные инструменты доступны сразу.
Как HTTP-сервер со значком в трее
python app.pyПоявляется значок в трее с пунктами Start / Stop / Quit. Flask API прослушивает http://localhost:7845. Подробности об эндпоинтах см. в API_DOCS.md.
MCP-инструменты
Информация об экране
Инструмент | Описание |
| Разрешение основного монитора. Вызовите один раз, чтобы узнать систему координат. |
| Заголовок, позиция и размер текущего активного окна. |
Скриншоты
Инструмент | Описание |
| Сжатый JPEG основного монитора. Только для наблюдения — не выводите координаты из него. |
| Запускает OmniParser + EasyOCR, возвращает аннотированное изображение и таблицу |
| Захватывает N кадров, равномерно распределенных по заданной длительности. Полезно для анимаций, индикаторов загрузки или интерфейсов, чувствительных к времени. |
Мышь
Инструмент | Описание |
| Одиночный клик. Всегда используйте координаты из |
| Двойной клик. |
| Переместить курсор без клика. |
| Перетаскивание с зажатой кнопкой. |
| Прокрутка колесиком в позиции ( |
Клавиатура
Инструмент | Когда использовать |
| Ввод обычного текста (имена файлов, поисковые запросы, URL, код). Никогда не интерпретирует |
| Одна именованная клавиша ( |
| Только комбинации модификатор+клавиша ( |
Обязательный рабочий процесс кликов
Координаты нестабильны при изменении экрана — каждое открытие меню, появление диалога или прокрутка сдвигают элементы. Сервер требует соблюдения этого цикла:
ОПРЕДЕЛИТЕ —
detect_ui_elementsвозвращает текущую таблицу элементов.НАЙДИТЕ — сопоставьте вашу цель в столбце
Label.КЛИКНИТЕ —
click_mouse(x, y)с точными координатамиCenterиз таблицы.ПРОВЕРЬТЕ —
take_screenshot, чтобы убедиться, что клик сработал.ВОССТАНОВИТЕ — если клик не попал, повторите определение (экран мог измениться) и попробуйте снова.
Никогда не угадывайте координаты по сырому скриншоту. Таблица элементов из detect_ui_elements — источник истины.
Пример таблицы элементов
ID Type Conf Center Label
1 text 0.98 ( 499, 55) File Edit View
2 icon 0.91 ( 674, 200) Search button
3 icon 0.87 (1200, 400) CloseЧтобы нажать кнопку поиска: click_mouse(x=674, y=200).
HTTP API
При запуске как app.py Flask-сервер на порту 7845 повторяет MCP-инструменты:
Эндпоинт | Назначение |
| Проверка доступности. |
| Возвращает base64 PNG экрана. |
|
|
|
|
|
|
| Одна команда в скобках, например |
| Список команд в скобках, выполняемых последовательно с необязательной задержкой |
Полные схемы запросов и ответов приведены в API_DOCS.md.
Структура файлов
mcp_server.py FastMCP server — tool definitions and lifespan
controller.py Win32 / pyautogui / mss core — screenshots, input, window info
ui_parser.py OmniParser v2 loading + UI detection + image annotation
screenshot_manager.py Disk-side screenshot cache (cleanup, naming, burst dirs)
overlay.py On-screen overlay utilities
lock_manager.py Concurrency lock for shared resources
server.py Flask HTTP API
app.py Tray-icon launcher for the Flask server
templates/index.html Web UI for the Flask server
requirements.txt Python dependencies
API_DOCS.md HTTP endpoint reference
run_agents.bat Convenience launcher for Claude Code in this folderПримечания по платформе
Только Windows. Композиция курсора, учет DPI и код активного окна используют Win32 API напрямую.
Только основной монитор. Все координаты находятся в пиксельном пространстве основного монитора.
Первое определение медленное. Загрузка модели OmniParser + инициализация EasyOCR могут занять 30–60 секунд при первом вызове. Последующие определения быстрые (доли секунды на GPU, несколько секунд на CPU).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that provides computer control capabilities including mouse movements, keyboard actions, screenshot capture with OCR, and window management through a unified API.158MIT
- AlicenseNot gradedqualityCmaintenanceWindows desktop automation MCP server supporting mouse, keyboard, screenshot, and image recognition, with native CJK text input via clipboard.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for driving any Windows app through five layers including OCR, UI Automation, and direct OS operations. Enables AI agents to control Windows desktop and OS cursor-free, even on background/locked windows.1512MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Windows desktop automation, enabling agents to control mouse, keyboard, and UI elements via 22 tools, with OCR, screenshots, macro recording, and autonomous mission execution.MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Official MCP server for OmniDimension. Drive voice agents, dispatch calls, and run bulk campaigns.
The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/emadaljumah-camel/desktop-control-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server