shell-mcp
shell-mcp
Сверхбезопасный сервер MCP (Model Context Protocol) для безопасного выполнения команд оболочки с локальным LLM-клиентом.
Модель безопасности
Команды проходят через 8 независимых уровней безопасности — каждый из них должен быть пройден:
Уровень | Что он делает |
1 | Валидация схемы Zod — строгие проверки типов перед любой обработкой |
2 | Без запуска оболочки — |
3 | Жестко заданный черный список — |
4 | Инспекция аргументов — отклоняет метасимволы, нулевые байты, подозрительные шаблоны, опасные флаги для конкретных команд |
5 | Белый список директорий — каждый путь должен находиться внутри |
6 | Разрешение символических ссылок — ссылки разрешаются до проверки пути (никакого выхода за пределы через симлинки) |
7 | Ограничения ресурсов — тайм-аут, ограничение размера вывода, ограничение параллелизма |
8 | Очищенное окружение — удаляет |
Related MCP server: MCP Shell Server
Быстрый старт
# Clone and build
git clone https://github.com/your-username/shell-mcp.git
cd shell-mcp
npm install
npm run build
# Run (must specify at least one --allow-dir)
node dist/index.js --allow-dir ~/projects --allow-dir ~/dataКонфигурация LLM-клиента
{
"shell-mcp": {
"command": "node",
"args": [
"/path/to/shell-mcp/dist/index.js",
"--allow-dir", "/home/user/projects",
"--allow-dir", "/home/user/data",
"--allow-cmd", "ls",
"--allow-cmd", "cat",
"--allow-cmd", "grep",
"--allow-cmd", "find",
"--allow-cmd", "python3",
"--timeout", "30",
"--log-file", "/home/user/.shell-mcp/audit.log"
]
}
}Флаги
Флаг | Описание | По умолчанию |
| Разрешенная директория (обязательно, можно повторять) | нет — сервер не запустится |
| Белый список конкретных команд (можно повторять) | все незаблокированные |
| Дополнительные команды для блокировки | — |
| Максимальное время выполнения (1–300) | 30 |
| Максимальный размер вывода | 1048576 (1 МБ) |
| Максимальное количество параллельных команд (1–10) | 3 |
| Путь к файлу журнала аудита | только stderr |
| Включить инструмент | выкл |
| Разрешить перезапись файлов | выкл |
| Отключает все записи (переопределяет | выкл |
| Разблокировать curl, wget, nc | выкл |
| Передавать полное окружение дочерним процессам | выкл (очищено) |
Инструменты, доступные для LLM
run_command
Выполнение команды с явным массивом аргументов. Без оболочки — каналы (pipes) и перенаправления работать не будут.
{
"command": "grep",
"args": ["-r", "TODO", "/home/user/projects/myapp"],
"cwd": "/home/user/projects/myapp",
"timeout": 10
}read_file
Чтение содержимого файла. Поддерживает диапазоны строк и бинарный (base64) вывод.
{
"path": "/home/user/projects/myapp/src/main.py",
"startLine": 1,
"endLine": 50
}list_directory
Список содержимого директории с древовидным представлением, размерами и правами доступа.
{
"path": "/home/user/projects/myapp",
"recursive": true
}write_file (требует --enable-write)
Запись файла. Не будет перезаписывать без --allow-overwrite.
{
"path": "/home/user/projects/myapp/notes.txt",
"content": "Hello world"
}get_server_info
Возвращает текущую конфигурацию сервера и ограничения. Полезно для LLM, чтобы понять свою «песочницу» перед выполнением действий.
Постоянно заблокированные команды
Их невозможно включить никаким флагом:
rm, rmdir, shred, dd, mkfs, fdisk, diskutil, sudo, su, doas,
osascript, defaults, open, launchctl, crontab,
curl, wget, nc, ssh, scp, rsync,
brew, npm, yarn, pip, gem, cargo, docker,
gcc, clang, kill, killall, shutdown, reboot,
gpg, security (macOS keychain), ...and moreЖурнал аудита
Каждая попытка выполнения команды (разрешенная или отклоненная) записывается в формате JSON:
{"timestamp":"2024-01-01T12:00:00.000Z","sessionId":"A3F9B2C1","event":"COMMAND_DENY","command":"rm","args":["-rf","/"],"denyLayer":3,"denyReason":"Command \"rm\" is on the hardcoded blocklist"}
{"timestamp":"2024-01-01T12:00:01.000Z","sessionId":"A3F9B2C1","event":"COMMAND_ALLOW","command":"ls","args":["-la"],"cwd":"/home/user/projects","exitCode":0,"durationMs":12,"outputBytes":1024}Инспекция с помощью MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js --allow-dir /tmp/testThis server cannot be deployed
Maintenance
Related MCP Connectors
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
Paid remote MCP for LLM security scans, jailbreak checks, analytics, checkout, and readiness.
Security & DLP proxy for MCP: tool-poisoning scans, PII redaction on tool args/results. Beta.
Remote MCP for Android CLI agent build gate, structured receipts, audit logs, and reviewer-ready evi
Related MCP Servers
- AlicenseAqualityFmaintenanceAn MCP server that enables secure execution of shell commands across Windows, macOS, and Linux with built-in whitelisting and approval mechanisms for enhanced security.971 npm21MIT
- AlicenseBqualityDmaintenanceEnables secure execution of whitelisted shell commands through MCP, with support for stdin input, timeout control, and comprehensive output including stdout, stderr, and execution time.1MIT

terminal-toolkit-mcpofficial
AlicenseNot gradedqualityCmaintenanceEnables LLM clients to execute shell commands safely through the MCP protocol, with features like session management, safe mode, and process control.1Apache 2.0- AlicenseNot gradedqualityDmaintenanceEnables executing shell commands on the host system via an MCP tool, with JWT/OAuth authentication and audit logging for secure remote access.1MIT