@@ -139,7 +139,7 @@ mcpContextForge:
139139
140140 # ─ Cache behaviour ─
141141 CACHE_TYPE : redis # Backend cache driver (redis, memory, database)
142- CACHE_PREFIX : mcpgw # Prefix applied to every cache key
142+ CACHE_PREFIX : " mcpgw: " # Prefix applied to every cache key
143143 SESSION_TTL : " 3600" # TTL (s) for user sessions
144144 MESSAGE_TTL : " 600" # TTL (s) for ephemeral messages (completions)
145145
@@ -164,6 +164,22 @@ mcpContextForge:
164164 MCPGATEWAY_A2A_MAX_RETRIES : " 3" # maximum retry attempts for A2A calls
165165 MCPGATEWAY_A2A_METRICS_ENABLED : " true" # enable A2A agent metrics collection
166166
167+ # ─ MCP Server Catalog Configuration ─
168+ MCPGATEWAY_CATALOG_ENABLED : " true" # enable MCP server catalog feature
169+ MCPGATEWAY_CATALOG_FILE : " mcp-catalog.yml" # path to catalog configuration file
170+ MCPGATEWAY_CATALOG_AUTO_HEALTH_CHECK : " true" # automatically health check catalog servers
171+ MCPGATEWAY_CATALOG_CACHE_TTL : " 3600" # catalog cache TTL in seconds
172+ MCPGATEWAY_CATALOG_PAGE_SIZE : " 100" # number of catalog servers per page
173+
174+ # ─ UI Configuration ─
175+ MCPGATEWAY_UI_TOOL_TEST_TIMEOUT : " 60000" # tool test timeout in milliseconds for the admin UI
176+
177+ # ─ LLM Chat Feature ─
178+ LLMCHAT_ENABLED : " false" # enable LLM Chat feature
179+
180+ # ─ Default Configuration ─
181+ DEFAULT_ROOTS : " []" # default roots configuration (JSON array)
182+
167183 # ─ Security & CORS ─
168184 ENVIRONMENT : development # deployment environment (development/production)
169185 APP_DOMAIN : http://localhost # domain for production CORS origins
@@ -214,7 +230,7 @@ mcpContextForge:
214230 FEDERATION_ENABLED : " true" # enable federated mode
215231 FEDERATION_DISCOVERY : " false" # advertise & discover peers automatically
216232 FEDERATION_PEERS : ' []' # explicit peer list (JSON array)
217- FEDERATION_TIMEOUT : " 30 " # seconds before peer request timeout
233+ FEDERATION_TIMEOUT : " 120 " # seconds before peer request timeout
218234 FEDERATION_SYNC_INTERVAL : " 300" # seconds between peer syncs
219235
220236 # ─ Resource cache ─
@@ -285,6 +301,29 @@ mcpContextForge:
285301 ENABLE_OVERWRITE_BASE_HEADERS : " false" # enable overwriting of base headers (advanced usage)
286302 DEFAULT_PASSTHROUGH_HEADERS : ' ["X-Tenant-Id", "X-Trace-Id"]' # default headers to pass through (JSON array)
287303
304+ # ─ Advanced Validation Configuration ─
305+ # These are advanced security validation settings with sensible defaults.
306+ # Most users won't need to change these values.
307+ VALIDATION_ALLOWED_URL_SCHEMES : ' ["http://", "https://", "ws://", "wss://"]' # allowed URL schemes (JSON array)
308+ VALIDATION_ALLOWED_MIME_TYPES : ' ["text/plain", "text/html", "text/css", "text/markdown", "text/javascript", "application/json", "application/xml", "application/pdf", "image/png", "image/jpeg", "image/gif", "image/svg+xml", "application/octet-stream"]' # allowed MIME types (JSON array)
309+ VALIDATION_DANGEROUS_HTML_PATTERN : ' <(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)\b|</*(script|iframe|object|embed|link|meta|base|form|img|svg|video|audio|source|track|area|map|canvas|applet|frame|frameset|html|head|body|style)>' # pattern to detect dangerous HTML tags
310+ VALIDATION_DANGEROUS_JS_PATTERN : ' (?i)(?:^|\s|[\"'' `<>=])(javascript:|vbscript:|data:\s*[^,]*[;\s]*(javascript|vbscript)|\bon[a-z]+\s*=|<\s*script\b)' # pattern to detect JavaScript injection
311+ VALIDATION_NAME_PATTERN : ' ^[a-zA-Z0-9_.\-\s]+$' # pattern for validating names (allows spaces)
312+ VALIDATION_IDENTIFIER_PATTERN : ' ^[a-zA-Z0-9_\-\.]+$' # pattern for validating IDs (no spaces)
313+ VALIDATION_SAFE_URI_PATTERN : ' ^[a-zA-Z0-9_\-.:/?=&%]+$' # pattern for safe URI characters
314+ VALIDATION_UNSAFE_URI_PATTERN : ' [<>"'' \\]' # pattern to detect unsafe URI characters
315+ VALIDATION_TOOL_NAME_PATTERN : ' ^[a-zA-Z][a-zA-Z0-9._-]*$' # MCP tool naming pattern
316+ VALIDATION_TOOL_METHOD_PATTERN : ' ^[a-zA-Z][a-zA-Z0-9_\./-]*$' # MCP tool method naming pattern
317+ VALIDATION_MAX_NAME_LENGTH : " 255" # maximum length for names
318+ VALIDATION_MAX_DESCRIPTION_LENGTH : " 8192" # maximum length for descriptions (8KB)
319+ VALIDATION_MAX_TEMPLATE_LENGTH : " 65536" # maximum length for templates (64KB)
320+ VALIDATION_MAX_CONTENT_LENGTH : " 1048576" # maximum length for content (1MB)
321+ VALIDATION_MAX_JSON_DEPTH : " 10" # maximum JSON nesting depth
322+ VALIDATION_MAX_URL_LENGTH : " 2048" # maximum URL length
323+ VALIDATION_MAX_RPC_PARAM_SIZE : " 262144" # maximum RPC parameter size (256KB)
324+ VALIDATION_MAX_METHOD_LENGTH : " 128" # maximum method name length
325+ VALIDATION_MAX_REQUESTS_PER_MINUTE : " 60" # rate limiting: max requests per minute
326+
288327 # ###################################################################
289328 # SENSITIVE SETTINGS
290329 # Rendered into an Opaque Secret. NO $(VAR) expansion here.
@@ -321,6 +360,9 @@ mcpContextForge:
321360 PASSWORD_REQUIRE_SPECIAL : " false" # require special characters in passwords
322361 MAX_FAILED_LOGIN_ATTEMPTS : " 5" # maximum failed login attempts before lockout
323362 ACCOUNT_LOCKOUT_DURATION_MINUTES : " 30" # account lockout duration in minutes
363+ MIN_PASSWORD_LENGTH : " 12" # minimum password length for validation
364+ MIN_SECRET_LENGTH : " 32" # minimum secret key length for validation
365+ REQUIRE_STRONG_SECRETS : " false" # enforce strong secrets (fail startup on weak secrets)
324366
325367 # ─ MCP Client Authentication ─
326368 MCP_CLIENT_AUTH_ENABLED : " true" # enable JWT authentication for MCP client operations
@@ -330,6 +372,23 @@ mcpContextForge:
330372 # ─ OAuth Configuration ─
331373 OAUTH_REQUEST_TIMEOUT : " 30" # OAuth request timeout in seconds
332374 OAUTH_MAX_RETRIES : " 3" # maximum retries for OAuth token requests
375+ OAUTH_DEFAULT_TIMEOUT : " 3600" # default OAuth token timeout in seconds
376+
377+ # ─ OAuth Dynamic Client Registration (DCR) & PKCE ─
378+ DCR_ENABLED : " true" # enable Dynamic Client Registration (RFC 7591)
379+ DCR_AUTO_REGISTER_ON_MISSING_CREDENTIALS : " true" # auto-register when gateway has issuer but no client_id
380+ DCR_DEFAULT_SCOPES : ' ["mcp:read"]' # default OAuth scopes to request during DCR (JSON array)
381+ DCR_ALLOWED_ISSUERS : " []" # allowlist of trusted issuer URLs for DCR (empty = allow any)
382+ DCR_TOKEN_ENDPOINT_AUTH_METHOD : " client_secret_basic" # token endpoint auth method for DCR
383+ DCR_METADATA_CACHE_TTL : " 3600" # AS metadata cache TTL in seconds (RFC 8414 discovery)
384+ DCR_CLIENT_NAME_TEMPLATE : " MCP Gateway ({gateway_name})" # template for client_name in DCR requests
385+ OAUTH_DISCOVERY_ENABLED : " true" # enable AS metadata discovery (RFC 8414)
386+ OAUTH_PREFERRED_CODE_CHALLENGE_METHOD : " S256" # PKCE code challenge method (S256 or plain)
387+
388+ # ─ JWT Configuration (Advanced) ─
389+ JWT_AUDIENCE_VERIFICATION : " true" # JWT audience verification (disable for DCR)
390+ JWT_PRIVATE_KEY_PATH : " " # path to JWT private key file (RSA/ECDSA algorithms)
391+ JWT_PUBLIC_KEY_PATH : " " # path to JWT public key file (RSA/ECDSA algorithms)
333392
334393 # ─ SSO (Single Sign-On) Configuration ─
335394 SSO_ENABLED : " false" # master switch for Single Sign-On authentication
@@ -338,6 +397,7 @@ mcpContextForge:
338397 SSO_PRESERVE_ADMIN_AUTH : " true" # preserve local admin authentication when SSO enabled
339398 SSO_REQUIRE_ADMIN_APPROVAL : " false" # require admin approval for new SSO registrations
340399 SSO_AUTO_ADMIN_DOMAINS : " []" # email domains that automatically get admin privileges
400+ SSO_ISSUERS : " " # optional JSON array of issuer URLs for SSO providers
341401
342402 # ─ GitHub OAuth ─
343403 SSO_GITHUB_ENABLED : " false" # enable GitHub OAuth authentication
0 commit comments