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 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 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.
- AlicenseNot gradedqualityFmaintenanceA secure MCP server for shell operations, terminal management, and process control, enabling AI assistants to safely execute commands and manage interactive sessions.1435MIT
- AlicenseNot gradedqualityCmaintenanceUniversal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI clients to execute shell, Python, and Node commands on the local machine across platforms.31MIT
Related MCP Connectors
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Appeared in Searches
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/sonirico/mcp-shell'
If you have feedback or need assistance with the MCP directory API, please join our Discord server