Issue #276 closed: Переменные окружения базы данных по умолчанию возвращаются в открытом виде
Суть проблемы
В описании инструмента env_vars сказано, что значения секретов по умолчанию маскируются (возвращаются как ***), чтобы их случайно не отдать MCP-клиенту, а чтобы увидеть значение в открытом виде, нужно явно передать reveal=true. Для приложений и сервисов это действительно так, а вот для баз данных — нет.
Если запросить список переменных окружения у базы данных, значения приходят в открытом виде сразу же, без какого-либо запроса на это. И что хуже всего — reveal тут вообще ни на что не влияет: хоть true, хоть false, хоть ничего не передавай, результат один и тот же. Флаг в этом случае просто игнорируется.
Как воспроизвести
- Подключить MCP-сервер к инстансу Coolify, где есть хотя бы одна база данных с заданными переменными окружения (пароль, строка подключения — что-нибудь чувствительное).
- Вызвать инструмент
env_varsдля ресурса типа «база данных», действиеlist, не задаваяreveal(то есть полагаясь на поведение по умолчанию из документации). - Для сравнения проделать то же самое с приложением и с сервисом.
Ожидаемое поведение
Все три типа ресурсов ведут себя так, как обещает описание инструмента: по умолчанию значения замаскированы как ***, а реальные значения отдаются только при явном reveal=true.
Фактическое поведение
- Список переменных приложения → замаскирован. ✅
- Список переменных сервиса → замаскирован. ✅
- Список переменных базы данных → секреты по умолчанию отдаются в открытом виде, а
revealне действует. ❌
Почему это важно
Переменные окружения базы данных — одни из самых чувствительных данных, к которым вообще прикасается этот сервер: там почти всегда лежат учётные данные и строки подключения. Слой маскирования для того и существует, чтобы такие значения по недосмотру не ушли LLM-клиенту. А сейчас ветка «база данных» проходит сквозь этот заслон насквозь, и, поскольку флаг игнорируется, попросить маскирование тут вообще нельзя. Вдобавок это молча противоречит поведению по умолчанию, заявленному в документации, — тот, кто доверился доку, оказывается введён в заблуждение.