- Server‑level auth: a default provider for all apps (only when
splitByApp: false). - App‑level auth: each app defines its own provider; required when
splitByApp: true.
If an external provider doesn’t support Dynamic Client Registration (DCR), FrontMCP can front it with a local OAuth proxy that registers/holds the client on your behalf. See Remote OAuth → Proxy.
Where to configure auth
Server (multi‑app, shared auth):Consent & scopes
Enable consent to let users select the tools/resources/prompts they grant, producing a scoped token.scopes: string[].
Sessions & transport
Auth integrates with server sessions (see Server Overview → Sessions):session.sessionMode:statefulkeeps tokens server‑side (recommended for nested providers);statelessembeds in JWT (simpler).session.transportIdMode:uuid(per‑node) orjwt(signed transport IDs for distributed setups).
Use stateful sessions when working with short‑lived upstream tokens—you’ll get refresh without round‑trips.
Discovery & well‑known
Remote providers typically self‑describe via/.well-known/oauth-authorization-server and /.well-known/jwks.json. You may override endpoints and JWKS inline when needed.