mcp-shell
mcp-shell
MCP-сервер, который выполняет shell-команды. Ваша LLM получает инструмент; вы получаете контроль над тем, что выполняется и как.
Создан на основе mark3labs/mcp-go. Написан на Go.
Запуск
Docker (проще всего):
docker run -it --rm -v /tmp/mcp-workspace:/tmp/mcp-workspace sonirico/mcp-shell:latestИз исходников:
git clone https://github.com/sonirico/mcp-shell && cd mcp-shell
make install
mcp-shellRelated MCP server: MCP Shell Server
Настройка
Безопасный режим включён по умолчанию. Без файла конфигурации mcp-shell запускается в безопасном режиме, ограниченном узким списком разрешённых утилит только для чтения (ls, cat, grep, find, head, tail, ...). Файл конфигурации нужен только для расширения или изменения этой политики. Чтобы работать полностью без ограничений, необходимо явно согласиться:
MCP_SHELL_ALLOW_UNSAFE=true mcp-shell # disables all validation - do not use in productionЧтобы настроить политику, укажите YAML-конфиг:
export MCP_SHELL_SEC_CONFIG_FILE=/path/to/security.yaml
mcp-shellБезопасный режим (рекомендуется) — без интерпретации shell, только список разрешённых исполняемых файлов:
security:
enabled: true
use_shell_execution: false
allowed_executables:
- ls
- cat
- grep
- find
- echo
# WARNING: never add shell/language interpreters (bash, sh, python, perl,
# ruby, node) or alias-capable tools (git) here - the interpreter executes
# whatever it is handed, bypassing secure mode entirely. mcp-shell warns at
# startup if it finds one.
blocked_patterns: # optional: restrict args on allowed commands
- '(^|\s)remote\s+(-v|--verbose)(\s|$)'
max_execution_time: 30s
max_output_size: 1048576
working_directory: /tmp/mcp-workspace
audit_log: trueУстаревший режим — выполнение через shell, белый/чёрный список по строке команды (уязвим к инъекциям, если не осторожно):
security:
enabled: true
use_shell_execution: true
allowed_commands: [ls, cat, grep, echo]
blocked_patterns: ['rm\s+-rf', 'sudo\s+']
max_execution_time: 30s
audit_log: trueПодключение
Claude Desktop — добавьте в ваш MCP-конфиг:
{
"mcpServers": {
"shell": {
"command": "docker",
"args": ["run", "--rm", "-i", "sonirico/mcp-shell:latest"],
"env": { "MCP_SHELL_LOG_LEVEL": "info" }
}
}
}Для пользовательского конфига смонтируйте файл и задайте переменную окружения:
{
"command": "docker",
"args": ["run", "--rm", "-i", "-v", "/path/to/security.yaml:/etc/mcp-shell/security.yaml", "-e", "MCP_SHELL_SEC_CONFIG_FILE=/etc/mcp-shell/security.yaml", "sonirico/mcp-shell:latest"]
}API инструмента
Параметр | Тип | Описание |
| string | Команда shell для выполнения (обязательно) |
| boolean | Кодировать stdout/stderr в base64 (по умолчанию: false) |
Ответ включает status, exit_code, stdout, stderr, command, execution_time и опциональный security_info.
Переменные окружения
Переменная | Описание |
| Путь к YAML-файлу безопасности (переопределяет встроенные безопасные настройки по умолчанию) |
| Установите |
| Имя сервера (по умолчанию: "mcp-shell 🐚") |
| debug, info, warn, error, fatal |
| json, console |
| stdout, stderr, file |
Разработка
make install dev-tools # deps + goimports, golines
make fmt test lint
make docker-build # build image locally
make release # binary + docker imageБезопасность
По умолчанию: Безопасный режим, ограниченный узким списком разрешённых утилит только для чтения. Без интерпретаторов.
Безопасный режим (
use_shell_execution: false): команда разбирается в AST shell, и принимается только одна полностью литеральная простая команда (без конвейеров, списков, подстановок, перенаправлений или глобов); её исполняемый файл должен быть в списке разрешённых. Интерпретаторы (bash/sh/python) жёстко запрещены, даже если они в списке разрешённых, а политики для отдельных инструментов по умолчанию запрещают: для управляемых бинарников (git,find,sort,tar) принимаются только явно безопасные флаги, а всё остальное, включая неизвестные или будущие флаги-лазейки, отклоняется (git -c/config,find -exec/-fls,sort -o/--compress-program,tar -I/-C). Git ограничен подкомандами только для чтения. Это уровень раннего отклонения, а не песочница.Без ограничений: Только через
MCP_SHELL_ALLOW_UNSAFE=true. Полный доступ; подходит для локальной разработки, опасно в других случаях.Docker: Запускается от непривилегированного пользователя, на основе Alpine. Используйте в продакшене. Лучше всего сочетать с песочницей ОС (read-only ФС, сброшенные capabilities) для эшелонированной защиты.
Вклад
Сделайте форк, создайте ветку, выполните make fmt test, откройте PR.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA secure and pluggable MCP server to run terminal commands on your local machine or cloud server — remotely, safely, and with LLMs or agentic clients.-
- AlicenseBqualityAmaintenanceA secure MCP server for shell operations, terminal management, and process control, enabling AI assistants to safely execute commands and manage interactive sessions.13172 npm6MIT
- AlicenseNot gradedqualityCmaintenanceUniversal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.1MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables AI clients to execute shell, Python, and Node commands on the local machine across platforms.31MIT