New in version: 2.12.4
The OIDC proxy enables FastMCP servers to authenticate with OIDC providers that don’t support Dynamic Client Registration (DCR) out of the box. This includes OAuth providers like: Auth0, Google, Azure, AWS, etc. For providers that do support DCR (like WorkOS AuthKit), use RemoteAuthProvider instead.
The OIDC proxy is built upon OAuthProxy so it has all the same functionality under the covers.
Implementation
Provider Setup Requirements
Before using the OIDC proxy, you need to register your application with your OAuth provider:- Register your application in the provider’s developer console (Auth0 Applications, Google Cloud Console, Azure Portal, etc.)
- Configure the redirect URI as your FastMCP server URL plus your chosen callback path:
- Default:
https://your-server.com/auth/callback - Custom:
https://your-server.com/your/custom/path(if you setredirect_path) - Development:
http://localhost:8000/auth/callback
- Default:
- Obtain your credentials: Client ID and Client Secret
The redirect URI you configure with your provider must exactly match your
FastMCP server’s URL plus the callback path. If you customize
redirect_path
in the OIDC proxy, update your provider’s redirect URI accordingly.Basic Setup
Here’s how to implement the OIDC proxy with any provider:Configuration Parameters
OIDCProxy Parameters
URL of your OAuth provider’s OIDC configuration
Client ID from your registered OAuth application
Client secret from your registered OAuth application
Public URL of your FastMCP server (e.g.,
https://your-server.com)Strict flag for configuration validation. When True, requires all OIDC
mandatory fields.
Audience parameter for OIDC providers that require it (e.g., Auth0). This is
typically your API identifier.
HTTP request timeout in seconds for fetching OIDC configuration
New in version: 2.13.1Custom token verifier for validating tokens. When provided, FastMCP uses your custom verifier instead of creating a default JWTVerifier.Cannot be used with algorithm or required_scopes parameters - configure these on your verifier instead. The verifier’s required_scopes are automatically loaded and advertised.JWT algorithm to use for token verification (e.g., “RS256”). If not specified,
uses the provider’s default. Only used when
token_verifier is not provided.List of OAuth scopes for token validation. These are automatically
included in authorization requests. Only used when
token_verifier is not provided.Path for OAuth callbacks. Must match the redirect URI configured in your OAuth
application
List of allowed redirect URI patterns for MCP clients. Patterns support wildcards (e.g.,
"http://localhost:*", "https://*.example.com/*").None(default): All redirect URIs allowed (for MCP/DCR compatibility)- Empty list
[]: No redirect URIs allowed - Custom list: Only matching patterns allowed
Token endpoint authentication method for the upstream OAuth server. Controls how the proxy authenticates when exchanging authorization codes and refresh tokens with the upstream provider.
"client_secret_basic": Send credentials in Authorization header (most common)"client_secret_post": Send credentials in request body (required by some providers)"none": No authentication (for public clients)None(default): Uses authlib’s default (typically"client_secret_basic")
New in version: 2.13.0Secret used to sign FastMCP JWT tokens issued to clients. Accepts any string or bytes - will be derived into a proper 32-byte cryptographic key using HKDF.Default behavior (None):- Mac/Windows: Auto-managed via system keyring. Keys are generated once and persisted, surviving server restarts with zero configuration. Keys are automatically derived from server attributes, so this approach, while convenient, is only suitable for development and local testing. For production, you must provide an explicit secret.
- Linux: Ephemeral (random salt at startup). Tokens become invalid on server restart, triggering client re-authentication.
New in version: 2.13.0Storage backend for persisting OAuth client registrations and upstream tokens.Default behavior:- Mac/Windows: Encrypted DiskStore in your platform’s data directory (derived from
platformdirs) - Linux: MemoryStore (ephemeral - clients lost on restart)
FernetEncryptionWrapper to encrypt sensitive OAuth tokens at rest. See Storage Backends for available options.Testing with in-memory storage (unencrypted):Using Built-in Providers
FastMCP includes pre-configured OIDC providers for common services:Auth0Provider at present.
Scope Configuration
OAuth scopes are configured withrequired_scopes to automatically request the permissions your application needs.
Dynamic clients created by the proxy will automatically include these scopes in their authorization requests.
Environment Configuration
New in version: 2.13.0
For production deployments, configure the OIDC proxy through environment variables instead of hardcoding credentials:

