director-shell-mcp
director-shell-mcp
director-shell-mcp — это небольшой MCP-сервер для агентов, работающих в режиме директора. Он использует транспорт MCP stdio, чтобы предоставить контролируемый «запасной выход» для записи файлов, выполнения Python-кода для исследования данных, запуска shell-команд и контроля над фоновыми заданиями, запущенными отдельно. Команды запускаются только тогда, когда агент явно вызывает инструмент; сервер сам по себе не запускает оболочку.
Установка
Требуется Node.js 18 или новее. Из этого каталога:
npm installЗапустите сервер напрямую с помощью:
node C:/path/to/director-shell-mcp/index.jsRelated 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
This server cannot be installed
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 Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Runtime permission, approval, and audit layer for AI agent tool execution.
Shared control plane for AI coding agents — tasks, memory, decisions, file locks. 12 tools.
The trust harness for AI agents. Set what an agent can do before it acts.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceGives AI agents shell access by providing a run_command tool for executing shell commands and returning stdout, stderr, and exit code.151ISC- AlicenseAqualityBmaintenanceProvides direct, unsandboxed local machine access via filesystem, Python, Node.js, and shell commands for MCP agents.4MIT
- AlicenseNot gradedqualityBmaintenanceProvides 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.81Apache 2.0
- FlicenseNot gradedqualityCmaintenanceProvides 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
- 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/bobzhou-source/director-shell-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server