@@ -9,28 +9,11 @@ import (
99
1010 "github.com/docker/mcp-gateway/pkg/catalog"
1111 "github.com/docker/mcp-gateway/pkg/config"
12- "github.com/docker/mcp-gateway/pkg/desktop"
1312 "github.com/docker/mcp-gateway/pkg/docker"
1413 "github.com/docker/mcp-gateway/pkg/oauth"
1514)
1615
1716func Disable (ctx context.Context , docker docker.Client , serverNames []string , mcpOAuthDcrEnabled bool ) error {
18- // Get catalog including user-configured catalogs to find OAuth-enabled remote servers for DCR cleanup
19- catalog , err := catalog .GetWithOptions (ctx , true , nil )
20- if err != nil {
21- return fmt .Errorf ("failed to get catalog: %w" , err )
22- }
23-
24- // Clean up OAuth for disabled servers first
25- for _ , serverName := range serverNames {
26- if server , found := catalog .Servers [serverName ]; found {
27- // Three-condition check: DCR flag enabled AND type="remote" AND oauth present
28- if mcpOAuthDcrEnabled && server .IsRemoteOAuthServer () {
29- cleanupOAuthForRemoteServer (ctx , serverName )
30- }
31- }
32- }
33-
3417 return update (ctx , docker , nil , serverNames , mcpOAuthDcrEnabled )
3518}
3619
@@ -113,27 +96,3 @@ func update(ctx context.Context, docker docker.Client, add []string, remove []st
11396
11497 return nil
11598}
116-
117- // cleanupOAuthForRemoteServer removes OAuth provider and DCR client for clean slate UX
118- // This ensures disabled servers disappear completely from the Docker Desktop OAuth tab
119- func cleanupOAuthForRemoteServer (ctx context.Context , serverName string ) {
120- client := desktop .NewAuthClient ()
121-
122- fmt .Printf ("Cleaning up OAuth for %s...\n " , serverName )
123-
124- // 1. Revoke OAuth tokens (idempotent - fails gracefully if not exists)
125- if err := client .DeleteOAuthApp (ctx , serverName ); err != nil {
126- fmt .Printf (" • No OAuth tokens to revoke\n " )
127- } else {
128- fmt .Printf (" • OAuth tokens revoked\n " )
129- }
130-
131- // 2. Delete DCR client data (idempotent - fails gracefully if not exists)
132- if err := client .DeleteDCRClient (ctx , serverName ); err != nil {
133- fmt .Printf (" • No DCR client to remove\n " )
134- } else {
135- fmt .Printf (" • DCR client data removed\n " )
136- }
137-
138- fmt .Printf ("OAuth cleanup complete for %s\n " , serverName )
139- }
0 commit comments