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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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_evalB | 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_test_multirootA | Run |
| 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 the running OPA server configuration via |
| 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, and rules. Each rule reports clauseCount (how many definitions share the name), isDefault (true if any clause is a default), hasArgs, bodyLength (total body expressions across all clauses), 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, and simple regex.match patterns (prefix: ^lit.*, suffix: .lit$, exact: ^lit$, contains: .lit., wildcard: .). Complex regex patterns (character classes, quantifiers, alternation) return INCONCLUSIVE. Also reports INCONCLUSIVE for negation-as-failure (not), comprehensions, and other unsupported constructs. |
| rego_playground_shareA | Share a Rego policy with teammates or create a reproducible example by publishing it as a public GitHub Gist. Returns { gistUrl, rawPolicyUrl, id }: the gistUrl renders the policy with syntax highlighting on github.com; the rawPolicyUrl can be passed directly to OPA ( |
| 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, Regal, and Conftest 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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