Stu Mason · Folkestone, Kent
One entryClosed issue· StuMason/coolify-mcp· TypeScript

Issue #276 closed: Переменные окружения базы данных по умолчанию возвращаются в открытом виде

Суть проблемы

В описании инструмента env_vars сказано, что значения секретов по умолчанию маскируются (возвращаются как ***), чтобы их случайно не отдать MCP-клиенту, а чтобы увидеть значение в открытом виде, нужно явно передать reveal=true. Для приложений и сервисов это действительно так, а вот для баз данных — нет.

Если запросить список переменных окружения у базы данных, значения приходят в открытом виде сразу же, без какого-либо запроса на это. И что хуже всего — reveal тут вообще ни на что не влияет: хоть true, хоть false, хоть ничего не передавай, результат один и тот же. Флаг в этом случае просто игнорируется.

Как воспроизвести

  1. Подключить MCP-сервер к инстансу Coolify, где есть хотя бы одна база данных с заданными переменными окружения (пароль, строка подключения — что-нибудь чувствительное).
  2. Вызвать инструмент env_vars для ресурса типа «база данных», действие list, не задавая reveal (то есть полагаясь на поведение по умолчанию из документации).
  3. Для сравнения проделать то же самое с приложением и с сервисом.

Ожидаемое поведение

Все три типа ресурсов ведут себя так, как обещает описание инструмента: по умолчанию значения замаскированы как ***, а реальные значения отдаются только при явном reveal=true.

Фактическое поведение

  • Список переменных приложения → замаскирован. ✅
  • Список переменных сервиса → замаскирован. ✅
  • Список переменных базы данных → секреты по умолчанию отдаются в открытом виде, а reveal не действует. ❌

Почему это важно

Переменные окружения базы данных — одни из самых чувствительных данных, к которым вообще прикасается этот сервер: там почти всегда лежат учётные данные и строки подключения. Слой маскирования для того и существует, чтобы такие значения по недосмотру не ушли LLM-клиенту. А сейчас ветка «база данных» проходит сквозь этот заслон насквозь, и, поскольку флаг игнорируется, попросить маскирование тут вообще нельзя. Вдобавок это молча противоречит поведению по умолчанию, заявленному в документации, — тот, кто доверился доку, оказывается введён в заблуждение.