opa-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPA_URL | No | Base URL of an OPA REST endpoint, used by opa_* tools. | http://localhost:8181 |
| OPA_TOKEN | No | Bearer token for OPA, if your instance requires auth. Treated as a secret. Never echoed in logs or tool responses. | |
| OPA_BINARY | No | Path to the opa CLI, used by rego_* tools. | opa |
| REGAL_BINARY | No | Path to the regal linter. Only required by rego_lint. | regal |
| OPA_MCP_LOG_FILE | No | Path the server appends logs to. The server never writes to stdout; that channel is reserved for the MCP protocol. | <tmpdir>/orygn-opa-mcp.log |
| OPA_MCP_LOG_LEVEL | No | One of debug, info, warn, error. | info |
| OPA_MCP_TIMEOUT_MS | No | Hard timeout for any spawned subprocess (opa, regal). After this, the child gets SIGTERM and then SIGKILL. | 30000 |
| OPA_MCP_ALLOWED_PATHS | No | Comma- or semicolon-separated list of directories the server is allowed to read policies from. When unset, file-based tools refuse to read from disk. | |
| OPA_MCP_HTTP_TIMEOUT_MS | No | Timeout for HTTP requests to the OPA REST API. | 15000 |
| OPA_MCP_MAX_RESPONSE_BYTES | No | Hard cap on a single tool response. Larger payloads are truncated with a __truncated: true marker. | 100000 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rego_formatA | Format Rego source code using |
| rego_checkA | Type-check Rego with |
| rego_check_schemaA | Validate that a Rego policy's input.* field references are consistent with a JSON Schema using |
| rego_lintA | Lint Rego source with the Regal linter. Returns categorized violations (style, bugs, idiomatic, performance) with file/line locations. Requires |
| rego_parse_astA | Parse Rego source to a JSON AST using |
| rego_inspectA | Inspect an OPA bundle, policy directory, or single Rego file with |
| rego_capabilitiesA | Return OPA capabilities -- the available builtins, future keywords, features, and WASM ABI versions. With |
| rego_depsA | Static dependency analysis for a Rego reference. Given a target ref like "data.example.allow", returns the base document references (input/data leaves) and virtual document references (rules) it depends on, transitively. |
| rego_migrate_v1A | Migrate Rego v0 source to Rego v1 syntax in two phases: (1) |
| rego_evalA | Evaluate a Rego query against a policy and an input document using |
| rego_eval_with_explainA | Evaluate with |
| rego_eval_with_profileA | Evaluate with |
| rego_eval_with_coverageA | Evaluate with |
| rego_testA | Run Rego unit tests with |
| rego_benchA | Benchmark a Rego query against a policy + input with |
| rego_compile_queryA | Run partial evaluation on a query -- substitute known values and return the residual policy. Defaults |
| opa_execA | Evaluate a policy decision against one or more input files using |
| opa_bundle_buildA | Build a deployable bundle from policy / data paths using |
| opa_bundle_signA | Sign an OPA bundle with a private key using |
| opa_bundle_verifyA | Verify the cryptographic signature of a signed OPA bundle using |
| opa_list_policiesA | List policies registered on the running OPA server. Returns an array of |
| opa_get_policyA | Fetch a single policy by ID from the running OPA server. |
| opa_put_policyA | Upload a Rego policy under the given ID. Replaces any existing policy with that ID. The policy is uploaded as raw text/plain -- OPA parses it on the server side. |
| opa_delete_policyA | Delete a policy by ID from the running OPA server. |
| opa_get_dataA | Read a path from OPA's data hierarchy. The |
| opa_put_dataA | Write or replace a value at the given data path. Body is sent as JSON. |
| opa_patch_dataA | Apply a JSON Patch (RFC 6902) to the data document. Each operation is |
| opa_delete_dataA | Remove a document from OPA's data store at the given path. The path may be in dotted form ( |
| opa_query_decisionA | Evaluate a decision against the running OPA server. POSTs to the data path with |
| opa_compile_queryA | Send a query to the OPA server's |
| opa_healthA | Hit the OPA |
| opa_statusA | Return OPA bundle and decision-log status from the running server. Combines |
| opa_configA | Return the running OPA server configuration (sanitized -- secrets are not included). |
| rego_explain_decisionA | Evaluate a Rego query with full tracing and return a structured trace plus per-rule fired/not-fired summary. Use this when you need to answer "why was this denied?" -- the agent reads the structured trace and narrates the cause without re-implementing the trace parser. |
| rego_explain_undefinedA | Diagnose why a fully-qualified Rego query (e.g. "data.authz.allow") produces no value. Combines a plain eval, a full-trace eval, and per-condition AST analysis to identify the exact body expression blocking each rule. Handles both runtime failures (trace-based) and indexer elimination (standalone condition eval). Returns a structured breakdown of which conditions blocked each rule plus a human-readable summary. |
| rego_generate_test_skeletonA | Generate a |
| rego_describe_policyA | Parse a Rego policy and return a structured summary: package, imports, rules (with default/args/body-length flags), and inline annotations. Useful as the first step in any "what does this policy do" workflow. |
| rego_suggest_fixA | Map common Rego compile errors and Regal lint findings to mechanical fix suggestions. Pass diagnostics from |
| rego_coverage_gapsA | Run opa test --coverage and return a per-file breakdown of uncovered line ranges. Identifies which rules or branches are not yet exercised by tests. Files are sorted by coverage ascending so the worst-covered files appear first. Use threshold to limit the report to files below a target coverage percentage. |
| rego_security_auditA | Run regal lint restricted to the security and bugs categories across one or more policy directories. Returns findings grouped by severity (high/medium) with remediation guidance. Use this for a periodic fleet-wide security sweep rather than per-file style review. Requires regal. |
| rego_infer_input_schemaA | Statically analyse one or more Rego policies and return a JSON Schema (draft-07) object describing every input.* field the policies read. Uses opa parse for AST-level analysis -- no running OPA server required. Correct starting point for writing integration tests, configuring opa check --schema validation, or documenting a policy API. Accepts inline source, individual files, or directories (walked recursively for *.rego files). |
| rego_fixA | Run regal fix to automatically apply mechanical fixes for the five rules regal 0.30.0 supports: opa-fmt, use-rego-v1, use-assignment-operator, no-whitespace-comment, and directory-package-mismatch. Use dryRun: true to preview changes before modifying files. NOTE: directory-package-mismatch moves files to match their package path -- use disable: ["directory-package-mismatch"] to skip it. Files with uncommitted git changes require force: true. Requires regal. |
| rego_format_writeA | Run |
| rego_policy_diffA | Evaluate the same query against two policies (or two versions of the same policy) and compare the results. Both evaluations run in parallel. Returns |
| rego_verifyA | Formally verify a property about a Rego rule using SMT solving (Microsoft Z3). Unlike testing, this checks ALL possible inputs and either proves the property holds or returns a concrete counterexample input that falsifies it. Supports equality, comparison, startswith, endswith, contains, regex.match, and multi-clause rules. Reports INCONCLUSIVE for negation-as-failure (not), comprehensions, and other unsupported constructs. |
| conftest_testA | Evaluate configuration files (Kubernetes manifests, Terraform plans, Dockerfiles, Helm charts, or any YAML/JSON/HCL/TOML/INI) against Rego policies using |
| conftest_verifyA | Run the |
| conftest_pullA | Download Rego policies from an OCI registry or Git repository into a local directory using |
| conftest_pushA | Package the local Rego policy directory as an OCI artifact and push it to a registry using |
| mcp_server_infoA | Return the name, version, and runtime details of this opa-mcp server instance. Use this when you need to confirm which version of opa-mcp is running, or to verify that the OPA and Regal binaries are reachable. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| policy_authoring_assistant | Guides an agent through writing a new Rego policy: clarify decision shape, draft, format, check, lint, test, iterate. |
| policy_review_checklist | Review checklist for an existing Rego policy: compile, lint, tests, default-deny, http.send, annotations, input shape. |
| decision_debugging_workflow | Diagnostic flow for an unexpected Rego decision: reproduce, explain trace, identify input vs logic vs default cause, propose minimal fix. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| opa-builtins | The OPA built-in function catalog, categorized by namespace, with security-sensitive functions flagged. Derived at read time from `opa capabilities --current` so the list stays in sync with the actual OPA binary. |
| opa-style-guide | Condensed Rego style guide adapted from the Styra reference: rego.v1, package layout, naming, default-deny, comprehensions vs every, schema annotations. |
| opa-patterns | Curated Rego patterns: RBAC, ABAC, Kubernetes admission, IaC gates, API authorization, rate limiting. Each pattern includes when to use it, a full working example, a test, and common pitfalls. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OrygnsCode/opa-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server