{"servers":[{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.1.1","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.1.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-09T04:47:46.889191Z","publishedAt":"2026-06-09T04:47:46.889191Z","updatedAt":"2026-06-09T04:47:46.889191Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.10.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.10.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-23T02:18:02.198834Z","publishedAt":"2026-07-23T02:18:02.198834Z","updatedAt":"2026-07-23T02:18:02.198834Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.10.1","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.10.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-24T03:59:47.079507Z","publishedAt":"2026-07-24T03:59:47.079507Z","updatedAt":"2026-07-24T03:59:47.079507Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.11.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.11.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-07T06:48:57.240035Z","publishedAt":"2026-08-07T06:48:57.240035Z","updatedAt":"2026-08-07T06:48:57.240035Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.12.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.12.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-08-16T00:28:17.196062Z","publishedAt":"2026-08-16T00:28:17.196062Z","updatedAt":"2026-08-16T00:28:17.196062Z","isLatest":true}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.2.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.2.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-09T21:26:55.248048Z","publishedAt":"2026-06-09T21:26:55.248048Z","updatedAt":"2026-06-09T21:26:55.248048Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.3.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.3.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-10T00:14:11.629201Z","publishedAt":"2026-06-10T00:14:11.629201Z","updatedAt":"2026-06-10T00:14:11.629201Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.4.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.4.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-10T03:12:02.615173Z","publishedAt":"2026-06-10T03:12:02.615173Z","updatedAt":"2026-06-10T03:12:02.615173Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.5.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.5.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-12T16:45:56.552112Z","publishedAt":"2026-06-12T16:45:56.552112Z","updatedAt":"2026-06-12T16:45:56.552112Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.5.1","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.5.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-16T10:41:58.095052Z","publishedAt":"2026-06-16T10:41:58.095052Z","updatedAt":"2026-06-16T10:41:58.095052Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.5.2","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.5.2","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-19T12:37:37.412758Z","publishedAt":"2026-06-19T12:37:37.412758Z","updatedAt":"2026-06-19T12:37:37.412758Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.6.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.6.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-06-29T21:00:03.918531Z","publishedAt":"2026-06-29T21:00:03.918531Z","updatedAt":"2026-06-29T21:00:03.918531Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.7.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.7.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"DEPRECATED alias of REBAR_MCP_ALLOW_JIRA_SYNC — prefer that name; still honored for backward compatibility.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-06T04:40:13.658721Z","publishedAt":"2026-07-06T04:40:13.658721Z","updatedAt":"2026-07-06T04:40:13.658721Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.7.1","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.7.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"DEPRECATED alias of REBAR_MCP_ALLOW_JIRA_SYNC — prefer that name; still honored for backward compatibility.","name":"REBAR_MCP_ALLOW_RECONCILE_LIVE"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-06T16:24:11.24244Z","publishedAt":"2026-07-06T16:24:11.24244Z","updatedAt":"2026-07-06T16:24:11.24244Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.8.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.8.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-16T03:07:32.047938Z","publishedAt":"2026-07-16T03:07:32.047938Z","updatedAt":"2026-07-16T03:07:32.047938Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.9.0","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.9.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-20T05:02:23.919274Z","publishedAt":"2026-07-20T05:02:23.919274Z","updatedAt":"2026-07-20T05:02:23.919274Z","isLatest":false}}},{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json","name":"io.github.navapbc/rebar","description":"Event-sourced ticket system with a Jira reconciler, exposed as an MCP server.","repository":{"url":"https://github.com/navapbc/rebar","source":"github"},"version":"0.9.1","packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"nava-rebar","version":"0.9.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Path to the repo root that holds the .tickets-tracker store (defaults to the git toplevel of the working dir).","name":"REBAR_ROOT"},{"description":"Set to 1 to expose only the read tools (no write/mutation tools).","name":"REBAR_MCP_READONLY"},{"description":"Set to 1 to enable the billable LLM tools (review_ticket / review_code / scan_spec / verify_completion / review_plan); off by default.","name":"REBAR_MCP_ALLOW_LLM"},{"description":"Set to 1 to allow the live (mutating) Jira reconcile mode; otherwise reconcile is dry-run only.","name":"REBAR_MCP_ALLOW_JIRA_SYNC"},{"description":"Transport for the MCP server: 'stdio' (default) or 'http' (the optional Streamable-HTTP transport).","name":"REBAR_MCP_TRANSPORT"},{"description":"Bind host for the Streamable-HTTP transport (default 127.0.0.1).","name":"REBAR_MCP_HTTP_HOST"},{"description":"Bind port for the Streamable-HTTP transport (1-65535; default 8000).","name":"REBAR_MCP_HTTP_PORT"},{"description":"URL path the Streamable-HTTP transport serves on (default /mcp).","name":"REBAR_MCP_HTTP_PATH"},{"description":"Comma-separated allowlist of exact host:port values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_HOSTS"},{"description":"Comma-separated allowlist of exact Origin values accepted by the Streamable-HTTP DNS-rebinding protection; empty defaults to loopback.","name":"REBAR_MCP_HTTP_ALLOWED_ORIGINS"},{"description":"Set to 1 to acknowledge TLS is terminated at the edge; required to bind the Streamable-HTTP transport to a non-loopback host.","name":"REBAR_MCP_HTTP_TLS_AT_EDGE"},{"description":"Set to 1 to acknowledge running the Streamable-HTTP transport without a token verifier; required to boot the HTTP transport while auth is off.","name":"REBAR_MCP_ALLOW_UNAUTHENTICATED_HTTP"},{"description":"Set to 1 to enable MCP authentication (the composite token verifier + Resource-Server wiring); off by default.","name":"REBAR_MCP_AUTH_ENABLED"},{"description":"Comma-separated, ordered list of token-verifier strategies to compose (closed set: static, jwt, introspection, proxy, custom).","name":"REBAR_MCP_AUTH_STRATEGIES"},{"description":"OAuth authorization-server issuer URL advertised in the Protected-Resource Metadata (RFC 9728) when auth is enabled.","name":"REBAR_MCP_AUTH_ISSUER_URL"},{"description":"The single resource identifier (RFC 8707 audience) for this server; the composite verifier re-checks every accepted token against it.","name":"REBAR_MCP_AUTH_RESOURCE_SERVER_URL"},{"description":"Comma-separated scopes a caller must hold; the SDK returns 403 insufficient_scope when a principal lacks one.","name":"REBAR_MCP_AUTH_REQUIRED_SCOPES"},{"description":"Path to the JSON secrets file for the static-bearer verifier (stores only SHA-256 digests of the accepted tokens).","name":"REBAR_MCP_AUTH_STATIC_TOKENS_FILE"},{"description":"HTTPS JWKS endpoint the `jwt` verifier fetches signing keys from (an OIDC provider's .well-known/jwks.json).","name":"REBAR_MCP_AUTH_JWT_JWKS_URI"},{"description":"Expected `iss` claim for the `jwt` verifier; falls back to REBAR_MCP_AUTH_ISSUER_URL when unset.","name":"REBAR_MCP_AUTH_JWT_ISSUER"},{"description":"Comma-separated PINNED, asymmetric-only JWS algorithms for the `jwt` verifier (default RS256,ES256); a symmetric algorithm on a JWKS source is refused.","name":"REBAR_MCP_AUTH_JWT_ALGORITHMS"},{"description":"Clock-skew leeway in seconds applied to exp/nbf validation by the `jwt` verifier (default 60).","name":"REBAR_MCP_AUTH_JWT_LEEWAY"},{"description":"Minimum seconds between JWKS refetches triggered by an unknown key id (the concurrency-safe flood guard; default 30).","name":"REBAR_MCP_AUTH_JWT_JWKS_REFETCH_COOLDOWN"},{"description":"HTTP timeout in seconds for the `jwt` verifier's JWKS fetch (default 10).","name":"REBAR_MCP_AUTH_JWT_JWKS_TIMEOUT"},{"description":"When set, the `jwt` verifier requires the JWT header `typ` to equal this (e.g. at+JWT per RFC 9068); unset skips the check.","name":"REBAR_MCP_AUTH_JWT_EXPECTED_TYP"},{"description":"Set to 1 to permit a private/link-local/loopback JWKS host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_JWT_ALLOW_PRIVATE_JWKS_HOST"},{"description":"The `introspection` verifier's RFC 7662 endpoint URL (must be https://); the opaque token is POSTed here on every request (no caching).","name":"REBAR_MCP_AUTH_INTROSPECTION_ENDPOINT"},{"description":"The client id the `introspection` verifier presents to the Authorization Server via HTTP Basic (client_secret_basic).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_ID"},{"description":"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).","name":"REBAR_MCP_AUTH_INTROSPECTION_CLIENT_SECRET_ENV"},{"description":"Set to 1 to permit a private/link-local/loopback introspection endpoint host (SSRF guard is on by default); off by default.","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_PRIVATE_HOST"},{"description":"Set to 1 to accept an active introspection response that OMITS `aud` (many AS do); off by default (fail-closed reject).","name":"REBAR_MCP_AUTH_INTROSPECTION_ALLOW_MISSING_AUD"},{"description":"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).","name":"REBAR_MCP_AUTH_PROXY_SECRET_ENV"},{"description":"The header the fronting proxy sends its shared secret on; the identity is trusted only when this matches (constant-time; default x-proxy-auth).","name":"REBAR_MCP_AUTH_PROXY_SECRET_HEADER"},{"description":"The header carrying the proxy-authenticated principal identity, trusted only when the secret header validates (default x-forwarded-user).","name":"REBAR_MCP_AUTH_PROXY_IDENTITY_HEADER"},{"description":"Comma-separated fixed scope set granted to proxy-authenticated principals; empty by default (the principal holds no scopes).","name":"REBAR_MCP_AUTH_PROXY_SCOPES"},{"description":"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).","name":"REBAR_MCP_AUTH_CUSTOM_IMPORT"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-07-20T05:54:09.485346Z","publishedAt":"2026-07-20T05:54:09.485346Z","updatedAt":"2026-07-20T05:54:09.485346Z","isLatest":false}}}],"metadata":{"count":17}}
