Skip to main content
Glama
OrygnsCode

opa-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
OPA_URLNoBase URL of an OPA REST endpoint, used by opa_* tools.http://localhost:8181
OPA_TOKENNoBearer token for OPA, if your instance requires auth. Treated as a secret. Never echoed in logs or tool responses.
OPA_BINARYNoPath to the opa CLI, used by rego_* tools.opa
REGAL_BINARYNoPath to the regal linter. Only required by rego_lint.regal
OPA_MCP_LOG_FILENoPath 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_LEVELNoOne of debug, info, warn, error.info
OPA_MCP_TIMEOUT_MSNoHard timeout for any spawned subprocess (opa, regal). After this, the child gets SIGTERM and then SIGKILL.30000
OPA_MCP_ALLOWED_PATHSNoComma- 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_MSNoTimeout for HTTP requests to the OPA REST API.15000
OPA_MCP_MAX_RESPONSE_BYTESNoHard cap on a single tool response. Larger payloads are truncated with a __truncated: true marker.100000

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
rego_formatA

Format Rego source code using opa fmt. Returns the formatted source and a changed flag indicating whether the input was already canonical.

rego_checkA

Type-check Rego with opa check. Returns { valid: true, errors: [] } on success, or a list of structured diagnostics with file/line locations on failure. Provide either source for inline checking or paths for file/directory checking.

rego_lintA

Lint Rego source with the Regal linter. Returns categorized violations (style, bugs, idiomatic, performance) with file/line locations. Requires regal on PATH or REGAL_BINARY set; returns REGAL_NOT_FOUND otherwise. When called with inline source rather than paths, expect location-bound rules such as directory-package-mismatch to fire as artifacts of the randomized temp-file path. Prefer paths for canonical signal; for inline workflows, ignore or disable those rules.

rego_parse_astA

Parse Rego source to a JSON AST using opa parse. Returns the AST as a tree of nodes (package, imports, rules, expressions, terms). Use this when you need to introspect policy structure programmatically.

rego_inspectA

Inspect an OPA bundle, policy directory, or single Rego file with opa inspect. Returns manifest data, namespaces, rule annotations, and (if signed) signature metadata.

rego_capabilitiesA

Return OPA capabilities — the available builtins, future keywords, features, and WASM ABI versions. With current: true, returns the running OPA's capabilities. With version: "v0.69.0", returns those of a specific version. With neither, lists available named versions.

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_evalB

Evaluate a Rego query against a policy and an input document using opa eval. Returns the standard {result: [...]} shape. The bread-and-butter authoring tool.

rego_eval_with_explainA

Evaluate with --explain=full and return a structured trace alongside the result. Use this when an agent needs to see why a rule fired (or didn't) — the trace is the basis for rego_explain_decision.

rego_eval_with_profileA

Evaluate with --profile and return per-rule timing and evaluation counts. Use this to find hot rules in slow policies.

rego_eval_with_coverageA

Evaluate with --coverage and return per-line coverage data. Useful for verifying that tests actually exercise the rules they're meant to.

rego_testA

Run Rego unit tests with opa test. Returns aggregate pass/fail counts plus per-test records. Tests live in *_test.rego files; rule names beginning with test_ are picked up.

rego_benchA

Benchmark a Rego query against a policy + input with opa bench. Returns statistical timing data: iterations, ns/op, and allocation counts. Use this to spot slow rules.

rego_compile_queryA

Run partial evaluation on a query — substitute known values and return the residual policy. Defaults unknowns to ["input"] (treat input as unknown), so the residual encodes "given input X, this is what would have to be true." Use this for offline policy slicing or pre-computing decision sets.

opa_bundle_buildA

Build a deployable bundle from policy / data paths using opa build. Output is a .tar.gz archive with optional inline signing. Supports optimization, custom revision strings, and the WASM target.

opa_bundle_signA

Sign an OPA bundle with a private key using opa sign. Writes a .signatures.json next to the bundle directory, or updates the archive in place.

opa_list_policiesA

List policies registered on the running OPA server. Returns an array of { id, raw, ast } records.

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_policyB

Delete a policy by ID from the running OPA server.

opa_get_dataA

Read a path from OPA's data hierarchy. The path argument may be in dotted form (users.alice) or slash form (users/alice).

opa_put_dataB

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 { op, path, value? }.

opa_query_decisionA

Evaluate a decision against the running OPA server. POSTs to the data path with {input} and returns whatever the rule produces. Use this to ask the server "given this input, what does data.X.allow say?"

opa_compile_queryB

Send a query to the OPA server's /v1/compile endpoint for partial evaluation. Returns the residual query — what remains after substituting in everything that's known.

opa_healthA

Hit the OPA /health endpoint. Returns { healthy: true } on 200. Supports bundles and plugins query flags to require those subsystems to also be healthy.

opa_statusB

Return OPA bundle and decision-log status from the running server. Combines /v1/config and the operational status the server exposes through it.

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_generate_test_skeletonA

Generate a *_test.rego skeleton from a policy. Parses the AST, finds each rule, and emits one stub test per rule. The agent fills in realistic inputs and assertions.

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_check or rego_lint. Returns one suggestion per input diagnostic; confidence is high for well-known patterns, medium for partial matches, low for everything else.

Prompts

Interactive templates invoked by user choice

NameDescription
policy_authoring_assistantGuides an agent through writing a new Rego policy: clarify decision shape, draft, format, check, lint, test, iterate.
policy_review_checklistReview checklist for an existing Rego policy: compile, lint, tests, default-deny, http.send, annotations, input shape.
decision_debugging_workflowDiagnostic 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

NameDescription
opa-builtinsThe 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-guideCondensed Rego style guide adapted from the Styra reference: rego.v1, package layout, naming, default-deny, comprehensions vs every, schema annotations.
opa-patternsCurated 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