55including token verification, middleware, and scoped tool decorators.
66"""
77
8- import os
9-
10- from dotenv import load_dotenv
118from mcp .server .auth .routes import create_protected_resource_routes
12- from pydantic import AnyHttpUrl
139from starlette .middleware import Middleware
1410from starlette .routing import Route , Router
1511
16- from .middeware import Auth0Middleware
12+ from .middleware import Auth0Middleware
1713
18- # Load environment variables
19- load_dotenv ()
2014
2115class Auth0Mcp :
22- def __init__ (self , name : str ):
16+ def __init__ (self , name : str , audience : str , domain : str ):
2317 self .name = name
24- self .audience = os .getenv ("AUTH0_AUDIENCE" , "https://api.example.com" )
25- self .domain = os .getenv ("AUTH0_DOMAIN" , "your-tenant.auth0.com" )
18+ self .audience = audience
19+ self .domain = domain
20+ if not self .audience or not self .domain :
21+ raise RuntimeError ("audience and domain must be provided" )
2622
2723 def auth_metadata_router (self ) -> Router :
2824 """
2925 Returns a router that serves the OAuth Protected Resource Metadata
3026 at the standard endpoint: /.well-known/oauth-protected-resource
3127 """
32- routes : list [Route ] = []
33-
34- routes = create_protected_resource_routes (
35- resource_url = AnyHttpUrl (self .audience ),
36- authorization_servers = [AnyHttpUrl (f"https://{ self .domain } " )],
28+ routes : list [Route ] = create_protected_resource_routes (
29+ resource_url = self .audience ,
30+ authorization_servers = [f"https://{ self .domain } " ],
3731 scopes_supported = [
3832 "openid" ,
3933 "profile" ,
@@ -45,12 +39,4 @@ def auth_metadata_router(self) -> Router:
4539 return Router (routes = routes )
4640
4741 def auth_middleware (self ) -> list [Middleware ]:
48- middleware : list [Middleware ] = []
49-
50- middleware .append (
51- Middleware (
52- Auth0Middleware
53- )
54- )
55-
56- return middleware
42+ return [Middleware (Auth0Middleware , domain = self .domain , audience = self .audience )]
0 commit comments