Клиенты
Есть две формы запроса. С токеном профиля секрет — это токен профиля, а идентичность берётся из профиля, поэтому X-AD-User не нужен. С общим секретом запрос обязан нести WINRIG_AUTH_TOKEN и X-AD-User. Сервер проверяет токен прежде, чем доверяет X-AD-User: этот заголовок — ключ кэша паролей и сессий в памяти.
Запишите конфигурацию
Заголовок раздела «Запишите конфигурацию»setup --write-config <клиент> записывает определение MCP-сервера в конфигурацию клиента. Флаг требует уровень:
--scope globalпишет пользовательскую конфигурацию.--scope projectпишет текущий репозиторий. Project-уровень находит ближайший каталог-предок с.git(с откатом к текущему каталогу).
Поддерживаемые клиенты: opencode, claude-code, codex, cursor.
./target/release/winrig setup corp --user 'DOMAIN\user' --write-config opencode --scope global./target/release/winrig setup corp --user 'DOMAIN\user' --write-config claude-code --scope projectОпределение сервера включает WINRIG_TOKEN, WINRIG_PROFILE_DIR и WINRIG_STATE_DIR. Поэтому клиент находит профиль даже при нестандартных каталогах.
opencode
Заголовок раздела «opencode»setup --write-config opencode --scope global пишет ~/.config/opencode/opencode.json. Токен профиля подставляется из приватного файла:
{ "mcp": { "winrig": { "type": "local", "command": ["/path/to/winrig", "stdio", "--profile", "corp"], "environment": { "WINRIG_TOKEN": "{file:~/.config/opencode/winrig-token}" }, "disabled": false } }}Токен профиля идёт в отдельный файл 0600, а ссылка {file:...} подставляет его. Поэтому токен профиля никогда не лежит внутри конфигурации клиента. На project-уровне этот файл живёт в WINRIG_STATE_DIR, а не в репозитории.
Claude Code
Заголовок раздела «Claude Code»setup --write-config claude-code --scope global пишет блок mcpServers файла ~/.claude.json. Эквивалент через CLI:
claude mcp add winrig -- /path/to/winrig stdio --profile corpsetup --write-config codex --scope global пишет ~/.codex/config.toml:
[mcp_servers.winrig]command = "/path/to/winrig"args = ["stdio", "--profile", "corp"]
[mcp_servers.winrig.env]WINRIG_TOKEN = "<токен из setup>"setup --write-config cursor --scope global пишет блок mcpServers файла ~/.cursor/mcp.json.
Проверьте конфигурацию
Заголовок раздела «Проверьте конфигурацию»winrig doctor читает конфигурации всех четырёх клиентов и обоих уровней. Он перечисляет каждый winrig-сервер с действующими значениями известных настроек: WINRIG_ALLOWED_HOSTS, WINRIG_ALLOW_INSECURE_TLS, WINRIG_ALLOW_FILE_WRITE и остальных переменных WINRIG_*. Отсутствующая настройка показывается со значением по умолчанию и пометкой (default). Команда сравнивает серверы и помечает каждую настройку, по которой они расходятся. Значение печатается только для известных настроек; любая другая переменная показывается как set или empty, поэтому значение токена не раскрывается. Служебные переменные уровня сервера (WINRIG_TOKEN, WINRIG_PROFILE_DIR и остальные переменные идентичности) показываются, но не сравниваются: они различаются между серверами по замыслу.
./target/release/winrig doctorКоманда работает только на чтение. Она не пишет ни файл конфигурации, ни профиль. Файл конфигурации, который не удалось прочитать, пропускается с указанием пути и причины, а остальная часть отчёта сохраняется. Запись winrig, которая не относится к stdio-серверу, например HTTP-запись, показывается как not compared и не влияет на код возврата.
Коды возврата: 0, когда серверы согласны, 1, когда они расходятся, файл конфигурации пропущен или запись не разобрана, и 2 при ошибке использования.
stdio или HTTP
Заголовок раздела «stdio или HTTP»Режим stdio обслуживает один локальный клиент. Режим HTTP обслуживает несколько проектов на конечной точке /mcp (по умолчанию 127.0.0.1:8005). Любой MCP-клиент работает так же. Используйте stdio-определение, которое напечатал setup, либо направьте клиент на streamable-HTTP конечную точку. Передайте Authorization: Bearer <token>.
Подтверждения на клиентах без elicitation
Заголовок раздела «Подтверждения на клиентах без elicitation»Модифицирующие инструменты получают подтверждение через MCP elicitation. Они отказывают (fail-closed), когда клиент не может спросить. opencode 1.18.31 объявляет только roots. Поэтому модифицирующие инструменты отказываются там работать и говорят об этом, а не действуют без подтверждения. Инструменты только для чтения работают нормально.