NestDaddy

Rebar

io.github.navapbc/rebar · v0.15.1

Event-sourced ticket tracker + Jira reconciler, exposed as a Python library, CLI, and MCP server.

Connect Runs on your machine

Terminal
claude mcp add rebar -e REBAR_ROOT=<REBAR_ROOT> -e REBAR_MCP_READONLY=<REBAR_MCP_READONLY> -e REBAR_MCP_ALLOW_LLM=<REBAR_MCP_ALLOW_LLM> -e REBAR_MCP_DEDUP=<REBAR_MCP_DEDUP> -e REBAR_MCP_ALLOW_JIRA_SYNC=<REBAR_MCP_ALLOW_JIRA_SYNC> -e REBAR_MCP_TRANSPORT=<REBAR_MCP_TRANSPORT> -e REBAR_MCP_HTTP_HOST=<REBAR_MCP_HTTP_HOST> -e REBAR_MCP_HTTP_PORT=<REBAR_MCP_HTTP_PORT> -e REBAR_MCP_HTTP_PATH=<REBAR_MCP_HTTP_PATH> -e REBAR_MCP_HTTP_ALLOWED_HOSTS=<REBAR_MCP_HTTP_ALLOWED_HOSTS> -e REBAR_MCP_HTTP_ALLOWED_ORIGINS=<REBAR_MCP_HTTP_ALLOWED_ORIGINS> -e REBAR_MCP_HTTP_TLS_AT_EDGE=<REBAR_MCP_HTTP_TLS_AT_EDGE> -e REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP=<REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP> -e REBAR_MCP_AUTH_ENABLED=<REBAR_MCP_AUTH_ENABLED> -e REBAR_MCP_AUTH_STRATEGIES=<REBAR_MCP_AUTH_STRATEGIES> -e REBAR_MCP_AUTH_ISSUER_URL=<REBAR_MCP_AUTH_ISSUER_URL> -e REBAR_MCP_AUTH_RESOURCE_SERVER_URL=<REBAR_MCP_AUTH_RESOURCE_SERVER_URL> -e REBAR_MCP_AUTH_REQUIRED_SCOPES=<REBAR_MCP_AUTH_REQUIRED_SCOPES> -e REBAR_MCP_AUTH_STATIC_TOKENS_FILE=<REBAR_MCP_AUTH_STATIC_TOKENS_FILE> -e REBAR_MCP_AUTH_JWT_JWKS_URI=<REBAR_MCP_AUTH_JWT_JWKS_URI> -e REBAR_MCP_AUTH_JWT_ISSUER=<REBAR_MCP_AUTH_JWT_ISSUER> -e REBAR_MCP_AUTH_JWT_ALGORITHMS=<REBAR_MCP_AUTH_JWT_ALGORITHMS> -e REBAR_MCP_AUTH_JWT_LEEWAY=<REBAR_MCP_AUTH_JWT_LEEWAY> -e REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN=<REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN> -e REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT=<REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT> -e REBAR_MCP_AUTH_JWT_EXPECTED_TYP=<REBAR_MCP_AUTH_JWT_EXPECTED_TYP> -e REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST=<REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST> -e REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT=<REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT> -e REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID=<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID> -e REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV=<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV> -e REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST=<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST> -e REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD=<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD> -e REBAR_MCP_AUTH_PROXY_SECRET_ENV=<REBAR_MCP_AUTH_PROXY_SECRET_ENV> -e REBAR_MCP_AUTH_PROXY_SECRET_HEADER=<REBAR_MCP_AUTH_PROXY_SECRET_HEADER> -e REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER=<REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER> -e REBAR_MCP_AUTH_PROXY_SCOPES=<REBAR_MCP_AUTH_PROXY_SCOPES> -e REBAR_MCP_AUTH_CUSTOM_IMPORT=<REBAR_MCP_AUTH_CUSTOM_IMPORT> -- uvx nava-rebar==0.15.1
claude_desktop_config.json
{
  "mcpServers": {
    "rebar": {
      "command": "uvx",
      "args": [
        "nava-rebar==0.15.1"
      ],
      "env": {
        "REBAR_ROOT": "<REBAR_ROOT>",
        "REBAR_MCP_READONLY": "<REBAR_MCP_READONLY>",
        "REBAR_MCP_ALLOW_LLM": "<REBAR_MCP_ALLOW_LLM>",
        "REBAR_MCP_DEDUP": "<REBAR_MCP_DEDUP>",
        "REBAR_MCP_ALLOW_JIRA_SYNC": "<REBAR_MCP_ALLOW_JIRA_SYNC>",
        "REBAR_MCP_TRANSPORT": "<REBAR_MCP_TRANSPORT>",
        "REBAR_MCP_HTTP_HOST": "<REBAR_MCP_HTTP_HOST>",
        "REBAR_MCP_HTTP_PORT": "<REBAR_MCP_HTTP_PORT>",
        "REBAR_MCP_HTTP_PATH": "<REBAR_MCP_HTTP_PATH>",
        "REBAR_MCP_HTTP_ALLOWED_HOSTS": "<REBAR_MCP_HTTP_ALLOWED_HOSTS>",
        "REBAR_MCP_HTTP_ALLOWED_ORIGINS": "<REBAR_MCP_HTTP_ALLOWED_ORIGINS>",
        "REBAR_MCP_HTTP_TLS_AT_EDGE": "<REBAR_MCP_HTTP_TLS_AT_EDGE>",
        "REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP": "<REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP>",
        "REBAR_MCP_AUTH_ENABLED": "<REBAR_MCP_AUTH_ENABLED>",
        "REBAR_MCP_AUTH_STRATEGIES": "<REBAR_MCP_AUTH_STRATEGIES>",
        "REBAR_MCP_AUTH_ISSUER_URL": "<REBAR_MCP_AUTH_ISSUER_URL>",
        "REBAR_MCP_AUTH_RESOURCE_SERVER_URL": "<REBAR_MCP_AUTH_RESOURCE_SERVER_URL>",
        "REBAR_MCP_AUTH_REQUIRED_SCOPES": "<REBAR_MCP_AUTH_REQUIRED_SCOPES>",
        "REBAR_MCP_AUTH_STATIC_TOKENS_FILE": "<REBAR_MCP_AUTH_STATIC_TOKENS_FILE>",
        "REBAR_MCP_AUTH_JWT_JWKS_URI": "<REBAR_MCP_AUTH_JWT_JWKS_URI>",
        "REBAR_MCP_AUTH_JWT_ISSUER": "<REBAR_MCP_AUTH_JWT_ISSUER>",
        "REBAR_MCP_AUTH_JWT_ALGORITHMS": "<REBAR_MCP_AUTH_JWT_ALGORITHMS>",
        "REBAR_MCP_AUTH_JWT_LEEWAY": "<REBAR_MCP_AUTH_JWT_LEEWAY>",
        "REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN": "<REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN>",
        "REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT": "<REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT>",
        "REBAR_MCP_AUTH_JWT_EXPECTED_TYP": "<REBAR_MCP_AUTH_JWT_EXPECTED_TYP>",
        "REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST": "<REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST>",
        "REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT": "<REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT>",
        "REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID": "<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID>",
        "REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV": "<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV>",
        "REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST": "<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST>",
        "REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD": "<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD>",
        "REBAR_MCP_AUTH_PROXY_SECRET_ENV": "<REBAR_MCP_AUTH_PROXY_SECRET_ENV>",
        "REBAR_MCP_AUTH_PROXY_SECRET_HEADER": "<REBAR_MCP_AUTH_PROXY_SECRET_HEADER>",
        "REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER": "<REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER>",
        "REBAR_MCP_AUTH_PROXY_SCOPES": "<REBAR_MCP_AUTH_PROXY_SCOPES>",
        "REBAR_MCP_AUTH_CUSTOM_IMPORT": "<REBAR_MCP_AUTH_CUSTOM_IMPORT>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "rebar": {
      "command": "uvx",
      "args": [
        "nava-rebar==0.15.1"
      ],
      "env": {
        "REBAR_ROOT": "<REBAR_ROOT>",
        "REBAR_MCP_READONLY": "<REBAR_MCP_READONLY>",
        "REBAR_MCP_ALLOW_LLM": "<REBAR_MCP_ALLOW_LLM>",
        "REBAR_MCP_DEDUP": "<REBAR_MCP_DEDUP>",
        "REBAR_MCP_ALLOW_JIRA_SYNC": "<REBAR_MCP_ALLOW_JIRA_SYNC>",
        "REBAR_MCP_TRANSPORT": "<REBAR_MCP_TRANSPORT>",
        "REBAR_MCP_HTTP_HOST": "<REBAR_MCP_HTTP_HOST>",
        "REBAR_MCP_HTTP_PORT": "<REBAR_MCP_HTTP_PORT>",
        "REBAR_MCP_HTTP_PATH": "<REBAR_MCP_HTTP_PATH>",
        "REBAR_MCP_HTTP_ALLOWED_HOSTS": "<REBAR_MCP_HTTP_ALLOWED_HOSTS>",
        "REBAR_MCP_HTTP_ALLOWED_ORIGINS": "<REBAR_MCP_HTTP_ALLOWED_ORIGINS>",
        "REBAR_MCP_HTTP_TLS_AT_EDGE": "<REBAR_MCP_HTTP_TLS_AT_EDGE>",
        "REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP": "<REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP>",
        "REBAR_MCP_AUTH_ENABLED": "<REBAR_MCP_AUTH_ENABLED>",
        "REBAR_MCP_AUTH_STRATEGIES": "<REBAR_MCP_AUTH_STRATEGIES>",
        "REBAR_MCP_AUTH_ISSUER_URL": "<REBAR_MCP_AUTH_ISSUER_URL>",
        "REBAR_MCP_AUTH_RESOURCE_SERVER_URL": "<REBAR_MCP_AUTH_RESOURCE_SERVER_URL>",
        "REBAR_MCP_AUTH_REQUIRED_SCOPES": "<REBAR_MCP_AUTH_REQUIRED_SCOPES>",
        "REBAR_MCP_AUTH_STATIC_TOKENS_FILE": "<REBAR_MCP_AUTH_STATIC_TOKENS_FILE>",
        "REBAR_MCP_AUTH_JWT_JWKS_URI": "<REBAR_MCP_AUTH_JWT_JWKS_URI>",
        "REBAR_MCP_AUTH_JWT_ISSUER": "<REBAR_MCP_AUTH_JWT_ISSUER>",
        "REBAR_MCP_AUTH_JWT_ALGORITHMS": "<REBAR_MCP_AUTH_JWT_ALGORITHMS>",
        "REBAR_MCP_AUTH_JWT_LEEWAY": "<REBAR_MCP_AUTH_JWT_LEEWAY>",
        "REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN": "<REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN>",
        "REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT": "<REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT>",
        "REBAR_MCP_AUTH_JWT_EXPECTED_TYP": "<REBAR_MCP_AUTH_JWT_EXPECTED_TYP>",
        "REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST": "<REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST>",
        "REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT": "<REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT>",
        "REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID": "<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID>",
        "REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV": "<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV>",
        "REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST": "<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST>",
        "REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD": "<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD>",
        "REBAR_MCP_AUTH_PROXY_SECRET_ENV": "<REBAR_MCP_AUTH_PROXY_SECRET_ENV>",
        "REBAR_MCP_AUTH_PROXY_SECRET_HEADER": "<REBAR_MCP_AUTH_PROXY_SECRET_HEADER>",
        "REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER": "<REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER>",
        "REBAR_MCP_AUTH_PROXY_SCOPES": "<REBAR_MCP_AUTH_PROXY_SCOPES>",
        "REBAR_MCP_AUTH_CUSTOM_IMPORT": "<REBAR_MCP_AUTH_CUSTOM_IMPORT>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "rebar": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "nava-rebar==0.15.1"
      ],
      "env": {
        "REBAR_ROOT": "<REBAR_ROOT>",
        "REBAR_MCP_READONLY": "<REBAR_MCP_READONLY>",
        "REBAR_MCP_ALLOW_LLM": "<REBAR_MCP_ALLOW_LLM>",
        "REBAR_MCP_DEDUP": "<REBAR_MCP_DEDUP>",
        "REBAR_MCP_ALLOW_JIRA_SYNC": "<REBAR_MCP_ALLOW_JIRA_SYNC>",
        "REBAR_MCP_TRANSPORT": "<REBAR_MCP_TRANSPORT>",
        "REBAR_MCP_HTTP_HOST": "<REBAR_MCP_HTTP_HOST>",
        "REBAR_MCP_HTTP_PORT": "<REBAR_MCP_HTTP_PORT>",
        "REBAR_MCP_HTTP_PATH": "<REBAR_MCP_HTTP_PATH>",
        "REBAR_MCP_HTTP_ALLOWED_HOSTS": "<REBAR_MCP_HTTP_ALLOWED_HOSTS>",
        "REBAR_MCP_HTTP_ALLOWED_ORIGINS": "<REBAR_MCP_HTTP_ALLOWED_ORIGINS>",
        "REBAR_MCP_HTTP_TLS_AT_EDGE": "<REBAR_MCP_HTTP_TLS_AT_EDGE>",
        "REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP": "<REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP>",
        "REBAR_MCP_AUTH_ENABLED": "<REBAR_MCP_AUTH_ENABLED>",
        "REBAR_MCP_AUTH_STRATEGIES": "<REBAR_MCP_AUTH_STRATEGIES>",
        "REBAR_MCP_AUTH_ISSUER_URL": "<REBAR_MCP_AUTH_ISSUER_URL>",
        "REBAR_MCP_AUTH_RESOURCE_SERVER_URL": "<REBAR_MCP_AUTH_RESOURCE_SERVER_URL>",
        "REBAR_MCP_AUTH_REQUIRED_SCOPES": "<REBAR_MCP_AUTH_REQUIRED_SCOPES>",
        "REBAR_MCP_AUTH_STATIC_TOKENS_FILE": "<REBAR_MCP_AUTH_STATIC_TOKENS_FILE>",
        "REBAR_MCP_AUTH_JWT_JWKS_URI": "<REBAR_MCP_AUTH_JWT_JWKS_URI>",
        "REBAR_MCP_AUTH_JWT_ISSUER": "<REBAR_MCP_AUTH_JWT_ISSUER>",
        "REBAR_MCP_AUTH_JWT_ALGORITHMS": "<REBAR_MCP_AUTH_JWT_ALGORITHMS>",
        "REBAR_MCP_AUTH_JWT_LEEWAY": "<REBAR_MCP_AUTH_JWT_LEEWAY>",
        "REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN": "<REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN>",
        "REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT": "<REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT>",
        "REBAR_MCP_AUTH_JWT_EXPECTED_TYP": "<REBAR_MCP_AUTH_JWT_EXPECTED_TYP>",
        "REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST": "<REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST>",
        "REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT": "<REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT>",
        "REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID": "<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID>",
        "REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV": "<REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV>",
        "REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST": "<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST>",
        "REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD": "<REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD>",
        "REBAR_MCP_AUTH_PROXY_SECRET_ENV": "<REBAR_MCP_AUTH_PROXY_SECRET_ENV>",
        "REBAR_MCP_AUTH_PROXY_SECRET_HEADER": "<REBAR_MCP_AUTH_PROXY_SECRET_HEADER>",
        "REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER": "<REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER>",
        "REBAR_MCP_AUTH_PROXY_SCOPES": "<REBAR_MCP_AUTH_PROXY_SCOPES>",
        "REBAR_MCP_AUTH_CUSTOM_IMPORT": "<REBAR_MCP_AUTH_CUSTOM_IMPORT>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
REBAR_ROOT
Optional
Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).
REBAR_MCP_READONLY
Optional
Set to 1 to expose only the read tools (no write/mutation tools).
REBAR_MCP_ALLOW_LLM
Optional
Set to 1 to enable the billable LLM tools (review_code / scan_spec / verify_completion / review_plan); off by default.
REBAR_MCP_DEDUP
Optional
In-flight de-duplication of the long-running gate tools (review_plan / verify_completion): a concurrent duplicate call for the same ticket+basis attaches to the running gate instead of launching a second billable LLM pass. On by default; set to 0 to disable (kill-switch).
REBAR_MCP_ALLOW_JIRA_SYNC
Optional
Set to 1 to allow bridge_sync to perform live (mutating) Jira sync; otherwise bridge_sync uses dry-run behavior.
REBAR_MCP_TRANSPORT
Optional
Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).
REBAR_MCP_HTTP_HOST
Optional
Bind host for the Streamable-HTTP transport (default 127.0.0.1).
REBAR_MCP_HTTP_PORT
Optional
Bind port for the Streamable-HTTP transport (1-65535; default 8000).
REBAR_MCP_HTTP_PATH
Optional
URL path the Streamable-HTTP transport serves on (default /mcp).
REBAR_MCP_HTTP_ALLOWED_HOSTS
Optional
Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.
REBAR_MCP_HTTP_ALLOWED_ORIGINS
Optional
Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.
REBAR_MCP_HTTP_TLS_AT_EDGE
Optional
Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.
REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP
Optional
Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.
REBAR_MCP_AUTH_ENABLED
Optional
Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.
REBAR_MCP_AUTH_STRATEGIES
Optional
Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).
REBAR_MCP_AUTH_ISSUER_URL
Optional
OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.
REBAR_MCP_AUTH_RESOURCE_SERVER_URL
Optional
The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.
REBAR_MCP_AUTH_REQUIRED_SCOPES
Optional
Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.
REBAR_MCP_AUTH_STATIC_TOKENS_FILE
Optional
Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).
REBAR_MCP_AUTH_JWT_JWKS_URI
Optional
HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).
REBAR_MCP_AUTH_JWT_ISSUER
Optional
Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.
REBAR_MCP_AUTH_JWT_ALGORITHMS
Optional
Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.
REBAR_MCP_AUTH_JWT_LEEWAY
Optional
Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).
REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN
Optional
Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).
REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT
Optional
HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).
REBAR_MCP_AUTH_JWT_EXPECTED_TYP
Optional
When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.
REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST
Optional
Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.
REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT
Optional
The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).
REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID
Optional
The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).
REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV
Optional
The NAME of the env var holding the introspection client secret (never the secret itself); must be present + non-empty at startup or the server refuses to start (fail-closed).
REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST
Optional
Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.
REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD
Optional
Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).
REBAR_MCP_AUTH_PROXY_SECRET_ENV
Optional
The NAME of the env var holding the trusted-proxy shared secret (never the secret itself); must be present + non-empty at startup or the `proxy` verifier refuses to start (fail-closed).
REBAR_MCP_AUTH_PROXY_SECRET_HEADER
Optional
The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).
REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER
Optional
The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).
REBAR_MCP_AUTH_PROXY_SCOPES
Optional
Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).
REBAR_MCP_AUTH_CUSTOM_IMPORT
Optional
The `custom` strategy's `module:factory` import string, resolving to a factory that returns a TokenVerifier; a TRUSTED operator config value that loads and executes the operator-configured code at startup (fail-closed on any load error).

Details

Package[email protected] (PYPI, stdio)
First published12 Nov 2026
Last updated12 Nov 2026
Registry nameio.github.navapbc/rebar

More productivity servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.