# terminal-mcp

Даёт агенту постоянные терминальные сессии для SSH, REPL, CLI баз данных и TUI-приложений. Пригодится для команд с состоянием между вызовами.

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

## Что делает

terminal-mcp запускает постоянные PTY-сессии, которые сохраняются между вызовами инструментов. Агент может отправлять команды, читать вывод, нажимать специальные клавиши и работать с интерактивными программами. Сервер предоставляет инструменты `session_create`, `session_interact`, `session_read`, `session_send`, `session_wait_for`, `session_exec` и `session_close`.

С ним можно подключаться по SSH, открывать Python REPL, выполнять запросы через `psql`, управлять TUI-приложениями и ждать завершения долгой сборки по шаблону. Режим diff возвращает только изменившиеся строки экрана, а опасные команды требуют подтверждения. Для запуска через `uvx` нужен Python 3.10+.

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

## Установка

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

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

### Codex

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

### Cursor

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

### GitHub Copilot

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

### Gemini CLI

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

## Когда брать
- поддерживать SSH-сессию между командами
- выполнять код в интерактивном Python REPL
- оставлять подключение к CLI базы данных
- управлять TUI-приложением с клавиатуры
- ждать завершения долгой сборки по шаблону

## Примеры запросов агенту
- Подключись к серверу по SSH, создай сессию с меткой `prod` и выполни `df -h`, затем покажи результат `docker ps`.
- Открой Python REPL в постоянной сессии, загрузи `data.csv` через pandas и выведи описание таблицы.
- Запусти `npm run build` в отдельной сессии и жди шаблон `Build complete|ERROR` до завершения.

## Похожие
- [interactive-terminal](https://affpapa.org/nevibecode/mcp/interactive-terminal.md) — MCP-сервер · ★ 19
- [terminal-control](https://affpapa.org/nevibecode/skills/terminal-control.md) — скилл · 505 установок
- [sheets-terminal-spreadsheet](https://affpapa.org/nevibecode/skills/sheets-terminal-spreadsheet.md) — скилл · 726 установок
- [cmux-terminal-multiplexer](https://affpapa.org/nevibecode/skills/cmux-terminal-multiplexer.md) — скилл · 1400 установок
- [terminal-ui](https://affpapa.org/nevibecode/skills/terminal-ui.md) — скилл · 836 установок
- [monitoring-terminal-errors](https://affpapa.org/nevibecode/skills/monitoring-terminal-errors.md) — скилл · 449 установок

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