Skip to main content
Glama

director-shell-mcp

director-shell-mcp — это небольшой MCP-сервер для агентов, работающих в режиме директора. Он использует транспорт MCP stdio, чтобы предоставить контролируемый «запасной выход» для записи файлов, выполнения Python-кода для исследования данных, запуска shell-команд и контроля над фоновыми заданиями, запущенными отдельно. Команды запускаются только тогда, когда агент явно вызывает инструмент; сервер сам по себе не запускает оболочку.

Установка

Требуется Node.js 18 или новее. Из этого каталога:

npm install

Запустите сервер напрямую с помощью:

node C:/path/to/director-shell-mcp/index.js

Related MCP server: shell-0

Регистрация в OMP (основной способ)

Основным клиентом является среда Oh My Pi (OMP). Добавьте эту точную конфигурацию в пользовательский ~/.omp/agent/mcp.json (или в проектный .omp/mcp.json):

{
  "$schema": "https://raw.githubusercontent.com/can1357/oh-my-pi/main/packages/coding-agent/src/config/mcp-schema.json",
  "mcpServers": {
    "director-shell": {
      "command": "node",
      "args": ["C:/path/to/director-shell-mcp/index.js"]
    }
  }
}

Для stdio-серверов поле type можно опустить. После редактирования конфигурации выполните /mcp reload, а затем /mcp test director-shell в OMP.

Регистрация в универсальном MCP-клиенте

Другие MCP-клиенты обычно принимают эквивалентную stdio-регистрацию:

{
  "mcpServers": {
    "director-shell": {
      "command": "node",
      "args": ["C:/path/to/director-shell-mcp/index.js"]
    }
  }
}

Справочник инструментов

Все инструменты возвращают JSON-объект в текстовом содержимом MCP. Ошибки возвращаются как ошибки инструментов MCP с полем error в форме предложения.

shell_run

Выполняет команду до завершения. Параметры:

  • command (строка, обязательный): текст команды.

  • cwd (строка, необязательный): рабочая директория.

  • timeout_ms (целое число, необязательный): по умолчанию 60 000; максимум 600 000.

  • shell (powershell, cmd или bash, необязательный): по умолчанию PowerShell на Windows и Bash в остальных случаях.

Результат содержит exit_code, duration_ms и объекты stdout/stderr. Каждый поток включает до примерно 50 КиБ предварительного текста. Если поток превышает этот предел, его объект также включает truncated: true и full_output_path, указывающий на временный файл с полным потоком. Тайм-аут возвращает ошибку инструмента MCP с понятным сообщением и частичным результатом.

write_file

Записывает UTF-8 текст в абсолютный путь к файлу. Параметры:

  • path (строка, обязательный): абсолютный путь к файлу.

  • content (строка, обязательный): текст для записи.

  • append (логическое, необязательный): добавлять вместо замены; по умолчанию false.

  • create_dirs (логическое, необязательный): создавать отсутствующие родительские каталоги; по умолчанию true.

Результат содержит path, bytes_written, created (был ли файл до вызова) и appended.

edit_file

Заменяет текст в UTF-8 файле по абсолютному пути. Параметры:

  • path (строка, обязательный): абсолютный путь к файлу.

  • old_text (строка, обязательный): непустой текст для поиска.

  • new_text (строка, обязательный): заменяющий текст.

  • replace_all (логическое, необязательный): заменять все вхождения; по умолчанию false.

Без replace_all параметр old_text должен встречаться ровно один раз. Ноль или несколько совпадений возвращают ошибку инструмента MCP и оставляют файл без изменений. Результат содержит path и replacements.

run_python

Выполняет Python-код до завершения с ограниченным выводом и тайм-аутом. На Windows сервер сначала пробует запускатель py, затем python; на других системах сначала python3, затем python, кэшируя первую рабочую исполняемую программу. Параметры:

  • code (строка, обязательный): исходный код Python.

  • cwd (строка, необязательный): рабочая директория для процесса Python.

  • timeout_ms (целое число, необязательный): по умолчанию 60 000; максимум 600 000.

  • args (массив строк, необязательный): значения, передаваемые как sys.argv[1:].

Результат содержит exit_code, duration_ms, объекты stdout/stderr и python_executable. Потоки вывода ограничены и сбрасываются во временные файлы с тем же поведением, что и в shell_run. Тайм-аут возвращает ошибку инструмента MCP с понятным сообщением и частичным результатом.

job_start

Запускает отдельную команду, которая продолжает работу после возврата вызова инструмента. Параметры:

  • command (строка, обязательный)

  • cwd (строка, необязательный)

  • shell (powershell, cmd или bash, необязательный)

  • name (строка, необязательный, читаемая метка)

Результат содержит job_id, pid, log_paths (stdout, stderr и combined) и путь exit_marker. Метаданные сохраняются в формате JSON в %LOCALAPPDATA%/director-shell-mcp/jobs/<jobId>/, поэтому задания остаются обнаруживаемыми после перезапуска сервера.

job_status

Читает сохранённое состояние задания. Параметры:

  • job_id (строка, обязательный): идентификатор, возвращённый job_start.

  • tail_lines (целое число, необязательный): по умолчанию 40; максимум 1 000.

Результат содержит running, exit_code (когда доступен), runtime_ms, started_at и output_tail из объединённого журнала. Отдельная обёртка записывает exit_code.txt при завершении команды, сохраняя код выхода при перезапусках сервера.

job_kill

Завершает задание, запущенное этим сервером. Принимает job_id. На Windows использует taskkill /T /F для завершения дерева процессов обёртки. Уже завершённые задания остаются без изменений.

job_list

Перечисляет все допустимые сохранённые задания с их job_id, необязательным name, pid, состоянием running, кодом выхода и временем запуска.

grep_files

Рекурсивно ищет по абсолютному файлу или каталогу, используя JavaScript-регулярное выражение, без необходимости в ripgrep. Поиск пропускает node_modules, .git, bin, obj, dist и target, игнорирует файлы размером более 5 МиБ и двоичные файлы, а также останавливается при достижении лимита результатов. Параметры:

  • pattern (строка, обязательный): исходный код JavaScript-регулярного выражения.

  • path (строка, обязательный): абсолютный путь к файлу или каталогу.

  • glob (строка, необязательный): простой фильтр имени файла с использованием * и ?.

  • case_sensitive (логическое, необязательный): по умолчанию false.

  • max_results (целое число, необязательный): по умолчанию 200; максимум 1 000.

  • context_lines (целое число, необязательный): строки до и после каждого совпадения; по умолчанию 0; максимум 5.

Результат содержит matches с file, line_number, line, before и after, а также files_scanned и truncated. Недопустимые регулярные выражения возвращают ошибку инструмента MCP.

job_wait

Ожидает завершения существующего отдельного задания, опрашивая сохранённый маркер выхода каждые 500 мс. Параметры:

  • job_id (строка, обязательный): идентификатор, возвращённый job_start.

  • timeout_ms (целое число, необязательный): по умолчанию 60 000; максимум 600 000.

  • tail_lines (целое число, необязательный): по умолчанию 40; максимум 1 000.

Результат имеет те же поля, что и job_status, и добавляет timed_out. Истечение времени ожидания, пока задание ещё выполняется, является нормальным результатом с timed_out: true, а не ошибкой MCP.

lock_acquire и lock_release

Предоставляют меж-агентский именованный мьютекс, сохраняемый в %LOCALAPPDATA%/director-shell-mcp/locks/. Имена содержат только буквы, цифры, _, . и - и имеют длину не более 64 символов. lock_acquire принимает name (обязательный), wait_ms (необязательный, по умолчанию 0, максимум 600 000) и необязательный note; возвращает name, UUID token и acquired_at. Захват использует атомарное создание каталога и восстанавливает блокировки, чей записанный процесс-владелец больше не жив. Ошибка удержания блокировки идентифицирует её pid, примечание (если есть) и длительность. lock_release принимает name и token владельца; неверные токены и свободные блокировки являются ошибками и не изменяют блокировку.

screenshot

Захватывает полный виртуальный экран или видимое окно верхнего уровня в PNG на Windows с помощью System.Drawing и Windows API. Параметры:

  • target (screen или window, необязательный): по умолчанию screen.

  • window_title (строка, обязательный для window): подстрока заголовка видимого окна без учёта регистра.

  • output_path (абсолютный .png, необязательный): по умолчанию файл с меткой времени во временном выходном каталоге.

Результат содержит path, width, height, target и совпавший window_title для захвата окна. Возвращает понятную ошибку «не поддерживается» на не-Windows системах и понятную ошибку «нет совпадений», когда запрошенное окно не найдено.

process_list

Возвращает доступный только для чтения список процессов на Windows. Параметры:

  • name_filter (строка, необязательный): подстрока имени процесса или пути к исполняемому файлу без учёта регистра.

  • max_results (целое число, необязательный): по умолчанию 100; максимум 1 000.

Каждый процесс содержит pid и name, а также включает path, started_at и working_set_bytes, когда доступны. Результат также содержит truncated.

file_lockers

Сообщает о процессах, удерживающих открытый файл на Windows, через API Restart Manager. Принимает path (обязательный), который должен быть абсолютным путём к существующему файлу, и возвращает { path, lockers }. Каждый блокировщик содержит pid, app_name и app_type; незаблокированный файл — это успешный результат с пустым массивом lockers. На не-Windows системах возвращается понятная ошибка «не поддерживается».

Проверка

Запустите лёгкий сквозной смоук-тест (он использует только echo и PowerShell sleep):

npm run smoke

Смоук-тест запускает новый MCP-сервер через stdio, выполняет инициализацию, перечисляет все пятнадцать инструментов, проверяет запись файлов, точное редактирование текста, выполнение Python и передачу аргументов, завершение команд и захват вывода, проверяет отдельные задания во время их выполнения и после завершения, проверяет grep, wait, блокировки, скриншоты, список процессов и обнаружение блокировщиков файлов через Restart Manager, проверяет сохранение через job_list и проверяет обработку тайм-аута команд.

Лицензия

MIT

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Gives AI agents shell access by providing a run_command tool for executing shell commands and returning stdout, stderr, and exit code.
    15
    1
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides local command execution, remote SSH, interactive terminals, file read/write, and source search for AI CLI through stdio, with large output pagination and safety confirmations.
    8
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with shell execution and file management capabilities on a development VM, including running commands and editing files via tools like run_command, read_file, and edit_file.

Latest Blog Posts

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/bobzhou-source/director-shell-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server