# bun-uia

MCP-сервер, который даёт агенту доступ к нативным окнам Windows через UI Automation. Пригодится, когда нужно кликать и читать интерфейс программ, а не браузера.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 21
- Автор: ObscuritySRL
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/ObscuritySRL/bun-win32/tree/HEAD/packages/bun-uia
- Обновлён: 2026-10-13
- HTML: https://affpapa.org/nevibecode/mcp/bun-uia

## Что делает

bun-uia — это MCP-сервер на Bun, который подключает агента к UI Automation в Windows. Через него ИИ-ассистент видит элементы нативных окон и может с ними работать: находить контролы, читать их состояние, управлять курсором. Автор описывает подход как «Playwright для десктопа Windows».

Запускается сервер командой `npx -y bun-uia` по stdio. Настройки передаются переменными окружения: `BUN_UIA_PROFILE`, `BUN_UIA_OS`, `BUN_UIA_ALLOW`, `BUN_UIA_DENY`, `BUN_UIA_CURSOR`. Через `BUN_UIA_ALLOW` и `BUN_UIA_DENY` задаётся, к каким приложениям агенту можно обращаться, а к каким нет. Без этих списков сервер запустится, но вы не ограничите его доступ к системе.

Сервер рассчитан на Windows, потому что UI Automation есть только там. На macOS и Linux он не заработает — это не вопрос настройки, а отсутствие самого API. Понадобится Node.js или Bun для запуска `npx`.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `BUN_UIA_PROFILE`, `BUN_UIA_OS`, `BUN_UIA_ALLOW`, `BUN_UIA_DENY`, `BUN_UIA_CURSOR`, `BUN_UIA_FS_ROOT` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env BUN_UIA_PROFILE=<BUN_UIA_PROFILE> --env BUN_UIA_OS=<BUN_UIA_OS> --env BUN_UIA_ALLOW=<BUN_UIA_ALLOW> --env BUN_UIA_DENY=<BUN_UIA_DENY> --env BUN_UIA_CURSOR=<BUN_UIA_CURSOR> --transport stdio bun-uia -- npx -y bun-uia
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера

### Codex

**Командой платформы**
```bash
codex mcp add bun-uia --env BUN_UIA_PROFILE=<BUN_UIA_PROFILE> --env BUN_UIA_OS=<BUN_UIA_OS> --env BUN_UIA_ALLOW=<BUN_UIA_ALLOW> --env BUN_UIA_DENY=<BUN_UIA_DENY> --env BUN_UIA_CURSOR=<BUN_UIA_CURSOR> -- npx -y bun-uia
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "bun-uia": {
            "command": "npx",
            "args": [
                "-y",
                "bun-uia"
            ],
            "env": {
                "BUN_UIA_PROFILE": "<BUN_UIA_PROFILE>",
                "BUN_UIA_OS": "<BUN_UIA_OS>",
                "BUN_UIA_ALLOW": "<BUN_UIA_ALLOW>",
                "BUN_UIA_DENY": "<BUN_UIA_DENY>",
                "BUN_UIA_CURSOR": "<BUN_UIA_CURSOR>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "bun-uia": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "bun-uia"
            ],
            "env": {
                "BUN_UIA_PROFILE": "<BUN_UIA_PROFILE>",
                "BUN_UIA_OS": "<BUN_UIA_OS>",
                "BUN_UIA_ALLOW": "<BUN_UIA_ALLOW>",
                "BUN_UIA_DENY": "<BUN_UIA_DENY>",
                "BUN_UIA_CURSOR": "<BUN_UIA_CURSOR>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e BUN_UIA_PROFILE=<BUN_UIA_PROFILE> -e BUN_UIA_OS=<BUN_UIA_OS> -e BUN_UIA_ALLOW=<BUN_UIA_ALLOW> -e BUN_UIA_DENY=<BUN_UIA_DENY> -e BUN_UIA_CURSOR=<BUN_UIA_CURSOR> bun-uia npx -y bun-uia
```
Вместо <…> подставьте свои значения. Ещё 1 переменная окружения — в README сервера

## Когда брать
- прочитать дерево элементов нативного окна Windows
- нажать кнопку в десктопной программе из агента
- ограничить агенту список доступных приложений
- отладить сценарий работы с GUI без ручного клика
- получить состояние контролов окна в текстовом виде

## Примеры запросов агенту
- Подключись к окну блокнота и покажи, какие элементы там есть
- Найди в открытом окне кнопку «Сохранить» и нажми её
- Ограничь доступ агента только к приложению `calc.exe` и проверь, что оно видит

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 386989
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33918
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81115
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119160
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47392
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43872

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
