Обзор

Ограничение доступа (scope)

По умолчанию AI-ассистенту доступны все инструменты MCP сервера, включая изменение и удаление ресурсов. Набор инструментов можно ограничить — это полезно, когда ассистенту нельзя доверять опасные операции:

  • режим «только чтение» для диагностики и анализа;
  • работа только с одной сущностью (например, контейнерами);
  • запрет удаления при разрешённых изменениях;
  • явный список из нескольких инструментов для узкой автоматизации.

Ограничение действует и на список инструментов (скрытые tools не видны модели), и на их вызов (вызов скрытого tool отклоняется с ошибкой), поэтому обойти его со стороны клиента нельзя.

Способы передачи ограничений

Способ Параметры Когда использовать
HTTP-заголовки X-MCP-Scope, X-MCP-Tools Клиент поддерживает кастомные заголовки
Query-параметры scope, tools Клиент не поддерживает кастомные заголовки

Приоритет: если заголовок установлен, соответствующий query-параметр игнорируется. Можно комбинировать: tools из заголовка + scope из query (или наоборот). Если ничего не передано — доступны все инструменты.

X-MCP-Scope: скопы по группам

Инструменты объединены в группы (toolsets) по сущностям платформы — имя группы совпадает с общим префиксом её инструментов: container_list, container_get → группа container. Полный состав групп смотрите в разделе Инструменты (tools).

Группа Описание
project Проекты
project_dns DNS-конфигурация проектов
container Контейнеры
network_domain Домены и TLS-сертификаты
network_port Порты и WAF
network_route Маршруты и WAF
network_service Сервисы
repository Репозитории Git и пайплайны
environment_variable Переменные окружения
environment_config Файлы конфигурации
volume Сетевые диски и снапшоты

Почти все инструменты требуют projectId, поэтому read-доступ к проектам добавляется автоматически: при любом ограничении через X-MCP-Scope гарантируется project:read, а при непустом X-MCP-Tools — инструменты project_list и project_get.

Для каждой группы можно разрешить категории операций: read (чтение), write (создание и изменение), delete (удаление).

Формат значения — записи через запятую, категории внутри одной группы разделяются | или +:

Значение Результат
container Полный доступ ко всем инструментам группы
container:read Только чтение в группе
container:read|write Чтение и изменение (без удаления)
* Полный доступ ко всем группам
*:read Все группы только на чтение
*:read|write Всё, кроме удаления
project:read,container Чтение проектов + полный доступ к контейнерам

X-MCP-Tools: явный список инструментов

Значение — имена tools через запятую. Подходит для узкой автоматизации, когда нужны два-три конкретных инструмента:

X-MCP-Tools: container_list,container_get,container_logs

Имена всех инструментов смотрите в разделе Инструменты (tools).

Особенности

  • Регистр и пробелы вокруг значений не учитываются.
  • Неизвестные группы, имена tools и некорректные категории молча игнорируются.
  • Пустые заголовки приравниваются к отсутствующим — полный доступ.
  • Ограничение действует на каждый HTTP-запрос и может меняться между запросами одной сессии.

Примеры

Только чтение всех ресурсов:

curl -X POST https://mcp.dockhost.io/mcp \
  -H "Authorization: Bearer <DOCKHOST_API_TOKEN>" \
  -H "X-MCP-Scope: *:read" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Контейнеры без удаления + чтение репозиториев:

curl -X POST https://mcp.dockhost.io/mcp \
  -H "Authorization: Bearer <DOCKHOST_API_TOKEN>" \
  -H "X-MCP-Scope: container:read|write,repository:read" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

То же через query-параметры (для клиентов без поддержки заголовков):

curl -X POST "https://mcp.dockhost.io/mcp?scope=*:read" \
  -H "Authorization: Bearer <DOCKHOST_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Пример конфигурации клиента с ограничением (Claude Desktop, режим «только чтение»):

{
    "mcpServers": {
        "dockhost": {
            "url": "https://mcp.dockhost.io",
            "headers": {
                "Authorization": "Bearer <DOCKHOST_API_TOKEN>",
                "X-MCP-Scope": "*:read"
            }
        }
    }
}
Назад
Подключение
Далее
Инструменты (tools)
В этой статье
Способы передачи ограничений
X-MCP-Scope: скопы по группам
X-MCP-Tools: явный список инструментов
Особенности
Примеры

Мы используем файлы cookies

Продолжив работу с сайтом, вы соглашаетесь с   политикой использования файлов Cookies