One-click установка для Claude, Cursor и Cline — архитектура
Мы пишем четыре конфига в трёх разных форматах. Вот как одна кнопка Install покрывает Claude Desktop, Claude Code, Cursor и Cline — не сломав уже настроенное.
Четыре файла
Когда жмёшь Install на Unyly, CLI пишет (или мерджит) до четырёх файлов:
- Claude Desktop:
~/Library/Application Support/Claude/claude_desktop_config.json(mac) или%APPDATA%\Claude\claude_desktop_config.json(Windows) - Claude Code:
~/.claude/.mcp.jsonи (опционально)<project>/.claude/.mcp.json - Cursor:
~/.cursor/mcp.json - Cline:
<vscode-globalStorage>/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
Все четыре используют одну форму mcpServers, но различаются дефолтами транспорта, обработкой env и стилем JSON (где-то комментарии, где-то строгий).
Merge, а не overwrite
Сложное — не запись, а слияние. У пользователей есть серверы с прошлых установок. Мы:
- Читаем существующий JSON (обрабатываем малформ через
json5). - Мерджим новый сервер в
mcpServers, остальное сохраняем. - Пишем атомарно (
writeFileв.tmp,renameв целевой путь). - Показываем дифф в CLI перед применением.
Detect, а не угадывать
Мы не спрашиваем какие клиенты установлены. На install — пробуем файлы; отсутствующие клиенты пропускаем тихо. Одна кнопка Install делает правильное действие при 1 или при 4 клиентах.
Open source
CLI лежит на github.com/unyly/cli. 200 строк TypeScript, никаких зависимостей вне Node stdlib. Принимаем PR для новых форматов клиентов.