New in version: 2.12.4
This guide shows you how to secure your FastMCP server using Descope, a complete authentication and user management solution. This integration uses the Remote OAuth pattern, where Descope handles user login and your FastMCP server validates the tokens.
Configuration
Prerequisites
Before you begin, you will need:- To sign up for a Free Forever Descope account
- Your Project ID from the Descope Console
- Your FastMCP server’s URL (can be localhost for development, e.g.,
http://localhost:3000
)
Step 1: Configure Descope
1
Enable Dynamic Client Registration
- Go to the Inbound Apps page of the Descope Console
- Click DCR Settings
- Enable Dynamic Client Registration (DCR)
- Define allowed scopes
DCR is required for FastMCP clients to automatically register with your authentication server.
2
Note Your Project ID
Save your Project ID from Project Settings:
Step 2: Environment Setup
Create a.env
file with your Descope configuration:
You can find your project’s Descope Base URL in the Multi-Region Support Guide.
Step 3: FastMCP Configuration
Create your FastMCP server file and use the DescopeProvider to handle all the OAuth integration automatically:server.py
Testing
To test your server, you can use thefastmcp
CLI to run it locally. Assuming you’ve saved the above code to server.py
(after replacing the project_id
, base_url
, and descope_base_url
with your actual values!), you can run the following command:
Environment Variables
For production deployments, use environment variables instead of hardcoding credentials.Provider Selection
Setting this environment variable allows the Descope provider to be used automatically without explicitly instantiating it in code.Set to
fastmcp.server.auth.providers.descope.DescopeProvider
to use Descope authentication.Descope-Specific Configuration
These environment variables provide default values for the Descope provider, whether it’s instantiated manually or configured viaFASTMCP_SERVER_AUTH
.
Your Descope Project ID from the Descope Console
Public URL of your FastMCP server (e.g.,
https://your-server.com
or http://localhost:8000
for development)Descope API base URL for your region/environment
.env
file:
server.py