Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

MCP Router Configuration

The MCP router exposes configured HTTP and MCP backend operations as an MCP tool facade. Its settings reside in mcp-router.yml and are supplied through portal-view/config server properties named mcp-router.<property>.

The selected handler.yml chain must contain the mcp handler. The top-level enabled property must also be true; either control can disable the router. mcp-router.yaml is accepted as a compatibility fallback, but mcp-router.yml is preferred.

Core properties

PropertyTypeDefaultDescription
enabledBooleantrueEnables the router; the same page explains both protocol-profile flags.
pathString/mcpExact HTTP path handled by the MCP router.
maxSessionsInteger10000Process-wide legacy frontend session limit.
maxSessionsPerClientInteger100Legacy session limit for one authenticated or anonymous binding.
maxRequestBodyBytesInteger1048576Maximum MCP request body size.
maxResponseBodyBytesInteger4194304Maximum buffered MCP/backend response size.
maxJsonDepthInteger128Maximum nesting depth of an MCP JSON-RPC request.
originAllowlistArray[]Exact browser origins allowed to call the MCP endpoint.
toolsArray[]Tool catalog, target, schema, credential, and runtime metadata.

Schema properties

PropertyTypeDefaultDescription
schema.defaultDialectStringDraft 2020-12 URIRequired JSON Schema dialect.
schema.allowExternalRefsBooleanfalseControls external $ref; currently must remain false.
schema.maxSchemaBytesInteger1048576Maximum serialized size of each input/output schema.
schema.maxDepthInteger64Maximum schema-document nesting depth.
schema.maxSubschemasInteger4096Maximum object/subschema count per schema.
schema.maxConcurrentValidationsInteger32Process-wide schema validation admission capacity.
schema.validationWatchdogMsInteger50Observational warning threshold for validation work.

Protocol properties

protocols.legacy and protocols.stateless share the enabled and versions pages because portal-view property links use the final property-name segment.

PropertyTypeDefaultDescription
protocols.legacy.enabledBooleantrueKeeps the session-oriented profile available.
protocols.legacy.versionsArrayFour supported versionsAccepted legacy protocol versions.
protocols.stateless.enabledBooleantrue in the shipped templateEnables the 2026-07-28 stateless profile.
protocols.stateless.versionsArray[2026-07-28]Accepted stateless protocol versions.
protocols.stateless.discoverTtlMsInteger30000server/discover cache lifetime.
protocols.stateless.discoverCacheScopeStringprivateIdentity-aware discovery cache scope.
protocols.stateless.toolsListTtlMsInteger30000tools/list cache lifetime.
protocols.stateless.toolsListCacheScopeStringprivateIdentity-aware tool-list cache scope.
protocols.stateless.maxDiscoverCacheEntriesInteger1024Process-local discovery cache capacity.
protocols.stateless.maxToolsListCacheEntriesInteger4096Process-local tool-list cache capacity.
protocols.stateless.maxToolsListItemsInteger1024Maximum visible tools in one result.
protocols.stateless.maxConcurrentRequestsInteger1024Process-wide stateless request capacity.
protocols.stateless.maxConcurrentRequestsPerPrincipalInteger32Concurrent stateless requests per principal.
protocols.stateless.maxConcurrentBackendCallsPerTargetInteger32Concurrent stateless backend calls per target.
protocols.stateless.maxSubscriptionsInteger10000Process-wide stateless subscription limit.
protocols.stateless.maxSubscriptionsPerPrincipalInteger4Subscription limit per principal.
protocols.stateless.maxSubscriptionDurationMsInteger900000Maximum subscription lifetime.
protocols.stateless.statelessToLegacyBridgeStringrejectRejects stateless calls to legacy MCP backends.

Every numeric limit must be greater than zero. Configuration is validated at startup and reload; invalid profiles, schemas, origins, limits, or tool targets reject the candidate runtime. A successful reload compatibility-filters legacy sessions, invalidates revision-bound caches, and closes superseded stateless subscriptions, publishing tools/list_changed when the tool catalog or policy changed.