# zsh-tool

Запускает команды в нативном Zsh с поддержкой PTY и защитой от зависаний. Предотвращает ошибки кавычек и сбои сессий в терминале.

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

## Что делает

Стандартный вызов Bash в агентах часто ломается на кавычках и синтаксисе Zsh, заставляя тратить контекст на исправление ошибок. Этот сервер запускает процессы прямо в окружении Zsh. Режим PTY эмулирует псевдотерминал, поэтому агент может работать с интерактивными утилитами и передавать пароли в скрытые запросы.

Для долгих задач предусмотрено пошаговое выполнение с возвратом контроля через параметр `yield_after`. Терминал не блокирует диалог. Читать свежий вывод можно небольшими порциями через `zsh_poll`, не перегружая контекст сотнями строк. Зависшие процессы отсекает предохранитель NEVERHANG: если команда падает по тайм-ауту трижды за час, сервер временно блокирует её повторы на 5 минут.

История вызовов и статистика сохраняются в SQLite через модуль A.L.A.N. Без указания переменной `ALAN_DB_PATH` база данных не будет сохраняться между сессиями.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `ALAN_DB_PATH` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

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

**Командой платформы**
```bash
claude mcp add --env ALAN_DB_PATH=<ALAN_DB_PATH> --transport stdio zsh-tool -- uvx zsh-tool-mcp
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from zsh-tool-mcp <команда>

### Codex

**Командой платформы**
```bash
codex mcp add zsh-tool --env ALAN_DB_PATH=<ALAN_DB_PATH> -- uvx zsh-tool-mcp
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from zsh-tool-mcp <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "zsh-tool": {
            "command": "uvx",
            "args": [
                "zsh-tool-mcp"
            ],
            "env": {
                "ALAN_DB_PATH": "<ALAN_DB_PATH>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from zsh-tool-mcp <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "zsh-tool": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "zsh-tool-mcp"
            ],
            "env": {
                "ALAN_DB_PATH": "<ALAN_DB_PATH>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from zsh-tool-mcp <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e ALAN_DB_PATH=<ALAN_DB_PATH> zsh-tool uvx zsh-tool-mcp
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from zsh-tool-mcp <команда>

## Когда брать
- перехватить ввод паролей и интерактивные диалоги через PTY
- остановить зависшие команды предохранителем NEVERHANG
- читать только новые строки терминала через дельты `zsh_poll`
- выполнять скрипты без конфликта кавычек между Bash и Zsh

## Примеры запросов агенту
- Выполни `pass insert mypass` через PTY и передай пароль по запросу.
- Запусти `pip install .` с возвратом контроля через 5 секунд и читай логи через `zsh_poll`.
- Покажи текущие фоновые процессы командой `zsh_tasks`.

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 392262
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33989
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81163
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119231
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47577
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43902

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