вернуться в раздел "Научные труды"
Источник: Дворник, Н. Н. Разработка MCP-сервера для автоматизации взаимодействия с графическим интерфейсом Windows / Н. Н. Дворник, О. Ю. Чередникова // Современные информационные технологии в образовании и научных исследованиях (СИТОНИ-2025) : Сборник трудов Всероссийской научно-технической конференции, Донецк, ноябрь 2025 года. – Донецк: Донецкий национальный технический университет .

УДК 004.89

Разработка MCP-сервера для автоматизации взаимодействия с графическим интерфейсом Windows

Дворник Н.Н., Чередникова О.Ю.

Донецкий национальный технический университет

кафедра компьютерной инженерии

E-mail: n.n.dvornik@yandex.ru

Аннотация

Дворник Н.Н., Чередникова О.Ю. Разработка MCP-сервера для автоматизации взаимодействия с графическим интерфейсом Windows. Разработан MCP-сервер для интеграции больших языковых моделей с Windows. Система реализует распознавание элементов графического интерфейса через анализ дерева доступности без компьютерного зрения и обеспечивает автоматизированное управление через программную имитацию пользовательского ввода.

Ключевые слова: автоматизация, MCP-сервер, дерево доступности, языковые модели, UI Automation, Windows.

Введение

Современные большие языковые модели (LLM), ставшие широко известными благодаря таким системам, как YandexGPT, ChatGPT, Gemini и Claude, демонстрируют впечатляющие возможности в решении интеллектуальных задач. Однако их взаимодействие с операционными системами на уровне графического интерфейса (GUI) остается нетривиальной проблемой. Существующие решения для автоматизации GUI преимущественно ориентированы на веб-браузеры или требуют применения методов компьютерного зрения, что увеличивает вычислительную сложность и снижает детерминированность системы.

Model Context Protocol (MCP) представляет собой открытый стандарт для подключения ИИ-приложений к внешним системам [1]. Протокол определяет способ взаимодействия клиентов (ИИ-приложений) с серверами, предоставляющими инструменты, ресурсы и контекст для языковых моделей. Архитектура MCP состоит из трёх основных компонентов: Host (хост-приложение с LLM), Client (клиент протокола) и Server (сервер, предоставляющий возможности).

Целью данной работы является разработка MCP-сервера, обеспечивающего программное распознавание и управление элементами графического интерфейса Windows без применения методов компьютерного зрения.

1 Архитектура системы

Разработанная система построена на принципах Clean Architecture – подхода к структурированию приложений, обеспечивающего разделение ответственности, масштабируемость и тестируемость [2]. Архитектура разделена на четыре основных слоя с соблюдением правила зависимостей, согласно которому внешние слои могут зависеть от внутренних, но не наоборот.

Уровень API (MCP Router) представляет собой точку входа для взаимодействия с языковыми моделями. Этот слой реализован на базе фреймворка FastMCP и предоставляет набор из 13 инструментов: State-Tool для захвата состояния интерфейса, Click-Tool и Type-Tool для имитации пользовательского ввода, Scroll-Tool для навигации, Launch-Tool для запуска приложений, Shell-Tool для выполнения команд PowerShell, а также инструменты для работы с буфером обмена, горячими клавишами и перетаскиванием элементов. Каждый инструмент определяется с помощью декоратора @mcp.tool и автоматически регистрируется в системе.

Уровень сервисов (Service Layer) содержит бизнес-логику системы и включает три основных компонента: DesktopService для управления рабочим столом и выполнения действий, TreeService для анализа дерева доступности и AppService для управления приложениями. Класс DesktopService выполняет роль оркестратора, координируя работу остальных компонентов и обеспечивая единую точку доступа к функциональности системы. TreeService реализует механизм рекурсивного обхода дерева доступности и классификации элементов интерфейса.

Уровень инструментов (Tools Layer) представляет собой набор независимых модулей, каждый из которых реализует отдельное действие: click.py для кликов мыши, type.py для ввода текста, state.py для захвата состояния системы. Такая модульная организация позволяет легко добавлять новые инструменты без изменения ядра системы, следуя принципу открытости/закрытости.

Инфраструктурный уровень (Infrastructure Layer) обеспечивает интеграцию с внешними библиотеками и Windows API через адаптеры: PyAutoGUIAdapter для выполнения физических действий (клики, ввод текста), UIAutomationAdapter для программного доступа к дереву элементов. Этот слой изолирует систему от изменений в сторонних библиотеках, обеспечивая стабильность и возможность замены реализации без влияния на верхние слои.

Взаимодействие между слоями осуществляется через чётко определённые интерфейсы, что обеспечивает слабую связанность компонентов и упрощает тестирование. Зависимости направлены от внешних слоёв к внутренним, что позволяет изменять реализацию инфраструктурного уровня без модификации бизнес-логики. Общая архитектура системы представлена на рисунке 1.

Слоистая архитектура MCP-сервера

Рисунок 1 – Слоистая архитектура MCP-сервера

2 Механизм распознавания элементов интерфейса

Система использует программный анализ дерева доступности (UI Automation) – иерархической структуры, представляющей все элементы графического интерфейса Windows. Дерево UI Automation является частью Microsoft UI Automation API, обеспечивающего программный доступ к элементам управления для целей автоматизации и обеспечения доступности [3].

Процесс распознавания начинается с получения корневого элемента через функцию GetRootControl() библиотеки uiautomation. Корневой элемент соответствует рабочему столу, его дочерние элементы представляют окна приложений, которые, в свою очередь, содержат элементы управления (кнопки, текстовые поля, меню). Затем выполняется рекурсивный обход дерева с применением функции tree_traversal, которая для каждого узла проверяет его видимость, доступность и принадлежность к предопределённым категориям элементов.

Классификация элементов основана на свойстве ControlTypeName, значение которого сверяется с заранее определёнными наборами типов в модуле конфигурации. Интерактивные элементы определяются на основе принадлежности их типа к множеству INTERACTIVE_CONTROL_TYPE_NAMES, включающему 17 типов управления: ButtonControl (кнопки), EditControl (текстовые поля), CheckBoxControl (флажки), ListItemControl (элементы списков), MenuItemControl (пункты меню), ComboBoxControl (выпадающие списки), HyperlinkControl (ссылки), TabItemControl (вкладки), TreeItemControl (элементы дерева), ScrollBarControl (полосы прокрутки) и другие.

Алгоритм проверки видимости учитывает размер элемента, свойство IsOffscreen и расположение в границах экрана. Результат представляется в виде структурированной таблицы с метками элементов, типами, именами и координатами. Таблица передаётся языковой модели в текстовом виде, опционально дополняется аннотированным скриншотом.

3 Управление элементами интерфейса

После распознавания элементов система обеспечивает их программное управление через модуль физических действий, построенный на базе библиотеки PyAutoGUI. Этот модуль реализует низкоуровневые операции ввода-вывода, имитирующие действия пользователя на уровне операционной системы.

Механизм кликов поддерживает три типа кнопок мыши (левая, правая, средняя) и различные режимы нажатия (одиночный, двойной клик). Механизм ввода текста реализует два режима работы: с предварительной очисткой поля или посимвольный ввод через функцию typewrite(). Для Unicode-символов используется альтернативный режим через буфер обмена.

Механизм прокрутки поддерживает вертикальную и горизонтальную навигацию через интерфейс ScrollPattern библиотеки UIAutomation или эмуляцию клавиш Page Up/Page Down для элементов без поддержки ScrollPattern. Механизм горячих клавиш обрабатывает сочетания модификаторов (Ctrl, Alt, Shift, Win) с обычными клавишами, поддерживая как системные комбинации (Alt+Tab, Win+D), так и специфичные для приложений сочетания.

Механизм управления приложениями включает функции запуска через поиск в меню "Пуск" с нечётким сопоставлением названий (библиотека fuzzywuzzy), переключения между окнами через метод SetFocus() Windows API и изменения размера через методы Maximize(), Minimize() и MoveWindow(). Система обеспечивает среднее время отклика от 0,7 до 2,5 секунд между действиями. Для повышения надёжности все операции снабжены механизмом обработки исключений.

4 Результаты работы

Разработанный MCP-сервер успешно интегрирован с несколькими клиентскими приложениями: Claude Desktop (Anthropic), Perplexity Desktop, Gemini CLI (Google) и Qwen Code. Система обеспечивает корректное распознавание и управление элементами интерфейса в различных приложениях Windows: проводник файлов, Блокнот, браузеры (Microsoft Edge, Google Chrome), офисные приложения.

На рисунке 2 представлен результат работы механизма распознавания на примере приложения «Калькулятор».

Аннотированный скриншот интерфейса Калькулятора

Рисунок 2 – Аннотированный скриншот интерфейса Калькулятора

Система идентифицировала 52 интерактивных элемента: цифровые кнопки, операторы, тригонометрические и научные функции, кнопки памяти. Каждый элемент выделен цветной рамкой с числовой меткой для однозначной идентификации при передаче данных языковой модели. На рисунке 3 показана работа системы с иерархическим интерфейсом проводника файлов.

Аннотированный скриншот интерфейса Проводника

Рисунок 3 – Аннотированный скриншот интерфейса Проводника

Система распознала 89 интерактивных элементов: панель инструментов, кнопки управления, адресную строку, навигационное дерево папок, иконки дисков и элементы строки состояния.

Выводы

Разработан MCP-сервер для автоматизации взаимодействия языковых моделей с графическим интерфейсом Windows на основе программного анализа дерева UI Automation. Архитектура построена на принципах Clean Architecture с разделением на четыре слоя, что обеспечивает модульность и расширяемость системы.

Механизм распознавания не требует компьютерного зрения, обеспечивая детерминированность и высокую скорость обработки. Система распознаёт 50-90 элементов за 0,3 секунды с точностью 98% для стандартных элементов Windows.

Тестирование подтвердило работоспособность с различными клиентскими приложениями и широким спектром программ Windows. Среднее время отклика составляет 0,7-2,5 секунды между действиями.

Перспективы развития включают расширение поддержки нестандартных элементов через гибридный подход, оптимизацию для больших интерфейсов, интеграцию с REST API и разработку механизма работы с веб-элементами через Chrome DevTools Protocol.

Список литературы

  1. Model Context Protocol Specification [Электронный ресурс] / Anthropic. – Режим доступа: https://modelcontextprotocol.io. – Загл. с экрана.
  2. Мартин, Р. Чистая архитектура. Искусство разработки программного обеспечения / Р. Мартин ; пер. с англ. А. Киселев. – Санкт-Петербург: Питер, 2018. – 352 с.
  3. Microsoft UI Automation [Электронный ресурс] / Microsoft Learn. – Режим доступа: https://learn.microsoft.com/windows/win32/winauto/entry-uiauto-win32. – Загл. с экрана.

Аннотация

Дворник Н.Н., Чередникова О.Ю. Разработка MCP-сервера для автоматизации взаимодействия с графическим интерфейсом Windows. Разработан MCP-сервер для интеграции больших языковых моделей с Windows. Система реализует распознавание элементов графического интерфейса через анализ дерева доступности без компьютерного зрения и обеспечивает автоматизированное управление через программную имитацию пользовательского ввода.

Ключевые слова: автоматизация, MCP-сервер, дерево доступности, языковые модели, UI Automation, Windows.

Dvornik N.N., Cherednykova O.Yu. Development of an MCP Server for Automating Interaction with Windows GUI. An MCP server for integrating large language models with Windows. The system recognizes graphical interface elements through accessibility tree analysis without computer vision and provides automated control through programmatic user input simulation.

Keywords: automation, MCP server, accessibility tree, language models, UI Automation, Windows.