From 69f77d4d2ca21f131ddcbc9e0429cd9b90662d8b Mon Sep 17 00:00:00 2001 From: Eloi Zalczer Date: Tue, 16 Dec 2025 14:46:07 +0100 Subject: [PATCH] feat:fixed coderabbit comments --- docs/integrations/supabase.mdx | 2 +- src/fastmcp/server/auth/providers/supabase.py | 10 +++++----- tests/server/auth/providers/test_supabase.py | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/integrations/supabase.mdx b/docs/integrations/supabase.mdx index d72f073e8..b98c9cb7d 100644 --- a/docs/integrations/supabase.mdx +++ b/docs/integrations/supabase.mdx @@ -37,7 +37,7 @@ from fastmcp.server.auth.providers.supabase import SupabaseProvider # Configure Supabase Auth auth = SupabaseProvider( project_url="https://abc123.supabase.co", - base_url="http://localhost:8000" + base_url="http://localhost:8000", auth_route="/my/auth/route" # if self-hosting and using custom routes ) diff --git a/src/fastmcp/server/auth/providers/supabase.py b/src/fastmcp/server/auth/providers/supabase.py index 4a6661016..f3e11a7e5 100644 --- a/src/fastmcp/server/auth/providers/supabase.py +++ b/src/fastmcp/server/auth/providers/supabase.py @@ -128,13 +128,13 @@ class SupabaseProvider(RemoteAuthProvider): self.project_url = str(settings.project_url).rstrip("/") self.base_url = AnyHttpUrl(str(settings.base_url).rstrip("/")) - self.auth_route = settings.auth_route.rstrip("/") + self.auth_route = settings.auth_route.strip("/") # Create default JWT verifier if none provided if token_verifier is None: token_verifier = JWTVerifier( - jwks_uri=f"{self.project_url}{self.auth_route}/.well-known/jwks.json", - issuer=f"{self.project_url}{self.auth_route}", + jwks_uri=f"{self.project_url}/{self.auth_route}/.well-known/jwks.json", + issuer=f"{self.project_url}/{self.auth_route}", algorithm=settings.algorithm, required_scopes=settings.required_scopes, ) @@ -142,7 +142,7 @@ class SupabaseProvider(RemoteAuthProvider): # Initialize RemoteAuthProvider with Supabase as the authorization server super().__init__( token_verifier=token_verifier, - authorization_servers=[AnyHttpUrl(f"{self.project_url}{self.auth_route}")], + authorization_servers=[AnyHttpUrl(f"{self.project_url}/{self.auth_route}")], base_url=self.base_url, ) @@ -167,7 +167,7 @@ class SupabaseProvider(RemoteAuthProvider): try: async with httpx.AsyncClient() as client: response = await client.get( - f"{self.project_url}{self.auth_route}/.well-known/oauth-authorization-server" + f"{self.project_url}/{self.auth_route}/.well-known/oauth-authorization-server" ) response.raise_for_status() metadata = response.json() diff --git a/tests/server/auth/providers/test_supabase.py b/tests/server/auth/providers/test_supabase.py index 1a0a5b20f..5944fcfbb 100644 --- a/tests/server/auth/providers/test_supabase.py +++ b/tests/server/auth/providers/test_supabase.py @@ -47,7 +47,7 @@ class TestSupabaseProvider: assert provider.project_url == "https://env123.supabase.co" assert str(provider.base_url) == "https://envserver.com/" - assert provider.auth_route == "/custom/auth/route" + assert provider.auth_route == "custom/auth/route" def test_environment_variable_loading(self): """Test that environment variables are loaded correctly.""" @@ -159,7 +159,7 @@ class TestSupabaseProvider: auth_route="/custom/auth/route", ) - assert provider.auth_route == "/custom/auth/route" + assert provider.auth_route == "custom/auth/route" assert ( provider.token_verifier.jwks_uri == "https://abc123.supabase.co/custom/auth/route/.well-known/jwks.json" @@ -172,7 +172,7 @@ class TestSupabaseProvider: auth_route="/custom/auth/route/", ) - assert provider.auth_route == "/custom/auth/route" + assert provider.auth_route == "custom/auth/route" def run_mcp_server(host: str, port: int) -> None: