---
title: Auth Plugins
description: Configure FastMCP authentication with first-party plugins.
icon: puzzle-piece
---

Auth plugins are the plugin-system entry point for FastMCP's built-in auth integrations. They wrap the existing auth providers and contribute exactly one provider through `Plugin.auth()`, so the server behavior is the same as passing `auth=...` directly.

Use an auth plugin when you want authentication to be configured alongside other plugins, especially in declarative environments such as Horizon or `plugins.json`-style loaders.

```python server.py
from fastmcp import FastMCP
from fastmcp.server.plugins.auth.github import GitHubAuth

mcp = FastMCP(
    "GitHub Protected Server",
    plugins=[
        GitHubAuth(
            GitHubAuth.Config(
                client_id="your-github-client-id",
                client_secret="your-github-client-secret",
                base_url="https://your-server.com",
            )
        )
    ],
)
```

Provider APIs remain available in each plugin's explicit `.provider` module for advanced direct auth wiring, but integrations should prefer the plugin form.

## Included Plugins

Each first-party auth plugin lives in its own module under `fastmcp.server.plugins.auth`, mirroring the provider package:

```python
from fastmcp.server.plugins.auth.auth0 import Auth0Auth
from fastmcp.server.plugins.auth.authkit import AuthKitAuth
from fastmcp.server.plugins.auth.aws import AWSCognitoAuth
from fastmcp.server.plugins.auth.azure import AzureAuth
from fastmcp.server.plugins.auth.clerk import ClerkAuth
from fastmcp.server.plugins.auth.descope import DescopeAuth
from fastmcp.server.plugins.auth.discord import DiscordAuth
from fastmcp.server.plugins.auth.github import GitHubAuth
from fastmcp.server.plugins.auth.google import GoogleAuth
from fastmcp.server.plugins.auth.keycloak import KeycloakAuth
from fastmcp.server.plugins.auth.oci import OCIAuth
from fastmcp.server.plugins.auth.propelauth import PropelAuth
from fastmcp.server.plugins.auth.scalekit import ScalekitAuth
from fastmcp.server.plugins.auth.supabase import SupabaseAuth
from fastmcp.server.plugins.auth.workos import WorkOSAuth
```

Each plugin exposes its serializable configuration model as `Plugin.Config`. Config fields mirror the wrapped provider's constructor wherever the value can be represented as JSON. Python-only objects such as custom token verifiers, HTTP clients, and client storage are passed as constructor keyword arguments:

```python
from fastmcp.server.plugins.auth.supabase import SupabaseAuth

auth_plugin = SupabaseAuth(
    SupabaseAuth.Config(
        project_url="https://abc123.supabase.co",
        base_url="https://your-server.com",
        required_scopes=["read"],
    ),
    token_verifier=custom_verifier,
)

mcp = FastMCP("Supabase Protected Server", plugins=[auth_plugin])
```

Only one auth provider can be configured for a server. If a server already has `auth=...`, or if multiple plugins contribute auth, FastMCP raises during plugin installation.
