terminal-mcp
Проблема
Любой инструмент ИИ для кодирования упирается в одну и ту же стену: отсутствие реального доступа к терминалу.
Bash-инструмент Claude Code, GitHub Copilot и Codex запускают команды в изолированных подпроцессах. Каждая команда начинается с чистого листа. Состояние не переносится. Это означает:
Нет SSH-сессий — невозможно подключиться к удалённому серверу и выполнить несколько команд
Нет REPL — невозможно интерактивно работать с интерпретаторами Python, Node или Ruby
Нет CLI для баз данных — невозможно поддерживать соединение с psql, mysql или redis-cli
Нет TUI-приложений — невозможно управлять htop, vim или fzf с помощью клавиш со стрелками
Нет долго работающих процессов — невозможно отслеживать сборки, следить за логами или запускать серверы разработки
Related MCP server: Interactive Terminal MCP Server
Решение
terminal-mcp предоставляет агентам ИИ настоящий терминал. Постоянные PTY-сессии, которые сохраняются между вызовами инструментов. Отправляйте команды, читайте вывод, нажимайте клавиши, управляйте TUI — точно так же, как человек за терминалом.
uvx terminal-mcpОдна команда. Работает с Claude Code, Claude Desktop, VS Code, Cursor и Windsurf.
Быстрый старт
1. Установка (30 секунд)
# No install needed - run directly
uvx terminal-mcp
# Or install globally
pip install terminal-mcp2. Подключение к вашему ИИ-клиенту
Добавьте в ~/.claude.json или .mcp.json проекта:
{
"mcpServers": {
"terminal": {
"command": "uvx",
"args": ["terminal-mcp"]
}
}
}Добавьте в claude_desktop_config.json:
{
"mcpServers": {
"terminal": {
"command": "uvx",
"args": ["terminal-mcp"]
}
}
}Нажмите на значок установки в один клик выше или добавьте в .vscode/mcp.json:
{
"servers": {
"terminal-mcp": {
"command": "uvx",
"args": ["terminal-mcp"]
}
}
}Добавьте в ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"terminal": {
"command": "uvx",
"args": ["terminal-mcp"]
}
}
}3. Проверка
session_exec exec="echo hello from terminal-mcp"Что с этим можно делать?
SSH на удалённые серверы
session_create command="ssh user@prod-server.com" label="prod"
session_interact session_id="a1b2c3d4" input="df -h" wait_for="\$"
session_interact session_id="a1b2c3d4" input="docker ps" wait_for="\$"
session_close session_id="a1b2c3d4"Запуск интерактивных REPL
session_create command="python3" label="python"
session_interact session_id="e5f6g7h8" input="import pandas as pd" wait_for=">>>"
session_interact session_id="e5f6g7h8" input="df = pd.read_csv('data.csv')" wait_for=">>>"
session_interact session_id="e5f6g7h8" input="df.describe()" wait_for=">>>"
session_close session_id="e5f6g7h8"Запросы к базам данных
session_create command="psql -U admin mydb" label="db"
session_interact session_id="x1y2z3w4" input="SELECT count(*) FROM users;" wait_for="row"
session_interact session_id="x1y2z3w4" input="\dt" wait_for="#"
session_close session_id="x1y2z3w4"Навигация по TUI-приложениям
session_create command="htop" label="monitor"
session_read session_id="a1b2c3d4"
# Auto-detects TUI, returns screen snapshot
session_send session_id="a1b2c3d4" key="F6"
session_read session_id="a1b2c3d4" mode="diff"
# Returns only changed lines - saves tokens
session_send session_id="a1b2c3d4" key="F10"
session_close session_id="a1b2c3d4"Мониторинг долгих сборок
session_create command="bash" label="build"
session_send session_id="a1b2c3d4" input="npm run build"
session_wait_for session_id="a1b2c3d4" pattern="Build complete|ERROR" timeout=120Выполнение разовых команд
session_exec exec="git log --oneline -10"
session_exec exec="docker compose ps" timeout=10Краткий обзор возможностей
Возможность | Что делает |
Постоянные сессии | Настоящие PTY-сессии, которые сохраняются между вызовами инструментов |
Отправка + чтение за один вызов |
|
Чтение по шаблону |
|
Автоопределение TUI | Обнаруживает htop, vim и т.д. и автоматически переключается в режим снимка экрана |
Режим вывода diff | Возвращает только изменённые строки экрана — минимизирует токены |
Специальные клавиши | Стрелки, Tab, F1-F12, Home/End, Page Up/Down |
Управляющие символы | Ctrl-C, Ctrl-D, Ctrl-Z, Ctrl-L, escape telnet |
Шлюз опасных команд | Блокирует |
Интеграция оболочки OSC 133 | Автоматически определяет границы команд и коды завершения |
Умное усечение | Четыре стратегии для предотвращения переполнения контекста |
Ввод секретов | Отправка паролей без логирования |
Динамическое изменение размера | Изменение размера терминала на лету с помощью SIGWINCH |
Очистка неактивных сессий | Автоматическое закрытие неактивных сессий |
Кроссплатформенность | Поддержка Linux, macOS и Windows |
Справочник инструментов
terminal-mcp предоставляет 9 MCP-инструментов. Полные сведения в docs/tools.md.
Инструмент | Назначение |
Создать постоянную терминальную сессию | |
Отправить текст, клавиши или управляющие символы | |
Прочитать вывод (режимы: поток, снимок, авто, diff) | |
Отправить + прочитать за один вызов | |
Ожидать совпадения с регулярным выражением в выводе | |
Разовое выполнение команды | |
Корректно закрыть сессию | |
Изменить размеры терминала | |
Список активных сессий |
Архитектура
flowchart LR
Client[AI Client] -->|MCP JSON-RPC| Server[terminal-mcp]
Server --> SM[Session Manager]
SM --> S1[PTY 1: bash]
SM --> S2[PTY 2: python3]
SM --> S3[PTY 3: ssh user@host]
S1 & S2 & S3 -.->|PTY output| Reader[Reader Thread]
Reader -.->|buffer| ServerКаждая сессия основана на реальном PTY через pexpect.spawn (или PopenSpawn в Windows). Полные сведения об архитектуре см. в docs/architecture.md.
Конфигурация
Все настройки задаются через переменные окружения TERMINAL_MCP_*. Полный справочник в docs/configuration.md.
Настройка | Переменная окружения | По умолчанию |
Макс. сессий |
|
|
Таймаут бездействия |
|
|
Шлюз безопасности |
|
|
Лимит буфера |
|
|
Режим усечения |
|
|
Пример с пользовательскими настройками:
{
"mcpServers": {
"terminal": {
"command": "uvx",
"args": ["terminal-mcp"],
"env": {
"TERMINAL_MCP_MAX_SESSIONS": "20",
"TERMINAL_MCP_IDLE_TIMEOUT": "3600",
"TERMINAL_MCP_TRUNCATION_MODE": "head_tail"
}
}
}
}Документация
Документ | Описание |
Полный API для всех 9 MCP-инструментов | |
Как работает terminal-mcp под капотом | |
Все настройки и переменные окружения | |
Обнаружение опасных команд и шлюз безопасности | |
Реальные сценарии и шаблоны | |
История версий и примечания к релизам | |
Как внести вклад |
Поддерживаемые клиенты
Клиент | Статус | Установка |
Claude Code (CLI) | Поддерживается |
|
Claude Desktop | Поддерживается | |
VS Code (Copilot Chat) | Поддерживается | Установка в один клик или |
Cursor | Поддерживается | Установка в один клик или Настройки |
Windsurf | Поддерживается |
|
Запуск тестов
pip install -e ".[dev]"
pytest tests/ -vУчастие в разработке
Приветствуются любые вклады! См. рекомендации в docs/contributing.md.
Лицензия
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
- Flicense-qualityDmaintenanceProvides stateful, interactive terminal access for LLMs to spawn and maintain persistent processes like SSH sessions, debuggers, and REPLs with continuous input/output interaction across commands.7
- Alicense-qualityCmaintenanceProvides AI agents with fully interactive terminal sessions, including TUI support, keyboard control, and screen capture across Windows, Linux, and Mac.MIT
- Alicense-qualityCmaintenanceEnables AI agents to have persistent, fully interactive SSH sessions into remote hosts, behaving like a local terminal.231MIT
- Alicense-qualityDmaintenanceEnables AI agents to spawn and interact with real terminal sessions, capturing screenshots of rendered TUI output and sharing live sessions for debugging.01MIT
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Run AI customer support from your terminal: conversations, knowledge base, and chat widget.
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/mkpvishnu/terminal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server