Skip to content

🤖 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-совместимого клиента:

json
{
  "mcp_servers": {
    "asc": { "command": "asc", "args": ["mcp", "serve"] }
  }
}

При обычном запуске доступны только приложения текущего пользователя. Для осознанного управления всеми приложениями запускайте MCP-клиент через sudo с аргументами asc mcp serve; non-interactive sudo настраивается политикой безопасности хоста.

Для Claude Code:

bash
claude mcp add asc -- asc mcp serve

При ошибке проверьте asc status, сервис daemon и путь к сокету в конфигурации. Если asc не найден, укажите абсолютный путь. Не выдавайте root-доступ только для видимости приложения: убедитесь, что оно установлено под нужным UID.

🔗 Связанные задачи

DMN-013, AI-001, AI-002 и AI-003 в roadmap ASC.

Распространяется по лицензии MIT.