From f12d36e658df1c2b28b8fdfe63f010dd3e149799 Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Tue, 11 Aug 2026 10:38:04 +0530 Subject: [PATCH] feat: add --mcp-enabled for the remote MCP surface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Authorizer 2.4.0 can serve its MCP tool surface over HTTP at POST /mcp as an OAuth 2.1 resource server (authorizerdev/authorizer#757). Exposes it through MCP_ENABLED, defaulting to false — it is a new internet-facing authenticated surface and should be opted into. It requires AUTHORIZER_URL. Every token presented at /mcp is checked against this deployment's canonical /mcp, and with no --url that identifier would come from request headers, letting a caller name the audience their own token must match. The server exits at boot rather than serve that, so enabling MCP without AUTHORIZER_URL is a crash, not a degraded mode. Verified: the CMD array still parses as JSON after joining Dockerfile line continuations, and the command string passes `sh -n`. --- Dockerfile | 3 ++- render.yaml | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 23e8b7c..1320aa4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # Base runs as USER authorizer (uid 1000). For SQLite, ensure mounted /data is writable by that user. # Pinned to the 2.4.0 release candidate because it is the first published -# image with the current CLI flag surface (--url, --oauth2-1-strict, +# image with the current CLI flag surface (--url, --mcp-enabled, --oauth2-1-strict, # --enable-org-discovery, --disable-totp-login/-webauthn-mfa/-email-otp/ # -sms-otp/-mfa). Re-pin to the stable 2.4.0 tag once it ships. FROM quay.io/authorizer/authorizer:2.4.0-rc.18 @@ -54,6 +54,7 @@ CMD ["exec ./authorizer \\\n\ --grpc-insecure=\"${GRPC_INSECURE:-true}\" \\\n\ --grpc-tls-cert=\"${GRPC_TLS_CERT}\" \\\n\ --grpc-tls-key=\"${GRPC_TLS_KEY}\" \\\n\ + --mcp-enabled=\"${MCP_ENABLED:-false}\" \\\n\ --rate-limit-rps=\"${RATE_LIMIT_RPS:-30}\" \\\n\ --rate-limit-burst=\"${RATE_LIMIT_BURST:-20}\" \\\n\ --rate-limit-fail-closed=\"${RATE_LIMIT_FAIL_CLOSED:-false}\" \\\n\ diff --git a/render.yaml b/render.yaml index be90741..870f347 100644 --- a/render.yaml +++ b/render.yaml @@ -31,6 +31,13 @@ services: generateValue: true - key: JWT_TYPE value: HS256 + - key: MCP_ENABLED + # Serve the MCP tool surface over HTTP at POST /mcp as + # an OAuth 2.1 resource server for AI agents. REQUIRES AUTHORIZER_URL: + # the audience every MCP token is checked against is derived from it, so + # the server exits at boot if this is true without one. Off by default — + # it is a new internet-facing authenticated surface. + value: "false" - key: AUTHORIZER_URL # Canonical/trusted base URL of this deployment (e.g. your Render # service URL). When set, it is the only source used to build