🤖 MCP-сервер демона
📌 Описание
asc mcp serve — локальный сервер Model Context Protocol для AI-клиентов. Он работает через стандартные ввод и вывод и передаёт операции управления запущенному ASC daemon через локальный Unix-сокет.
Права определяются UID, который ядро передаёт daemon через SO_PEERCRED. Обычный пользователь видит и изменяет только свои приложения, root-процесс MCP — все. UID и роль нельзя передать параметром MCP.
🎯 Сценарии
- Подключить Codex, Claude Code или другой stdio MCP-клиент и управлять своими приложениями.
- Запустить ту же команду от root, когда администратору осознанно нужны все приложения.
- Читать состояние и логи, устанавливать, обновлять, настраивать, сохранять и восстанавливать приложения.
🏗️ Техническое решение
Инструменты
| Tool | Действие | Подсказка MCP |
|---|---|---|
system_info, metrics_get | метрики daemon и приложений | только чтение |
app_list, app_info, logs_read, app_settings_get | данные приложения | только чтение |
app_install, app_upgrade, app_control, app_settings_update | управление | изменение |
backup_list, backup_create, backup_restore, backup_prune | локальные бекапы | restore разрушителен |
app_remove, exec_command | удаление и команды хоста | разрушительные |
Daemon разрешает и авторизует каждую ссылку на приложение. Чужое и несуществующее приложение возвращают одинаковый not found. Разрушительные инструменты имеют MCP-аннотации, чтобы клиент мог запросить подтверждение.
exec_command запускается процессом MCP, а не root-daemon, поэтому получает фактический UID asc mcp serve. Используются /bin/sh -lc, timeout 60 секунд по умолчанию (максимум 300) и лимит stdout/stderr по 1 МиБ.
Подключение MCP-клиента
Требования: asc доступен в PATH, daemon запущен (asc status), пользователь клиента может подключиться к настроенному Unix-сокету ASC.
Конфигурация stdio для Codex-совместимого клиента:
{
"mcp_servers": {
"asc": { "command": "asc", "args": ["mcp", "serve"] }
}
}При обычном запуске доступны только приложения текущего пользователя. Для осознанного управления всеми приложениями запускайте MCP-клиент через sudo с аргументами asc mcp serve; non-interactive sudo настраивается политикой безопасности хоста.
Для Claude Code:
claude mcp add asc -- asc mcp serveПри ошибке проверьте asc status, сервис daemon и путь к сокету в конфигурации. Если asc не найден, укажите абсолютный путь. Не выдавайте root-доступ только для видимости приложения: убедитесь, что оно установлено под нужным UID.
🔗 Связанные задачи
DMN-013, AI-001, AI-002 и AI-003 в roadmap ASC.