OrygnsCode/opa-mcp-server

OrygnsCode/opa-mcp-server

от orygnscode
MCP сервер для Open Policy Agent: агенты могут писать и выполнять Rego-политики, управлять политиками на сервере, линтить и собирать бандлы. Полезен DevOps и инженерам безопасности для автоматизации политик доступа и IaC.

OPA MCP Server

CI CodeQL npm version Docker pulls OPA Ecosystem License: MIT Node.js opa-mcp-server MCP server

A Model Context Protocol (MCP) server that turns any MCP-compatible client (Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, and others) into a first-class Open Policy Agent and Rego authoring environment.

+--------------------+ MCP/stdio  +-----------------+ spawn/HTTP +---------------------+
|  Claude · Cursor · |----------> | @orygn/opa-mcp  |----------> | opa · regal         |
|   VS Code · ...    |<---------- |                 |<---------- | conftest · REST API  |
+--------------------+  52 tools  +-----------------+            +---------------------+

Status: v0.9.0. Tool surface, error codes, and environment variables follow SemVer from v0.1.0 forward.

Upgrading to 0.9.0: a tool refuses an argument it does not declare, and the error names it; it used to be dropped. A policy or query that does not compile is INVALID_REGO in every tool that runs opa, where several returned EVAL_ERROR. rego_explain_decision returns the trace as readable lines, not OPA's raw events. conftest_test reports a run that evaluated no rule as passed: false, and rego_generate_test_skeleton writes todo_test_ stubs, which opa test skips until they are filled in. Responses are compact JSON.

Инструменты были проиндексированы:
conftest_pullидемпотентныйвнешний мир

Скачивает политики Rego из реестра OCI или репозитория Git в локальную директорию с помощью conftest pull. Используйте это для заполнения локальной директории policy/ перед запуском conftest_test. Требует conftest в PATH или заданную переменную CONFTEST_BINARY. Директория policy должна находиться внутри OPA_MCP_ALLOWED_PATHS. БЕЗОПАСНОСТЬ: скачанные политики - это произвольный исходный код Rego, который будет выполнен conftest_test. Скачивайте только из реестров или репозиториев, которыми вы владеете или которым явно доверяете: вредоносный код политик может использовать встроенные функции OPA (http.send, opa.runtime) для похищения данных или выполнения исходящих сетевых запросов при запуске тестов.

Выполняет команду pull в Conftest.

Параметры
  • policystring

    Локальная директория, куда будут записаны полученные политики. Должна находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Если не указана, используется policy в рабочей директории процесса сервера, как принято в conftest; сама она тоже должна находиться внутри разрешённого корня. Директория очищается перед pull, поэтому не указывайте на ту, где лежит что-то, что хотите сохранить.

  • urlstringобязательный

    URL политики для загрузки. Поддерживаемые схемы: oci://registry/repo:tag (реестр OCI), github.com/org/repo//path (подкаталог GitHub), git::https://example.com/repo//path (универсальный Git). Полный синтаксис URL описан на https://www.conftest.dev/sharing/.

conftest_pushвнешний мир

Упаковывает локальный каталог политик Rego в OCI-артефакт и отправляет его в реестр с помощью conftest push. Учётные данные реестра должны быть предварительно настроены в окружении хоста (docker login, связка ключей ORAS и т. д.). Этот инструмент никогда не обрабатывает учётные данные. Каталог policy должен находиться внутри OPA_MCP_ALLOWED_PATHS. Требуется conftest в PATH или установленная переменная CONFTEST_BINARY.

Отправка через Conftest

Параметры
  • policystring

    Путь к локальному каталогу с Rego-политиками для отправки. Должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS) и существовать. Если не указан, по умолчанию берётся policy в рабочем каталоге процесса сервера, как принято в conftest, и сам он тоже должен находиться внутри разрешённого корня.

  • repositorystringобязательный

    URL OCI-репозитория для отправки политик (например, ghcr.io/my-org/policies:latest). Учётные данные реестра должны быть уже настроены в среде хоста (через docker login, ORAS keychain или REGISTRY_AUTH_FILE). Этот инструмент не принимает и не хранит учётные данные реестра.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

conftest_testвнешний мир

Проверяет файлы конфигурации (манифесты Kubernetes, планы Terraform, Dockerfile, чарты Helm или любые YAML/JSON/HCL/TOML/INI) на соответствие политикам Rego с помощью conftest test. Возвращает результаты pass/fail/warn по каждому файлу и каждому namespace, чтобы точно определить, какие правила политики сработали. Требует наличия conftest в PATH или заданной переменной CONFTEST_BINARY; иначе возвращает CONFTEST_NOT_FOUND. Конфигурацию передавайте через files (пути на диске) или inlineConfig (встроенная строка). Политику передавайте через policy (путь на диске) или inlinePolicy (встроенный исходник Rego). Если не указать policy и inlinePolicy, берётся каталог ./policy по умолчанию от conftest. Политики выполняет conftest, и они могут вызывать встроенные функции OPA, например http.send. Запуск, в котором не выполнилось ни одно правило (неверный namespace или отсутствие правил deny/violation/warn), возвращается как passed: false с nothingEvaluated: true и списком namespace, где правила всё-таки есть, хотя сам conftest в таком случае завершился бы с кодом 0.

Тест Conftest

Параметры
  • allNamespacesboolean

    Проверяет политики, найденные во всех обнаруженных пространствах имён. Переопределяет namespace.

  • combineboolean

    Объединяет все файлы конфигурации в один входной документ перед вычислением. Полезно, когда политикам нужно проверять связи между несколькими файлами.

  • datastring[]

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

  • failOnWarnboolean

    Возвращает passed: false, даже если есть только предупреждения (без критических сбоев).

  • filesstring[]

    Пути файловой системы к файлам конфигурации для вычисления (YAML, JSON, HCL, Dockerfile и т. д.). Каждый путь должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Взаимоисключающий с inlineConfig.

  • inlineConfigstring

    Содержимое конфигурации, передаваемое inline, для проверки (например, манифест Kubernetes в виде строки YAML). Несовместимо с files. По умолчанию формат YAML; чтобы переопределить, задайте inlineConfigParser.

  • inlineConfigParserenum

    Парсер для inlineConfig. Один из: cue, cyclonedx, dockerfile, dotenv, edn, groovy, hcl1, hcl2, hocon, ignore, ini, json, jsonc, jsonnet, nginx, properties, spdx, textproto, toml, vcl, xml, yaml. По умолчанию yaml. Игнорируется, когда используется files (conftest определяет парсер по расширению каждого файла, если не задан parser).

  • inlinePolicystring

    Встроенный исходный код политики Rego. Записывается во временный каталог и передаётся как --policy. Политика должна объявлять package main (или соответствовать параметру namespace). Взаимоисключающий с policy.

  • namespacestring

    Пространство имён Rego (имя пакета), относительно которого выполняется тестирование. По умолчанию main. Чтобы вместо этого протестировать все найденные пространства имён, используйте allNamespaces: true.

  • parserenum

    Принудительно задаёт конкретный парсер для всех входных files через глобальный флаг --parser в conftest, переопределяя определение по расширению. Полезен для файлов, чьё расширение не совпадает с форматом (например, разобрать файл .tfstate как json). Один из: cue, cyclonedx, dockerfile, dotenv, edn, groovy, hcl1, hcl2, hocon, ignore, ini, json, jsonc, jsonnet, nginx, properties, spdx, textproto, toml, vcl, xml, yaml. Для inlineConfig лучше подходит inlineConfigParser.

  • policystring

    Путь к каталогу или файлу с политиками Rego. Должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Взаимоисключающий с inlinePolicy. Не указывайте, чтобы conftest использовал свой каталог по умолчанию ./policy.

  • v0Compatibleboolean

    Читайте политики как Rego v0 (--rego-version v0), синтаксис до OPA 1.0: правила без if, deny[msg] { ... }. conftest по умолчанию читает v1 и отказывается от такой политики.

conftest_verifyвнешний мир

Запускает правила test_* внутри файлов *_test.rego в каталоге политик conftest, проверяя корректность самих политик. Эквивалентно opa test, но использует механизм загрузки политик conftest. Возвращает результаты прохождения/непрохождения для каждого файла и NO_TESTS_FOUND, если в каталоге нет правил тестирования. Требует наличия conftest в PATH или установленной переменной CONFTEST_BINARY; в противном случае возвращает CONFTEST_NOT_FOUND.

Conftest проверяет.

Параметры
  • datastring[]

    Пути к каталогам данных. Каждый должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS).

  • namespacestring

    Пространство имён для проверки. Не указывайте, чтобы проверить все пространства имён.

  • policystring

    Путь к каталогу, в котором лежат политики Rego и тестовые файлы *_test.rego. Должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Пропустите, чтобы использовать каталог ./policy по умолчанию из conftest.

  • v0Compatibleboolean

    Читайте политики как Rego v0 (--rego-version v0), синтаксис до OPA 1.0: правила без if, deny[msg] { ... }. conftest по умолчанию читает v1 и отказывается от такой политики.

mcp_server_infoтолько чтениеидемпотентный

Возвращает имя, версию и сведения о среде выполнения этого экземпляра сервера opa-mcp. Используйте это, когда нужно подтвердить, какая версия opa-mcp запущена, или проверить, что исполняемые файлы OPA, Regal и Conftest доступны.

Информация о сервере MCP

Параметры

Без параметров.

opa_bundle_buildидемпотентный

Собирает развёртываемый пакет из путей политик и данных с помощью opa build. Результат - архив .tar.gz с необязательной встроенной подписью. Поддерживает оптимизацию, настраиваемые строки ревизии и WASM-таргет.

Собрать OPA-пакет

Параметры
  • bundleboolean

    Загружает paths как bundle-файлы или корневые каталоги (--bundle). Неявно включается при указании signingKey и verificationKey; задайте его явно, чтобы пересобрать существующий bundle без подписи.

  • capabilitiesstring

    Путь к JSON-файлу с описанием возможностей.

  • claimsFilestring

    Путь к файлу claims для встроенной подписи.

  • entrypointsstring[]

    Ссылки на точку входа (обязательны при target=wasm или optimize > 0).

  • ignorestring[]

    Шаблоны имён файлов/каталогов, которые игнорируются при загрузке (--ignore), например [".*"], чтобы пропустить скрытые файлы. Это шаблоны имён, а не пути файловой системы.

  • optimizeenum

    Уровень оптимизации (0 = нет, 2 = агрессивный).

  • outputstringобязательный

    Путь к выходному бандлу (обычно *.tar.gz). Должен находиться в разрешённом корне.

  • pathsstring[]обязательный

    Пути к политикам / данным для включения. Каждый должен находиться в разрешённом корне.

  • pruneUnusedboolean

    Исключает зависимые от entrypoints, недостижимые из них (--prune-unused). Особенно полезен в паре с entrypoints.

  • revisionstring

    Строка ревизии бандла, записываемая в манифест.

  • signingAlgstring

    Алгоритм подписи (например, RS256).

  • signingKeystring

    Путь к приватному ключу в формате PEM для подписи собранного бандла (--signing-key). Подразумевает bundle: true, что OPA требует для подписи.

  • targetenum

    Цель сборки (по умолчанию rego; wasm компилируется в WebAssembly).

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

  • v1Compatibleboolean

    Включает поведение, совместимое с OPA v1.0 (--v1-compatible). Влияет на семантику выполнения собранного бандла.

  • verificationKeystring

    Путь к публичному ключу PEM (или файлу секрета HMAC), который используется для повторной проверки существующего подписанного bundle во время сборки (--verification-key). Подразумевает bundle: true, что OPA требует для проверки.

  • verificationKeyIdstring

    Идентификатор ключа для проверки (--verification-key-id, в OPA по умолчанию default).

opa_bundle_signидемпотентный

Подписывает каталог бандла с помощью opa sign. Каталог подписывается на месте: в него записывается .signatures.json, а файлы записываются как <directory name>/<file>, поэтому подписанный каталог проверяется, где бы он ни был размещён, при условии что его имя не изменилось, с помощью opa_bundle_verify или с помощью opa build или opa run --bundle <name> из родительского каталога. Архив отклоняется: OPA читает подпись изнутри архива, поэтому подписанный архив создаётся с помощью opa_bundle_build с signingKey. Ключом служит закрытый ключ PEM (RSA или ECDSA); для HMAC-алгоритмов передайте файл, содержащий секрет. Дополнительные утверждения, такие как keyid и scope, берутся из claimsFile. Возвращает записанный путь, алгоритм и количество охваченных файлов.

Подписывает OPA-бандл.

Параметры
  • bundlestringобязательный

    Путь к каталогу bundle. Должен находиться внутри разрешённого корня. Архив отклоняется, так как OPA читает подпись изнутри него; соберите подписанный архив с помощью opa_bundle_build и signingKey.

  • claimsFilestring

    Путь к JSON-файлу с дополнительными утверждениями для подписи, например {"keyid": "...", "scope": "..."}. Должен находиться внутри разрешённого корня.

  • signingAlgstring

    Алгоритм подписи: RS256 (по умолчанию), RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512.

  • signingKeystringобязательный

    Путь к приватному ключу PEM (RSA или ECDSA) или, для алгоритмов HMAC, к файлу, содержащему секрет. Должен находиться внутри разрешённого корня.

opa_bundle_verifyтолько чтениеидемпотентный

Проверяет подпись подписанного каталога бандла или архива .tar.gz с помощью открытого ключа. У OPA нет отдельной команды verify, поэтому запускает opa build --verification-key с выводом в приватный временный файл, который затем удаляется. Каталог проверяется по имени из родительского каталога, так же, как opa_bundle_sign подписывает его. OPA читает ключ, проверяет JWT в .signatures.json, сравнивает утверждение scope, затем проверяет каждый файл: Rego-файлы по дайджесту перед разбором, data-файлы и .manifest по разобранному значению, поэтому не поддающийся разбору data-файл не проходит проверку до сравнения дайджеста. Сбои возвращают INVALID_BUNDLE с details.reason, установленным в одно из значений: signature_invalid, scope_mismatch, file_modified, file_added, file_missing, file_unparseable, unsigned, signatures_malformed, not_a_bundle, bundle_load_error или unknown, когда сообщение не распознано; сырой вывод находится в details. Если OPA не может использовать ключ или алгоритм, возвращается INVALID_INPUT. Передавайте scope точно таким же, каким он был при подписании бандла. С одним ключом OPA не проверяет verificationKeyId на соответствие утверждению keyid подписи. verified: true возвращается только тогда, когда OPA загрузил бандл с целой подписью.

Проверяет подпись OPA-бандла.

Параметры
  • bundlestringобязательный

    Путь к каталогу подписанного bundle или архиву .tar.gz. Должен находиться внутри разрешённого корневого каталога.

  • scopestring

    Ожидается claim scope в подписи. Передайте ровно то значение, с которым был подписан bundle, и ничего, если он был подписан без него; иначе причина сбоя: scope_mismatch.

  • signingAlgstring

    Алгоритм подписи, использованный при подписании бандла (например, RS256, PS256, ES256, HS256). По умолчанию: RS256.

  • v0Compatibleboolean

    Загружает bundle как Rego v0 (--v0-compatible). В противном случае политика, написанная до Rego v1, не загрузится, после того как подпись и дайджесты уже проверены.

  • verificationKeystringобязательный

    Путь к PEM-файлу, содержащему открытый ключ RSA или ECDSA, либо для алгоритмов HMAC файл с секретом. Должен находиться внутри разрешённого корня.

  • verificationKeyIdstring

    Имя, под которым зарегистрирован ключ для OPA (--verification-key-id, по умолчанию default). Если ключ один, OPA проверяет по нему независимо от утверждения keyid в подписи, поэтому это редко требуется задавать.

opa_compile_queryтолько чтениеидемпотентныйвнешний мир

Отправляет запрос к конечной точке /v1/compile сервера OPA для частичной оценки. Возвращает остаточный запрос - то, что остаётся после подстановки всего известного.

Компилирует (частично вычисляет) запрос в OPA.

Параметры
  • inputany

    Необязательный частичный входной документ.

  • querystringобязательный

    Запрос Rego для компиляции, например «data.rbac.allow == true».

  • unknownsstring[]

    Ссылки, которые считаются неизвестными (по умолчанию: ["input"]).

opa_configтолько чтениеидемпотентныйвнешний мир

Возвращает конфигурацию запущенного сервера OPA из GET /v1/config. OPA опускает блок credentials, но возвращает services.*.headers без изменений: это обычное место для API-ключа или bearer-токена, поэтому эти значения здесь скрыты, а имена заголовков сохранены.

Конфигурация OPA

Параметры

Без параметров.

opa_delete_dataвнешний мир

Удаляет документ из хранилища данных OPA по указанному пути. path читается как разделённый точками (users.alice), если только он не содержит слэш, в этом случае слэш служит единственным разделителем (users/alice), поэтому такой ключ, как example.com, доступен как hosts/example.com. Передавайте segments вместо этого, когда ключ содержит оба разделителя. OPA отвечает 204 No Content при успехе; если по указанному пути документа нет, OPA возвращает 404, который сопоставляется с DATA_NOT_FOUND. Удаление корневого пути (/v1/data/ сам по себе) намеренно исключено - укажите хотя бы один сегмент пути.

Удаляет документ данных из OPA.

Параметры
  • pathstring

    Путь к данным для удаления, например "users.alice" или "users/alice". Глубина должна быть не меньше одного сегмента.

  • segmentsstring[]

    Путь в виде буквальных сегментов ключа, например ["labels", "app.kubernetes.io/name"]. Используйте вместо path, когда ключ содержит точку или слэш.

opa_delete_policyвнешний мир

Удаляет политику по ID с запущенного сервера OPA.

Удаляет политику OPA.

Параметры
  • idstringобязательный

    ID политики для удаления.

opa_execвнешний мир

Оценивает решение политики для одного или нескольких входных файлов с помощью opa exec --format=json. В отличие от rego_eval (один вход), opa exec обрабатывает каждый файл независимо и возвращает результат по каждому файлу: это идеально для CI-пайплайнов, которые проверяют много конфигурационных файлов на соответствие политике одним вызовом. Принимает bundle для бандла или dataPaths для обычных .rego, JSON и YAML файлов и директорий, которые загружаются так же, как их загружает opa eval --data; эти два параметра взаимоисключающие. Каждый файл, для которого оценка завершилась ошибкой, попадает в results с полем error вместо поля result. Один из параметров fail/failDefined/failNonEmpty превращает вызов в CI-гейт: тогда результат сообщает failed: true (вместо ошибки), когда условие гейта выполнено.

Пакетно оценивает политику OPA по входным файлам.

Параметры
  • bundlestring

    Путь к каталогу OPA bundle или архиву .tar.gz, который загружается как источник политики. Несовместим с dataPaths.

  • dataPathsstring[]

    Файлы и каталоги политик и данных, загружаемые так же, как их загружает opa eval --data: файл .rego как модуль, JSON или YAML файл, сливаемый в корень данных, каталог рекурсивно, так что каждый JSON и YAML файл в нём - это данные, и он должен парситься. Одно отличие: архив bundle (.tar.gz) внутри каталога не загружается, и warnings называет его. bundle, переданный здесь напрямую (архив или каталог, содержащий .manifest), загружается как bundle; bundle и обычные пути нельзя смешивать. Чтобы загрузить каталог как bundle, читая только его файлы .rego и те, что названы data.json, data.yaml или data.yml, передайте его как bundle. Взаимоисключающий с bundle.

  • decisionstringобязательный

    Точка входа политики, которую нужно вычислять для каждого входа, например "authz/allow". opa exec задаёт решение с помощью пути, разделённого слэшами, без префикса data.; формы ссылок Rego (data.authz.allow, authz.allow) здесь принимаются и преобразуются, потому что если передать одну из них напрямую, каждый файл останется неопределённым.

  • failboolean

    CI-гейт: сообщает failed: true, если хотя бы одно решение не определено или выдаёт ошибку. Взаимоисключающий с failDefined и failNonEmpty.

  • failDefinedboolean

    CI-гейт: сообщает failed: true, когда определено хотя бы одно решение или есть ошибки. Применяется, когда заданный результат означает нарушение. Взаимоисключающий с fail и failNonEmpty.

  • failNonEmptyboolean

    CI gate: сообщает failed: true, когда любой результат решения непустой или содержит ошибки. Несовместим с fail и failDefined.

  • inputPathsstring[]обязательный

    Один или несколько путей к входным файлам JSON/YAML либо каталог с входными файлами. OPA обрабатывает каждый файл независимо. Каждый путь должен лежать внутри разрешённого корня.

  • timeoutstring

    Таймаут вычисления для каждого exec в формате Go duration, например "30s" или "5m". По-прежнему ограничен таймаутом подпроцесса сервера (OPA_MCP_TIMEOUT_MS).

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

  • v1Compatibleboolean

    Включает варианты поведения, совместимые с OPA v1.0 (--v1-compatible).

opa_get_dataтолько чтениеидемпотентныйвнешний мир

Читает путь из иерархии данных OPA. Путь читается через точки (users.alice), если в нём нет слэша, в этом случае слэш является единственным разделителем (users/alice), поэтому ключ типа example.com доступен как hosts/example.com. Передавайте segments, когда ключ содержит и то, и другое.

Читает данные из OPA

Параметры
  • pathstring

    Путь к данным внутри data., например "users" или "users/alice".

  • segmentsstring[]

    Путь в виде литеральных сегментов ключа, например ["labels", "app.kubernetes.io/name"]. Используйте вместо path, когда ключ содержит точку или слэш.

opa_get_policyтолько чтениеидемпотентныйвнешний мир

Получает отдельную политику по ID с работающего сервера OPA. Возвращает исходный код Rego; распарсенный AST опускается, если его не запросили, поскольку он примерно в сорок раз больше исходного кода, из которого он получен. Используйте rego_parse_ast на исходном коде, когда нужен AST.

Получает политику OPA по ID

Параметры
  • idstringобязательный

    ID политики, например "rbac" или "policies/auth/main".

  • includeAstboolean

    Включает разобранный AST OPA вместе с исходным кодом. По умолчанию выключено.

opa_healthтолько чтениеидемпотентныйвнешний мир

Обращается к конечной точке OPA /health. Сервер в ответ сообщает { healthy: true } при коде 200 и { healthy: false } с собственным объяснением OPA в противном случае, поэтому неактивированный бандл - это результат проверки здоровья, а не ошибка инструмента. OPA_UNREACHABLE означает, что сервер вообще недоступен. Поддерживает флаги запроса bundles и plugins, которые требуют, чтобы эти подсистемы тоже были исправны.

Проверка работоспособности OPA

Параметры
  • bundlesboolean

    Требует, чтобы плагин bundle также был в рабочем состоянии.

  • pluginsboolean

    Требует, чтобы все плагины были работоспособны.

opa_list_policiesтолько чтениеидемпотентныйвнешний мир

Перечисляет политики, зарегистрированные на работающем сервере OPA. Возвращает идентификаторы политик и их количество. Установите includeSource для текста Rego каждой политики или includeAst для разобранного AST каждой политики; оба по умолчанию выключены, потому что любой из них выводит список любого реального размера за пределы ограничения ответа.

Перечисляет политики OPA.

Параметры
  • includeAstboolean

    Включает разобранное AST каждой политики. По умолчанию выключено: оно примерно в сорок раз больше исходного текста и превысит лимит ответа на любых серверах, кроме самых маленьких.

  • includeSourceboolean

    Включает исходный код Rego каждой политики. По умолчанию выключено: получает одну политику через opa_get_policy, а не все сразу.

opa_patch_dataвнешний мир

Применяет JSON Patch (RFC 6902) к документу данных. Каждая операция имеет вид { op, path, value? }. Опустите и path, и segments, чтобы применить патч к корню иерархии данных: так добавляется целый новый документ верхнего уровня.

Обновляет данные в OPA

Параметры
  • operationsobject[]обязательный

    Массив операций JSON Patch

  • pathstring

    Путь к данным, к которому применяется патч.

  • segmentsstring[]

    Путь в виде буквальных сегментов ключа, например ["labels", "app.kubernetes.io/name"]. Используйте вместо path, когда ключ содержит точку или слэш.

opa_put_dataидемпотентныйвнешний мир

Записывает или заменяет значение по заданному пути данных. Тело отправляется в формате JSON. Путь path читается через точки (users.alice), если только он не содержит косую черту: в этом случае косая черта - единственный разделитель (users/alice), поэтому такой ключ, как example.com, доступен как hosts/example.com. Передавайте segments вместо path, когда ключ содержит и точки, и косые черты.

Записывает данные в OPA

Параметры
  • pathstring

    Путь к данным для записи.

  • segmentsstring[]

    Путь в виде буквальных сегментов ключа, например ["labels", "app.kubernetes.io/name"]. Используйте вместо path, когда ключ содержит точку или слэш.

  • valueany

    Значение JSON, которое нужно сохранить по этому пути.

opa_put_policyидемпотентныйвнешний мир

Загружает политику Rego под указанным ID. Заменяет любую существующую политику с этим ID; replaced сообщает, была ли она. Политика загружается как raw text/plain, и OPA компилирует её на сервере, поэтому политика, которая не компилируется, возвращается как INVALID_REGO с ошибками OPA, и ничего не сохраняется.

Загрузить или заменить политику OPA

Параметры
  • idstringобязательный

    ID политики для создания или замены.

  • sourcestringобязательный

    Исходный код Rego.

opa_query_decisionтолько чтениеидемпотентныйвнешний мир

Оценивает решение на работающем сервере OPA. Отправляет POST на путь data с {input} и возвращает то, что выдаёт правило, плюс defined: false, когда путь не вернул значение, о чём OPA сообщает, не включая result. Undefined - не false; вызывающий, который трактует его как false или как allow, решает, исходя из того, чего политика не говорила. Спрашивает у сервера: «при таком входе что говорит data.X.allow?»

Запрашивает решение OPA

Параметры
  • explainenum

    Включает трассировку на запрошенном уровне.

  • inputany

    Входной документ для сравнения.

  • metricsboolean

    Добавляйте метрики в ответ.

  • pathstring

    Путь решения в data., например "rbac/allow" или "rbac.allow".

  • segmentsstring[]

    Путь в виде буквальных сегментов ключа, например ["labels", "app.kubernetes.io/name"]. Используйте вместо path, когда ключ содержит точку или слэш.

opa_statusтолько чтениеидемпотентныйвнешний мир

Возвращает конфигурацию запущенного сервера OPA через GET /v1/config. Возвращает тот же базовый документ, что и opa_config, но под ключом status: для удобства агентов, которые хотят проверить, «что сейчас запущено», а не «с какой конфигурацией сервер был запущен». Ответ включает настройки пакетов, настройки журнала решений и конфигурацию плагинов в том виде, как OPA сообщил их при запуске. Значения заголовков сервисов маскируются, поскольку OPA возвращает их как есть, а заголовок - обычное место для API-ключа.

Статус OPA

Параметры

Без параметров.

rego_benchвнешний мир

Бенчмаркает запрос Rego с политикой и входными данными с помощью opa bench. Возвращает статистические данные о времени выполнения: количество итераций, ns/op и количество выделений памяти. Используйте его, чтобы находить медленные правила.

Замеряет производительность запроса Rego

Параметры
  • countinteger

    Число повторов бенчмарка (--count N). По умолчанию берётся встроенное значение OPA, равное единице. Если больше единицы, каждое повторение возвращается в runs, fastest указывает индекс того запуска, из которого взяты показатели верхнего уровня, а raw опускается, потому что этот документ уже есть в runs.

  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному файлу JSON.

  • pathsstring[]

    Пути к политикам / данным для загрузки. Каждый должен находиться в разрешённом корне.

  • querystringобязательный

    Запрос Rego для бенчмарка.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_capabilitiesтолько чтениеидемпотентный

Возвращает возможности OPA: доступные builtins, будущие ключевые слова, функции и версии WASM ABI. С параметром current: true возвращает возможности запущенного OPA. С параметром version: "v1.19.0" возвращает возможности конкретной версии. Без обоих параметров перечисляет доступные именованные версии. По умолчанию (names_only: true) возвращает только имена builtins и их количество, чтобы оставаться в пределах ограничений на размер ответа. С параметром builtins: [...] возвращает полные сигнатуры типов и документацию для нескольких указанных builtins; names_only: false возвращает все полные записи, для чего требуется поднять OPA_MCP_MAX_RESPONSE_BYTES выше значения по умолчанию.

Возможности OPA

Параметры
  • builtinsstring[]

    Возвращает полную запись (сигнатуру типа, документацию, метаданные) для до 100 встроенных имён, только точные совпадения. matched считает возвращённые записи, а имена, которые не найдены, перечисляются в missing. Когда записи не укладываются в лимит ответа, инструмент возвращает OUTPUT_TOO_LARGE вместо усечённого результата; запросите меньше имён. Не комбинируйте с names_only: true, который запрашивает противоположное.

  • currentboolean

    Выводит возможности установленной в настоящий момент OPA. Взаимоисключающий с version.

  • names_onlyboolean

    Если указано true или параметр опущен, возвращает только имена встроенных функций, их количество, future keywords и features. Полная полезная нагрузка для каждой встроенной функции превышает стандартный лимит ответа (OPA_MCP_MAX_RESPONSE_BYTES), поэтому names_only: false сам по себе требует поднять этот лимит; вместо этого используйте builtins, чтобы получить полные записи для нескольких имён.

  • versionstring

    Конкретная версия OPA capabilities (например, "v1.21.0"). Если ни один из флагов не задан, выводит список доступных версий.

rego_checkтолько чтениеидемпотентный

Проверяет типы Rego с помощью opa check. Возвращает { valid: true, errors: [] } при успехе или список структурированных диагностических сообщений с указанием файла и строки при ошибке. Укажите либо source для встроенной проверки, либо paths для проверки файлов или каталогов.

Check Rego

Параметры
  • bundleboolean

    Загружает paths как bundle-файлы или корневые каталоги (--bundle). Допустимо только с paths, не с inline source.

  • capabilitiesstring

    Путь к JSON-файлу capabilities, ограничивающему разрешённые builtins.

  • maxErrorsinteger

    Максимальное число ошибок, собираемых до того, как opa check прервёт компиляцию (--max-errors, по умолчанию в OPA - 10). Увеличьте его, чтобы за один проход получить больше диагностических сообщений из сильно сломанной политики.

  • pathsstring[]

    Пути файловой системы для проверки. Каждый путь должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS).

  • schemaDirstring

    Каталог схем для валидации входных данных и данных.

  • sourcestring

    Встроенный исходный код Rego. Взаимоисключающий с paths.

  • strictboolean

    Включает строгий режим: завершает с ошибкой при неиспользуемых переменных, устаревших встроенных функциях и т. д.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_check_schemaтолько чтениеидемпотентный

Проверяет, что ссылки на поля input.* в политике Rego согласованы с JSON Schema с помощью opa check --schema. Каждое поле, которое политика читает из input, должно существовать в схеме; несоответствия проявляются как диагностические сообщения rego_type_error с указанием файла и строки. Возвращает { valid: true, errors: [] }, когда все ссылки соответствуют схеме, или { valid: false, errors: [...] } со структурированной диагностикой, когда не соответствуют. Принимает схему во встроенном виде (вывод schema от rego_infer_input_schema передаётся напрямую как inlineSchema) или как путь к файлу JSON Schema на диске, или к каталогу схем, когда политика объявляет аннотации schemas: (schemaPath). Задаёт source для встроенного Rego или paths для проверки файлов и каталогов.

Проверяет Rego на соответствие JSON Schema.

Параметры
  • inlineSchemaobject

    Объект JSON Schema (draft-07), описывающий ожидаемую структуру документа input. Взаимоисключающий с schemaPath. Принимает поле schema из вывода rego_infer_input_schema напрямую.

  • pathsstring[]

    Пути в файловой системе к файлам политик или каталогам для проверки. Каждый путь должен лежать внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Несовместим с source.

  • schemaPathstring

    Путь к файлу JSON Schema на диске для валидации input или к каталогу схем, когда политика содержит аннотации # METADATA / schemas:, указывающие файлы в нём (opa читает каталог только через них). Должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Несовместим с inlineSchema.

  • sourcestring

    Встроенный исходный код Rego для проверки на соответствие схеме. Несовместим с paths.

  • strictboolean

    Включает строгий режим - также завершается с ошибкой при неиспользуемых переменных, устаревших встроенных функциях и других некритичных проблемах вдобавок к нарушениям схемы.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_compile_queryвнешний мир

Выполняет частичную оценку запроса, подставляет известные значения и возвращает остаточную политику. По умолчанию присваивает параметру unknowns значение ["input"] (считает входные данные неизвестными), поэтому остаточная политика кодирует утверждение «при заданном входе X истинным должно быть следующее». Используйте это для офлайн-нарезки политик или предварительного вычисления наборов решений.

Частично вычисляет запрос Rego.

Параметры
  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному JSON-файлу. Взаимоисключающий с input.

  • partialboolean

    Запускает частичное вычисление вместо полного.

  • pathsstring[]

    Пути к файлам или каталогам политики / данных. Каждый должен находиться внутри разрешённого корня.

  • querystringобязательный

    Запрос Rego для вычисления, например "data.example.allow".

  • sourcestring

    Встроенный исходный код политики Rego. Необязательно: без source или paths запрос выполняется сам по себе, этого достаточно, чтобы попробовать встроенную функцию или выражение.

  • strictBuiltinErrorsboolean

    Обрабатывает встроенные ошибки как фатальные, а не возвращает undefined.

  • unknownsstring[]

    Refs, которые нужно считать неизвестными при частичном вычислении.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_coverage_gapsвнешний мир

Запускает opa test --coverage и возвращает разбивку по файлам непокрытых диапазонов строк. Определяет, какие правила или ветви ещё не проверены тестами. Файлы сортируются по возрастанию покрытия, поэтому файлы с худшим покрытием отображаются первыми. Использует порог для ограничения отчёта файлами ниже целевого процента покрытия.

Пробелы в тестовом покрытии Rego

Параметры
  • pathsstring[]обязательный

    Тестирует каталоги или файлы. opa test ищет файлы *_test.rego рядом с исходными файлами.

  • runPatternstring

    Запускает только те тесты, имена которых соответствуют этому регулярному выражению.

  • thresholdnumber

    Выводит только файлы с покрытием ниже указанного процента (0-100). Если параметр не указан, выводятся все файлы с непокрытыми диапазонами.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_depsтолько чтениеидемпотентный

Статический анализ зависимостей для ссылки Rego. При заданной целевой ссылке вида "data.example.allow" возвращает ссылки на базовые документы (листья input/data) и ссылки на виртуальные документы (правила), от которых она зависит транзитивно.

Анализ зависимостей Rego

Параметры
  • pathsstring[]обязательный

    Пути к политикам / данным для загрузки перед вычислением зависимостей. Каждый должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS).

  • refstringобязательный

    Ссылка, для которой вычисляются зависимости, например "data.example.allow".

rego_describe_policyтолько чтениеидемпотентный

Разбирает политику Rego и возвращает структурированную сводку: package, imports и rules. Каждое правило сообщает clauseCount (сколько определений разделяют одно имя), isDefault (true, если любое предложение является default), hasArgs, bodyLength (общее количество выражений тела во всех предложениях) и inline annotations. Полезен как первый шаг в любом рабочем процессе «что делает эта политика».

Описывает политику Rego.

Параметры
  • sourcestringобязательный

    Исходный код Rego для описания.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_evalвнешний мир

Вычисляет Rego-запрос с учётом политики и входного документа с помощью opa eval. Возвращает стандартную структуру {result: [...]} плюс defined, который равен false, когда запрос не дал значения (undefined - это не false), и printed - строки, которые политика вывела через print(). Основной инструмент для написания политик. Политика необязательна, поэтому один запрос проверяет встроенную функцию или выражение. Передайте inputs, чтобы вычислить один запрос по многим входным документам за один вызов, и v0Compatible для политики, всё ещё написанной на pre-1.0 Rego.

Оценивает запрос Rego

Параметры
  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному JSON-файлу. Взаимоисключающий с input.

  • inputsany[]

    Несколько входных документов для оценки одного и того же запроса, до 50, вместо input/inputPath. Результат: batch; одна запись на каждый вход, по порядку, каждая содержит result этого входа (пустой, если запрос для него не определён) или error. Вход, который даёт сбой во время выполнения, не останавливает остальные. Политика, которая не компилируется, приводит к сбою вызова, а после тайм-аута входа входы, ещё не запущенные, возвращаются как NOT_EVALUATED.

  • partialboolean

    Запускает частичное вычисление вместо полного.

  • pathsstring[]

    Пути к файлам или каталогам политики / данных. Каждый должен находиться внутри разрешённого корня.

  • querystringобязательный

    Запрос Rego для вычисления, например "data.example.allow".

  • sourcestring

    Встроенный исходный код политики Rego. Необязательно: без source или paths запрос выполняется сам по себе, этого достаточно, чтобы попробовать встроенную функцию или выражение.

  • strictBuiltinErrorsboolean

    Обрабатывает встроенные ошибки как фатальные, а не возвращает undefined.

  • unknownsstring[]

    Refs, которые нужно считать неизвестными при частичном вычислении.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_eval_with_coverageвнешний мир

Выполняет оценку с флагом --coverage и возвращает построчные данные покрытия. Полезно для проверки, что тесты действительно проверяют правила, для которых предназначены.

Выполняет Rego с покрытием.

Параметры
  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному JSON-файлу. Взаимоисключающий с input.

  • partialboolean

    Запускает частичное вычисление вместо полного.

  • pathsstring[]

    Пути к файлам или каталогам политики / данных. Каждый должен находиться внутри разрешённого корня.

  • querystringобязательный

    Запрос Rego для вычисления, например "data.example.allow".

  • sourcestring

    Встроенный исходный код политики Rego. Необязательно: без source или paths запрос выполняется сам по себе, этого достаточно, чтобы попробовать встроенную функцию или выражение.

  • strictBuiltinErrorsboolean

    Обрабатывает встроенные ошибки как фатальные, а не возвращает undefined.

  • unknownsstring[]

    Refs, которые нужно считать неизвестными при частичном вычислении.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_eval_with_explainвнешний мир

Вычисляет с --explain=full и возвращает сырые события трассировки OPA (с их узлами AST) вместе с результатом. Для читаемой трассировки используйте rego_explain_decision, который отображает те же события в виде строк. Сырые события большие: при превышении лимита ответа сначала отбрасываются значения связанных переменных, затем завершающие события (explanationTruncated), а результат сохраняется.

Вычисляет Rego с трассировкой выполнения

Параметры
  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному JSON-файлу. Взаимоисключающий с input.

  • partialboolean

    Запускает частичное вычисление вместо полного.

  • pathsstring[]

    Пути к файлам или каталогам политики / данных. Каждый должен находиться внутри разрешённого корня.

  • querystringобязательный

    Запрос Rego для вычисления, например "data.example.allow".

  • sourcestring

    Встроенный исходный код политики Rego. Необязательно: без source или paths запрос выполняется сам по себе, этого достаточно, чтобы попробовать встроенную функцию или выражение.

  • strictBuiltinErrorsboolean

    Обрабатывает встроенные ошибки как фатальные, а не возвращает undefined.

  • unknownsstring[]

    Refs, которые нужно считать неизвестными при частичном вычислении.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_eval_with_profileвнешний мир

Оценивает с помощью --profile и возвращает время выполнения и количество оценок для каждого правила. Используйте это, чтобы находить горячие правила в медленных политиках.

Выполняет Rego с профилированием

Параметры
  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному JSON-файлу. Взаимоисключающий с input.

  • partialboolean

    Запускает частичное вычисление вместо полного.

  • pathsstring[]

    Пути к файлам или каталогам политики / данных. Каждый должен находиться внутри разрешённого корня.

  • querystringобязательный

    Запрос Rego для вычисления, например "data.example.allow".

  • sourcestring

    Встроенный исходный код политики Rego. Необязательно: без source или paths запрос выполняется сам по себе, этого достаточно, чтобы попробовать встроенную функцию или выражение.

  • strictBuiltinErrorsboolean

    Обрабатывает встроенные ошибки как фатальные, а не возвращает undefined.

  • unknownsstring[]

    Refs, которые нужно считать неизвестными при частичном вычислении.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_explain_decisionвнешний мир

Выполняет Rego-запрос с полной трассировкой и возвращает результат, правила, которые были вычислены (rulesEvaluated), и те, что вернули значение (rulesFired), а также трассировку в виде читаемых строк: местоположение, вложенность, операция, выражение в синтаксисе Rego и значения переменных, которые оно называет. События Backtracking (Redo) не включаются. Помогает ответить на вопросы «почему отказано?» или «почему это правило не совпало?»: строки Fail называют условие, которое остановило правило. Трассировка, которая длиннее лимита ответа, обрезается с конца (traceTruncated); сузьте запрос или входные данные, чтобы увидеть остальное.

Объясни решение Rego.

Параметры
  • inputany

    Встроенный входной документ.

  • inputPathstring

    Путь к входному JSON-файлу. Взаимоисключающий с input.

  • partialboolean

    Запускает частичное вычисление вместо полного.

  • pathsstring[]

    Пути к файлам или каталогам политики / данных. Каждый должен находиться внутри разрешённого корня.

  • querystringобязательный

    Запрос Rego для вычисления, например "data.example.allow".

  • sourcestring

    Встроенный исходный код политики Rego. Необязательно: без source или paths запрос выполняется сам по себе, этого достаточно, чтобы попробовать встроенную функцию или выражение.

  • strictBuiltinErrorsboolean

    Обрабатывает встроенные ошибки как фатальные, а не возвращает undefined.

  • unknownsstring[]

    Refs, которые нужно считать неизвестными при частичном вычислении.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_explain_undefinedвнешний мир

Диагностирует, почему запрос Rego с полным путём (например, «data.authz.allow») не возвращает значение или откатывается к значению по умолчанию. Объединяет обычный eval, eval с полной трассировкой и AST-анализ по каждому условию, чтобы определить точное выражение тела, блокирующее каждое правило. Обрабатывает и сбои во время выполнения (на основе трассировки), и отсечение индексатором (отдельный eval условия). Правило, записанное с default allow := false, всегда имеет значение, поэтому queryResult сообщает для него default, и дальше идёт тот же разбор по каждому правилу: вопрос «почему allow имеет значение false» - именно на него он и отвечает. Правило с несколькими значениями, например deny contains msg if ..., которое не содержит ни одного элемента, сообщает empty с тем же разбором, что отвечает на вопрос «почему это не было запрещено». Возвращает структурированный разбор того, какие условия заблокировали каждое правило, плюс понятную человеку сводку. paths может указывать каталоги, в которых ищутся модули, объявляющие запрашиваемый пакет.

Объясняет, почему запрос Rego не определён.

Параметры
  • inputany

    Входной документ (значение JSON) для запроса.

  • inputPathstring

    Путь к входному JSON-файлу.

  • pathsstring[]

    Пути к политикам и данным для загрузки, как в rego_eval: файлы .rego, файлы данных или каталоги (обходятся в поисках файлов .rego). Взаимоисключающие с source.

  • querystringобязательный

    Полная ссылка на правило для объяснения, например "data.authz.allow". Должна совпадать с путём, который вы передаёте в rego_eval.

  • sourcestring

    Встроенный исходный код Rego для анализа. Взаимоисключающий с paths.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_fixвнешний мир

Запустите regal fix, чтобы автоматически применить механические исправления. Regal 0.42 исправляет opa-fmt, use-rego-v1, use-assignment-operator, no-whitespace-comment, directory-package-mismatch, non-raw-regex-pattern, prefer-equals-comparison, redundant-existence-check и constant-condition; более старые версии исправляют лишь часть из них. Используйте dryRun: true, чтобы просмотреть изменения перед изменением файлов. ПРИМЕЧАНИЕ: directory-package-mismatch перемещает файлы в соответствии с путём пакета, используйте disable: ["directory-package-mismatch"], чтобы пропустить его. Regal до версии 0.41 отказывается принимать файлы с незакоммиченными изменениями git, если не задано force: true. Требуется regal.

Автоматически исправляет нарушения Rego.

Параметры
  • configFilestring

    Путь к файлу конфигурации Regal (.regal/config.yaml).

  • disablestring[]

    Отключает определённые правила исправления. Пригодится, чтобы пропустить directory-package-mismatch, если не хотите, чтобы файлы перемещались.

  • disableCategorystring[]

    Отключает все правила в категории.

  • dryRunboolean

    Показывает, что будет исправлено, не изменяя никаких файлов. Рекомендуется перед первым реальным запуском.

  • enablestring[]

    Включает конкретные правила исправления.

  • enableCategorystring[]

    Включает все правила в категории.

  • forceboolean

    В Regal до версии 0.41 разрешено исправлять файлы с незакоммиченными изменениями git; в противном случае эти версии их отклоняют. Regal 0.41 убрал эту проверку, и флаг ему не отправляется.

  • ignoreFilesstring[]

    Glob-шаблоны для исключения из исправления.

  • pathsstring[]обязательный

    Файлы политик или каталоги для исправления. Каждый должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS).

rego_formatтолько чтениеидемпотентный

Форматирует исходный код Rego с помощью opa fmt. Возвращает отформатированный исходник и флаг changed, указывающий, был ли входной код уже каноническим. Когда в исходнике используется строковая интерполяция (синтаксис $"..." или $...) и обнаружена OPA v1.12.0 или v1.12.1, инструмент предупреждает о проблеме или блокирует форматирование из-за известной ошибки OPA, которая портит escape-последовательности { (исправлено в OPA v1.12.2).

Форматирует Rego.

Параметры
  • sourcestringобязательный

    Исходный код Rego для форматирования.

  • v0Compatibleboolean

    Форматирует политику, написанную на pre-1.0 Rego, как pre-1.0 Rego (--v0-compatible), оставляя её синтаксис без изменений. Иначе OPA 1.x её отклоняет. Чтобы вместо этого преобразовать её в Rego v1, используйте rego_migrate_v1.

rego_format_writeидемпотентный

Запускает opa fmt --write для канонического форматирования одного или нескольких Rego-файлов или директорий на месте. При dryRun: true показывает, какие файлы изменятся, не внося в них правок. Возвращает список файлов, которые были (или будут) переформатированы. В отличие от rego_format, который возвращает отформатированный исходный код в виде строки, этот инструмент записывает результат непосредственно на диск. Поддерживает флаги regoV1, v0Compatible и v1Compatible для форматирования под конкретную версию. Если какой-либо файл не удаётся разобрать, операция прерывается, и никакие файлы не записываются.

Форматирует файлы Rego на месте.

Параметры
  • dryRunboolean

    Показывает, какие файлы будут переформатированы, не изменяя их. Рекомендуется перед первым реальным запуском.

  • pathsstring[]обязательный

    Файлы или каталоги политик для форматирования на месте. Каждый должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS).

  • regoV1boolean

    Форматирует модуль(и), чтобы он(и) был(и) совместим(ы) и с Rego v1, и с текущей версией OPA. Добавляет import rego.v1, где его нет.

  • v0Compatibleboolean

    Используйте поведение и синтаксис OPA, действовавшие до релиза v1.0.

  • v1Compatibleboolean

    Использует поведение, совместимое с OPA v1.0.

rego_generate_test_skeletonтолько чтениеидемпотентный

Генерирует каркас *_test.rego из политики. Разбирает AST, находит каждое не-тестовое правило и создаёт по одной заглушке теста на правило. Существующие правила test_* и todo_test_* пропускаются автоматически: заглушки получают только рабочие правила. Каждая заглушка - это правило todo_test_, которое opa test помечает как пропущенное (и завершается с ненулевым кодом), пока не подставлены реалистичный вход и ожидаемое значение и правило не переименовано в test_: иначе заглушечный вход с заглушечным ожиданием пройдёт проверку, ничего при этом не проверяя. Обход AST определяет, к каким полям input.* обращается политика; выведенная структура подставляется как заглушка with input as {...} в каждую заглушку, так что разработчику остаётся только вписать реалистичные значения, а не угадывать структуру. При tableStyle: true каждая заглушка использует цикл every tc in cases { ... }, чтобы можно было добавить несколько пар вход/ожидание без дублирования кода проверок. Поле inferredInputShape в ответе показывает найденную структуру для справки.

Генерирует каркас Rego-теста.

Параметры
  • sourcestringобязательный

    Исходный код Rego, для которого генерируются тесты.

  • tableStyleboolean

    Генерирует табличные заглушки тестов вместо заглушек для отдельных случаев. Каждое правило получает массив cases и цикл проверок every tc in cases { ... }. Сочетайте с rego_test varValues: true, чтобы увидеть, какой кейс упал.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible). Заглушки по-прежнему написаны с import rego.v1, и тестовый запуск v0 (rego_test с v0Compatible) их тоже принимает.

rego_infer_input_schemaтолько чтениеидемпотентный

Статически анализирует одну или несколько политик Rego и возвращает объект JSON Schema (draft-07), описывающий каждое поле input.*, которое читают политики. Отслеживает, как политика читает input: переменные цикла (some c in input.containers, затем c.image), правила, значение которых - путь input (pod_spec := input.request.object.spec), параметры функций (trusted(c)) и ключи object.get. Ключ, который политика вычисляет, остаётся открытым, а скалярный тип задаётся только там, где его показывает сравнение с литералом, проверка is_* или строковая встроенная функция. Использует opa parse: запускать сервер OPA не нужно. Отправная точка для тестовых входных данных и для схемы, которую можно передать в rego_check_schema; сначала проверьте её, потому что типы, которые политика не показывает, пропускаются. Принимает исходный код, переданный inline, отдельные файлы или каталоги (рекурсивно обходит их в поисках файлов *.rego).

Определяет схему входных данных.

Параметры
  • pathsstring[]

    Файлы политик или каталоги для анализа. Каждый должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Каталоги рекурсивно обходятся в поисках файлов *.rego.

  • sourcestring

    Встроенный исходный код Rego для анализа. Взаимоисключающий с paths.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_inspectтолько чтениеидемпотентный

Проверяет пакет OPA, каталог политик или отдельный файл Rego с помощью opa inspect. Возвращает данные манифеста, пространства имён, аннотации правил и (при наличии подписи) метаданные подписи.

Проверяет пакет или политику

Параметры
  • targetstringобязательный

    Путь к архиву bundle (*.tar.gz), каталогу или отдельному файлу Rego.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_lintвнешний мир

Проверяет исходный код Rego с помощью линтера Regal. Возвращает категоризированные нарушения (стиль, ошибки, идиоматичность, производительность) с указанием файла и строки. Требует regal в PATH или установленный REGAL_BINARY; в противном случае возвращает REGAL_NOT_FOUND. При вызове с inline source правила, привязанные к расположению, результат которых зависит от пути на диске (directory-package-mismatch), автоматически отключаются, чтобы избежать ложных срабатываний временных файлов, а location.file сообщается как <inline> вместо случайного временного пути. Повторно включите эти правила через enable, если ваш рабочий процесс действительно в них нуждается.

Линтует Rego

Параметры
  • configFilestring

    Путь к файлу конфигурации Regal (по умолчанию ищется .regal/config.yaml).

  • disablestring[]

    Отключает конкретные именованные правила.

  • disableCategorystring[]

    Отключает целые категории правил (например, style, idiomatic, bugs).

  • enablestring[]

    Включает конкретные именованные правила.

  • enableCategorystring[]

    Включает целые категории правил.

  • failLevelenum

    Уровень серьёзности, при котором Regal возвращает ненулевой код выхода. По умолчанию: error.

  • ignoreFilesstring[]

    Glob-шаблоны для пропуска.

  • pathsstring[]

    Пути файловой системы для линтинга. Каждый путь должен лежать внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS).

  • sourcestring

    Встроенный исходный код Rego. Взаимоисключающий с paths.

rego_migrate_v1внешний мир

Переносит исходный код Rego v0 в Rego v1. Сначала переименовывает то, что резервирует v1 (правило с именем contains, every, if или in и все ссылки на него в модуле), и заменяет встроенные функции, удалённые в v1: re_match и net.cidr_overlap на их имена в v1, а all, any, set_diff и семейство cast_* на вспомогательную функцию, добавляемую в модуль, которая возвращает ровно то же, что и встроенная функция, так что поведение не меняется. re_match и net.cidr_overlap тоже получают такую вспомогательную функцию в случаях, когда переименование меняет поведение: модуль подменяет одно написание с помощью with, вызывая оба, или сам связывает regex или net. Затем opa fmt --rego-v1 преобразует синтаксис (if, contains, import rego.v1), а opa check проверяет результат. rewrites перечисляет каждое изменение построчно, а notes объясняет, почему; переименованное правило нужно также переименовать в любом другом модуле, который его использует. Передайте inputs, чтобы вычислить оригинал как v0 и результат как v1 на каждом из них и сравнить все правила пакета, и queries, чтобы сравнить также выражения, например вызовы его функций; equivalence сообщает о любых различиях. При вычислении запускается политика, включая http.send. Возвращает перенесённый исходный код, даже если check находит оставшиеся ошибки. Код, который парсится только как Rego v1, возвращается без изменений; тот, который парсится и как v0, и как v1, например v1 с импортом rego.v1, переформатируется, как и любой другой. Если код не парсится ни как один, ни как другой вариант, возвращает INVALID_REGO с сообщением самого opa.

Переносит Rego в синтаксис v1

Параметры
  • dataPathsstring[]

    Файлы данных (JSON или YAML) или каталоги с ними, которые нужно загрузить с обеих сторон при сравнении inputs, для политики, которая читает data. Без них каждая такая ссылка не определена с обеих сторон, и они ни в чём не сходятся. Модуль .rego, найденный там, тоже загружается, поэтому он должен парситься и как v0, и как v1. Каждый путь должен находиться внутри разрешённого корня.

  • inputsany[]

    До 20 входных документов для проверки миграции. Оригинал вычисляется как Rego v0, а мигрированная политика как Rego v1 по каждому из них, каждое правило пакета, которое не функция, сравнивается по значению и по типу, а equivalence сообщает обо всех, которые различаются.

  • queriesstring[]

    Сравнивает также до 10 выражений Rego по каждому из inputs. У функции нет значения без аргументов, поэтому функции сравниваются так: data.lib.names.label_ok(input.name, input.label). Выражение, которое называет правило, переименовываемое этим инструментом, в виде data.<package>.<rule>, находит его под новым именем на стороне после миграции.

  • sourcestringобязательный

    Мигрирует исходный код Rego v0 на синтаксис Rego v1. Правила, в названиях которых используется слово, зарезервированное в v1, переименовываются, а встроенные функции, удалённые в v1, заменяются, прежде чем opa fmt --rego-v1 преобразует синтаксис; все оставшиеся проблемы возвращаются в errors, чтобы вы могли устранить их вручную.

rego_parse_astтолько чтениеидемпотентный

Разбирает исходный код Rego в JSON AST с помощью opa parse. Возвращает AST в виде дерева узлов (package, imports, rules, expressions, terms). Используйте это, когда нужно программно анализировать структуру политики.

Разбирает Rego в AST

Параметры
  • sourcestringобязательный

    Исходный код Rego для разбора.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

rego_playground_shareвнешний мир

Делится Rego-политикой с коллегами или создаёт воспроизводимый пример, публикуя её как GitHub Gist, который остаётся скрытым, если не передано public: true, так что прочитать его смогут только те, у кого есть ссылка. Возвращает { gistUrl, rawPolicyUrl, id, public }: gistUrl отображает политику с подсветкой синтаксиса на github.com; rawPolicyUrl можно передавать напрямую в OPA (opa eval -d <rawPolicyUrl> <query>) или использовать как источник данных в Conftest. Когда передаются query, input или data, в Gist добавляется файл metadata.json, чтобы получатели имели полный контекст для воспроизведения результатов. Каждый вызов создаёт новый Gist - используйте возвращённый id для последующих обращений. Требует GITHUB_TOKEN в окружении (персональный токен доступа GitHub с областью "gist"); возвращает GITHUB_TOKEN_MISSING с инструкциями по настройке, если токен не задан.

Публикует политику Rego в виде GitHub Gist.

Параметры
  • datastring

    Документ с данными в виде строки JSON. Хранится в metadata.json рядом с файлом политики.

  • descriptionstring

    Краткое описание для Gist (отображается на github.com/gists).

  • inputstring

    Входной документ в виде JSON-строки. Хранится в metadata.json рядом с файлом политики.

  • policystringобязательный

    Исходный код Rego, которым нужно поделиться (содержимое файла .rego).

  • publicboolean

    Делает Gist публичным: он отображается в аккаунте и доступен для поиска. По умолчанию выключено, при этом создаётся секретный Gist, который может прочитать любой, у кого есть ссылка, но он нигде не отображается.

  • querystring

    Запрос по умолчанию для вычисления по политике, например "data.authz.allow". Хранится в metadata.json рядом с файлом политики.

rego_policy_diffвнешний мир

Выполняет один и тот же запрос по двум политикам (или двум версиям одной политики) и сравнивает результаты. Оба вычисления идут параллельно. Возвращает equal: true/false, сырой результат с каждой стороны и changedPaths - пути в формате точек и скобок, которые различаются. Пригодится, чтобы проверить, что рефакторинг сохраняет поведение, или понять, где именно две политики расходятся. Каждая сторона принимает либо встроенный исходник (sourceA/sourceB), либо путь к файлу или каталогу (pathA/pathB). В обоих вычислениях используются одни и те же входные данные и запрос; передайте inputs, чтобы сравнить на множестве входных документов за один вызов, а dataPaths - чтобы загрузить данные, которые читают политики.

Сравнивает две политики Rego.

Параметры
  • dataPathsstring[]

    Дополнительные пути к данным или политикам, загружаемые для обеих проверок. Каждый должен находиться внутри разрешённого корня.

  • inputany

    Встроенный входной документ (JSON). Взаимоисключающий с inputPath.

  • inputPathstring

    Путь к входному JSON-файлу. Должен находиться внутри разрешённого корня. Несовместим с input.

  • inputsany[]

    До 50 входных документов, на которых сравниваются две политики, вместо input/inputPath. Результат: batch, по одной записи на каждый вход в порядке следования, а differing считает входы, на которых политики расходятся. Политика, которая не компилируется, приводит к сбою вызова один раз; ошибка времени выполнения на одном входе указывается в его записи.

  • pathAstring

    Путь к файлу или каталогу для политики A. Должен находиться внутри разрешённого корня. Взаимоисключающий с sourceA.

  • pathBstring

    Путь к файлу или каталогу для policy B. Должен находиться внутри разрешённого корня. Взаимоисключающий с sourceB.

  • querystringобязательный

    Запрос для проверки по обеим политикам, например "data.example.allow".

  • sourceAstring

    Встроенный исходный код Rego для политики A. Взаимоисключающий с pathA.

  • sourceBstring

    Встроенный исходный код Rego для политики B. Взаимоисключающий с pathB.

  • v0CompatibleAboolean

    Читает политику A как Rego v0 (--v0-compatible), синтаксис до OPA 1.0. Включите это и оставьте v0CompatibleB выключенным, чтобы сравнить устаревшую политику с её мигрированной копией.

  • v0CompatibleBboolean

    Читает политику B как Rego v0 (--v0-compatible).

rego_security_auditвнешний мир

Запускает regal lint с ограничением на категорию bugs и любые пользовательские правила, помещённые в категорию security, по одной или нескольким директориям политик и возвращает найденные проблемы, сгруппированные по уровню серьёзности (high/medium), с рекомендациями по исправлению и ссылкой на каждое правило. Применяется для периодического прогона по всему парку, а не для построчного стилевого ревью. Модули, которые не парсятся, перечисляются в unparseable, остальные проверяются. Это замечания линтера: политика без них всё равно может пропустить запрос, поэтому для этого её нужно проверять через входные данные rego_eval (отсутствующие, null и поля с неверным типом). Требует regal.

Аудит безопасности Rego

Параметры
  • configFilestring

    Путь к файлу конфигурации Regal. Пригодится, если в вашем репозитории есть своя конфигурация правил.

  • ignoreFilesstring[]

    Glob-шаблоны, которые нужно исключить из аудита.

  • pathsstring[]обязательный

    Каталоги или файлы политик для аудита. Каждый должен находиться внутри разрешённого корня (OPA_MCP_ALLOWED_PATHS). Передайте корень вашего набора политик, чтобы просканировать всё сразу.

rego_suggest_fixтолько чтениеидемпотентный

Сопоставляет типичные ошибки компиляции Rego и замечания линтера Regal с предложениями по исправлению. Передаёт errors из rego_check или violations из rego_lint без изменений. Возвращает по одному предложению на каждую диагностику; уверенность: high для известных паттернов, medium там, где ответ берётся из документации правила (docs), low во всех остальных случаях.

Предлагает исправление для диагностики Rego

Параметры
  • diagnosticsobject[]обязательный

    Диагностика в виде rego_check или rego_lint возвращает их: errors или violations, без изменений.

rego_testвнешний мир

Запускает модульные тесты Rego с помощью opa test. Возвращает сводные счётчики прохождения, непрохождения, пропуска и ошибок, а также записи по каждому тесту. Счётчик errored учитывает тесты, которые OPA не смог вычислить (конфликт правил, встроенная функция, вызывающая ошибку); такой тест не считается ни пройденным, ни непройденным, и набор с любым таким тестом не проходит. Тесты находятся в файлах *_test.rego; имена правил, начинающиеся с test_, подхватываются автоматически. Используйте runPattern для фильтрации по регулярному выражению имени; если ни один тест не совпал, подсказка об ошибке включает указанный вами шаблон. Используйте threshold, чтобы задать минимальный порог покрытия (при неудаче возвращает COVERAGE_BELOW_THRESHOLD). Используйте varValues: true вместе с verbose: true, чтобы включить связывание локальных переменных в трассировку - это важно для отладки табличных тестов, написанных с every tc in cases { ... }, чтобы определить, какой случай вызвал сбой. Когда тесты используют параметризованную форму test_x[case], OPA учитывает правило как один тест, независимо от количества случаев; parameterizedGroups сопоставляет имя правила с записью для каждого случая, а caseCounts суммирует их, поэтому непройденное правило показывает, какой случай не прошёл. Используйте ignorePatterns, чтобы исключить сгенерированные файлы или файлы-фикстуры. Используйте bundle: true при тестировании каталогов политик со структурой bundle. Используйте timeout, чтобы поднять лимит на тест выше стандартных 5 секунд OPA. Примечание: включение coverage или threshold переключает OPA в режим вывода отчёта о покрытии - счётчики по тестам недоступны, но поля coverage и coveragePct заполняются.

Запускает тесты Rego.

Параметры
  • bundleboolean

    Загружает пути как корни бандла OPA (--bundle). Нужен при тестировании политик, структурированных как бандлы с manifest.json в корне. Не нужен для обычных каталогов политик.

  • countinteger

    Сколько раз повторять набор (--count N). По умолчанию 1. Помогает отлавливать нестабильные тесты. OPA останавливается на первом неудачном повторе, поэтому repetitions в выводе показывает, сколько повторов реально прошло, а каждый тест указывается один раз с худшим результатом по всем повторам.

  • coverageboolean

    Включает данные покрытия по строкам. Переключает вывод в режим coverage-report: количество тестовых записей недоступно, но поля coverage и coveragePct заполняются.

  • explainenum

    Добавляет трассировку объяснения запроса к записям тестов (--explain). fails трассирует только падающие тесты, full трассирует всё, notes выводит заметки trace(), debug самый подробный. Заполняет поле trace каждой записи; в паре с verbose: true даёт ещё и человекочитаемый вывод трассировки.

  • ignorePatternsstring[]

    Glob-шаблоны файлов, которые нужно исключить из запуска тестов (--ignore <pattern>). По одному шаблону на элемент массива. Подходят для исключения сгенерированных файлов или файлов с фикстурами, в которых нет тестов (например, ["*_generated.rego", "fixtures/**"]).

  • pathsstring[]обязательный

    Тестирует каталоги или файлы. opa test ищет файлы *_test.rego рядом с исходными файлами.

  • runPatternstring

    Запускает только тесты, имена которых соответствуют этому регулярному выражению (передаётся как --run).

  • thresholdnumber

    Минимальный требуемый процент покрытия (0–100). Возвращает COVERAGE_BELOW_THRESHOLD, когда фактическое покрытие падает ниже этого значения. Неявно включает режим вывода coverage-report.

  • timeoutstring

    Таймаут для каждого теста в виде строки длительности Go, например "30s" или "2m" (--timeout). По умолчанию OPA использует 5s. Увеличьте для тестов, которые загружают большие наборы политик или вызывают медленные встроенные функции.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

  • v1Compatibleboolean

    Включает варианты поведения, совместимые с OPA v1.0 (--v1-compatible).

  • varValuesboolean

    Включает локальные привязки переменных в вывод трассировки (--var-values). Когда табличный тест с every tc in cases { ... } падает, трассировка показывает, какой tc вызвал сбой. Не даёт эффекта, если также не задан verbose: true (OPA выдаёт записи трассировки только в verbose-режиме).

  • verboseboolean

    Выводит детали успеха/провала по каждому тесту.

rego_test_multirootвнешний мир

Запускает opa test один раз для каждого корневого каталога и агрегирует результаты. Решает проблему конфликта пакетов, которая возникает при выполнении opa test . в репозитории с несколькими независимыми пространствами имён пакетов (проблема OPA #4724). Два режима: explicit (указывается список корневых каталогов с необязательными путями include для общих библиотек) и scan (автоматически обнаруживает конечные тестовые корни по правилу листа: каталог считается корневым, только если он напрямую содержит файлы *_test.rego и ни один из его подходящих подкаталогов их не содержит, что предотвращает двойной запуск тестов из-за автоматической рекурсии OPA). Используйте sharedPaths в режиме scan, чтобы добавить каталоги общих библиотек к вызову каждого корня, не включая их в обнаружение. Покрытие и порог работают для каждого корня отдельно; overallCoveragePct — это среднее значение по корням, для которых есть данные о покрытии.

Запускает Rego-тесты в нескольких корневых каталогах.

Параметры
  • coverageboolean

    Включает построчные данные покрытия для каждого корня. Переключает вывод в режим coverage-report: счётчики тестовых записей недоступны, но поля coverage, coveragePct и overallCoveragePct заполняются.

  • ignorePatternsstring[]

    Дополнительные шаблоны имён директорий, которые пропускаются при сканировании (например, ["vendor", "*.generated"]). Поддерживает подстановочные знаки *. Используется только вместе с scanDir.

  • maxDepthinteger

    Максимальная глубина каталога для сканирования. По умолчанию: 10. Используется только с scanDir.

  • maxRootsinteger

    Максимальное количество допустимых корней тестов. Возвращает INVALID_INPUT, если сканирование находит больше. По умолчанию: 50. Используется только с scanDir.

  • rootsobject[]

    Явный список корневых директорий тестов. Используется, когда корневые директории известны заранее или когда режим сканирования не может определить нужные корневые директории. Не используется вместе с scanDir.

  • runPatternstring

    Запускает только те тесты, чьи имена совпадают с этим регулярным выражением (передаётся как --run каждому корню).

  • scanDirstring

    Каталог верхнего уровня, в котором ищутся корни тестов. Использует правило листа: каталог считается корнем, только если он напрямую содержит файлы *_test.rego и ни один из его подходящих подкаталогов их не содержит. Взаимоисключающий с roots.

  • sharedPathsstring[]

    Пути, которые добавляются в каждый вызов opa test для каждого root и исключаются из автообнаружения. Используйте для каталогов общих библиотек, из которых импортируют все roots.

  • thresholdnumber

    Минимальный процент покрытия, требуемый для каждого корня (0-100). Корни ниже порога получают thresholdMet: false в своём результате. Неявно включает режим вывода coverage-report.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

  • varValuesboolean

    Включает локальные привязки переменных в вывод трассировки (--var-values). Полезно только при verbose: true.

  • verboseboolean

    Выводит детали успеха или провала по каждому тесту для каждого root.

rego_verifyтолько чтениеидемпотентный

Формально проверяет свойство Rego-правила с помощью SMT-решателя (Microsoft Z3). В отличие от тестирования, проверяет ВСЕ возможные входные данные и либо доказывает, что свойство выполняется, либо возвращает конкретный контрпример, который его опровергает. Поддерживает равенство, сравнение, startswith, endswith, contains и простые шаблоны regex.match (префикс: ^lit.*, суффикс: .lit$, точное совпадение: ^lit$, содержит: .*lit.*, подстановочный знак: .). Сложные regex-шаблоны (символьные классы, квантификаторы, альтернации) возвращают INCONCLUSIVE. Также возвращает INCONCLUSIVE для отрицания как отказа (not), comprehensions, частичных set- и object-правил (deny contains msg), функций, цепочек else и любого операнда, который не удаётся закодировать. Тело, читающее отсутствующее поле, считается неопределённым, а не истинным, поэтому always_true выполняется только в том случае, если правило истинно и для пустого входа: для правила, требующего input.x, ответом будет контрпример {}.

Формально проверяет правило политики Rego

Параметры
  • kindenumобязательный

    Свойство, которое нужно доказать: always_true - правило истинно для каждого возможного входа (находит входы, нарушающие это) never_true - правило никогда не истинно ни для какого входа (находит входы, которые его активируют) satisfiable - существует хотя бы один вход, при котором правило истинно (возвращает свидетель)

  • rulestringобязательный

    Имя правила для проверки (например, "allow", "deny").

  • sourcestringобязательный

    Исходный код Rego для проверки.

  • v0Compatibleboolean

    Читает политику как Rego v0 (--v0-compatible), синтаксис, который использовала OPA до 1.0: правила без if, частичные множества в виде deny[msg] { ... }. Нужен для политики, которую ещё не мигрировали: иначе OPA 1.x отказывается её загружать. Если инструмент также принимает запрос, запрос тоже читается как v0, с импортированными future keywords, чтобы in, every и some x in в нём по-прежнему работали.

0.9.0основная
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.1
0.2.0
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.0

Выберите клиент, чтобы установить OrygnsCode/opa-mcp-server:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      }
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      }
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      }
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"orygnscode-opa-mcp-server-mssi5d3azs\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"@orygn/opa-mcp\"],\"env\":{\"OPA_BINARY\":\"/usr/local/bin/opa\",\"REGAL_BINARY\":\"/usr/local/bin/regal\",\"OPA_URL\":\"http://localhost:8181\",\"OPA_MCP_ALLOWED_PATHS\":\"/path/to/your/policies\"}}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      }
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add orygnscode-opa-mcp-server-mssi5d3azs --env OPA_BINARY=/usr/local/bin/opa --env REGAL_BINARY=/usr/local/bin/regal --env OPA_URL=http://localhost:8181 --env OPA_MCP_ALLOWED_PATHS=/path/to/your/policies -- npx -y @orygn/opa-mcp

Либо через JSON-конфиг:

claude mcp add-json orygnscode-opa-mcp-server-mssi5d3azs "{\"command\":\"npx\",\"args\":[\"-y\",\"@orygn/opa-mcp\"],\"env\":{\"OPA_BINARY\":\"/usr/local/bin/opa\",\"REGAL_BINARY\":\"/usr/local/bin/regal\",\"OPA_URL\":\"http://localhost:8181\",\"OPA_MCP_ALLOWED_PATHS\":\"/path/to/your/policies\"}}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add orygnscode-opa-mcp-server-mssi5d3azs --env OPA_BINARY=/usr/local/bin/opa --env REGAL_BINARY=/usr/local/bin/regal --env OPA_URL=http://localhost:8181 --env OPA_MCP_ALLOWED_PATHS=/path/to/your/policies -- npx -y @orygn/opa-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.orygnscode-opa-mcp-server-mssi5d3azs]
command = "npx"
args = ["-y", "@orygn/opa-mcp"]

[mcp_servers.orygnscode-opa-mcp-server-mssi5d3azs.env]
OPA_BINARY = "/usr/local/bin/opa"
REGAL_BINARY = "/usr/local/bin/regal"
OPA_URL = "http://localhost:8181"
OPA_MCP_ALLOWED_PATHS = "/path/to/your/policies"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите OrygnsCode/opa-mcp-server, а в поле команды запуска — строку ниже:
npx -y @orygn/opa-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      }
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например orygnscode-opa-mcp-server-mssi5d3azs.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: orygnscode-opa-mcp-server-mssi5d3azs
    command: npx
    args:
      - "-y"
      - "@orygn/opa-mcp"
    env:
      OPA_BINARY: /usr/local/bin/opa
      REGAL_BINARY: /usr/local/bin/regal
      OPA_URL: http://localhost:8181
      OPA_MCP_ALLOWED_PATHS: /path/to/your/policies
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "orygnscode-opa-mcp-server-mssi5d3azs": {
      "command": "npx",
      "args": [
        "-y",
        "@orygn/opa-mcp"
      ],
      "env": {
        "OPA_BINARY": "/usr/local/bin/opa",
        "REGAL_BINARY": "/usr/local/bin/regal",
        "OPA_URL": "http://localhost:8181",
        "OPA_MCP_ALLOWED_PATHS": "/path/to/your/policies"
      }
    }
  }
}

Похожие MCP-сервера

ofershap/mcp-server-npm-plus

ofershap/mcp-server-npm-plus

от ofershap

MCP сервер для анализа npm-пакетов: поиск, размер бандла, уязвимости, сравнение загрузок и дерево зависимостей. Без ключей, через публичные API — незаменим при выборе библиотеки в редакторе.

TypeScript⭐ 1
jordandalton/restcsv-mcp-server

jordandalton/restcsv-mcp-server

от jordandalton

Сервер для работы с CSV-данными через REST API: с ним AI-агенты (Claude, Cursor) могут читать, записывать и управлять таблицами как удалёнными ресурсами. Полезен для автоматизации аналитики и интеграции данных без загрузки файлов.

TypeScript⭐ 12
nk3750/jitapi

nk3750/jitapi

от nk3750

JitAPI - MCP сервер для интеграции Claude с любыми API через OpenAPI. Семантический поиск и граф зависимостей находят нужные эндпоинты, экономя контекст. Разработчики могут выполнять сложные сценар...

Python⭐ 7
ycs77/apifable

ycs77/apifable

от ycs77

apifable - MCP-сервер для AI-агентов: ищет эндпоинты, изучает OpenAPI-спецификацию и генерирует TypeScript типы. Всё, чтобы AI писал точный код интеграции в TypeScript-проекты.

TypeScript⭐ 10
quantgeekdev/mongo-mcp

quantgeekdev/mongo-mcp

от quantgeekdev

MCP сервер для MongoDB: LLM выполняет запросы, инспектирует схемы и управляет документами с индексами на естественном языке. Полезен разработчикам для автоматизации работы с базами данных.

TypeScript⭐ 176
HubLensOfficial/mcp-server

HubLensOfficial/mcp-server

от hublensofficial

MCP сервер HubLens даёт AI-агентам доступ к трендовым open-source проектам с GitHub и Hacker News. Ищите по категориям, получайте AI-суммаризации и рейтинг без API ключа. Полезен разработчикам для разведки трендов.

JavaScript⭐ 1
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин