Skip to content

Commit cc2e0c7

Browse files
committed
use dockerCli to get the config instead
1 parent f0e554c commit cc2e0c7

File tree

12 files changed

+83
-68
lines changed

12 files changed

+83
-68
lines changed

cmd/docker-mcp/catalog/ls.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@ import (
66
"fmt"
77
"time"
88

9+
"github.com/docker/cli/cli/command"
10+
911
"github.com/docker/mcp-gateway/cmd/docker-mcp/hints"
1012
"github.com/docker/mcp-gateway/pkg/telemetry"
1113
)
1214

13-
func Ls(ctx context.Context, format Format) error {
15+
func Ls(ctx context.Context, dockerCli command.Cli, format Format) error {
1416
// Initialize telemetry
1517
telemetry.Init()
1618

@@ -33,13 +35,13 @@ func Ls(ctx context.Context, format Format) error {
3335
}
3436
fmt.Println(string(data))
3537
} else {
36-
humanPrintCatalog(*cfg)
38+
humanPrintCatalog(dockerCli, *cfg)
3739
}
3840

3941
return nil
4042
}
4143

42-
func humanPrintCatalog(cfg Config) {
44+
func humanPrintCatalog(dockerCli command.Cli, cfg Config) {
4345
if len(cfg.Catalogs) == 0 {
4446
fmt.Println("No catalogs configured.")
4547
return
@@ -48,7 +50,7 @@ func humanPrintCatalog(cfg Config) {
4850
for name, catalog := range cfg.Catalogs {
4951
fmt.Printf("%s: %s\n", name, catalog.DisplayName)
5052
}
51-
if hints.Enabled() {
53+
if hints.Enabled(dockerCli) {
5254
hints.TipCyan.Print("Tip: To browse a catalog's servers, use ")
5355
hints.TipCyanBoldItalic.Print("docker mcp catalog show <catalog-name>")
5456
fmt.Println()

cmd/docker-mcp/catalog/show.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010
"time"
1111

12+
"github.com/docker/cli/cli/command"
1213
"github.com/mikefarah/yq/v4/pkg/yqlib"
1314
"github.com/moby/term"
1415
"gopkg.in/yaml.v3"
@@ -54,7 +55,7 @@ func SupportedFormats() string {
5455
return strings.Join(quoted, ", ")
5556
}
5657

57-
func Show(ctx context.Context, name string, format Format, mcpOAuthDcrEnabled bool) error {
58+
func Show(ctx context.Context, dockerCli command.Cli, name string, format Format, mcpOAuthDcrEnabled bool) error {
5859
cfg, err := ReadConfigWithDefaultCatalog(ctx)
5960
if err != nil {
6061
return err
@@ -154,7 +155,7 @@ func Show(ctx context.Context, name string, format Format, mcpOAuthDcrEnabled bo
154155
fmt.Printf(" %s\n", strings.Repeat("─", headerLineWidth))
155156
fmt.Printf(" %d servers total\n", serverCount)
156157
fmt.Println()
157-
if hints.Enabled() {
158+
if hints.Enabled(dockerCli) {
158159
hints.TipCyan.Print("Tip: To view server details, use ")
159160
hints.TipCyanBoldItalic.Print("docker mcp server inspect <server-name>")
160161
hints.TipCyan.Print(". To add servers, use ")

cmd/docker-mcp/client/connect.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ import (
44
"context"
55
"fmt"
66

7+
"github.com/docker/cli/cli/command"
8+
79
"github.com/docker/mcp-gateway/cmd/docker-mcp/hints"
810
)
911

10-
func Connect(ctx context.Context, cwd string, config Config, vendor string, global, quiet bool) error {
12+
func Connect(ctx context.Context, dockerCli command.Cli, cwd string, config Config, vendor string, global, quiet bool) error {
1113
if vendor == vendorCodex {
1214
if !global {
1315
return fmt.Errorf("codex only supports global configuration. Re-run with --global or -g")
@@ -35,7 +37,7 @@ func Connect(ctx context.Context, cwd string, config Config, vendor string, glob
3537
return err
3638
}
3739
fmt.Printf("You might have to restart '%s'.\n", vendor)
38-
if hints.Enabled() {
40+
if hints.Enabled(dockerCli) {
3941
hints.TipCyan.Print("Tip: Your client is now connected! Use ")
4042
hints.TipCyanBoldItalic.Print("docker mcp tools ls")
4143
hints.TipCyan.Println(" to see your available tools")

cmd/docker-mcp/commands/catalog.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ func catalogCommand(dockerCli command.Cli) *cobra.Command {
2323
cmd.AddCommand(bootstrapCatalogCommand())
2424
cmd.AddCommand(importCatalogCommand())
2525
cmd.AddCommand(exportCatalogCommand())
26-
cmd.AddCommand(lsCatalogCommand())
26+
cmd.AddCommand(lsCatalogCommand(dockerCli))
2727
cmd.AddCommand(rmCatalogCommand())
2828
cmd.AddCommand(updateCatalogCommand(dockerCli))
2929
cmd.AddCommand(showCatalogCommand(dockerCli))
@@ -86,7 +86,7 @@ cannot be exported as it is managed by Docker.`,
8686
}
8787
}
8888

89-
func lsCatalogCommand() *cobra.Command {
89+
func lsCatalogCommand(dockerCli command.Cli) *cobra.Command {
9090
var opts struct {
9191
Format catalog.Format
9292
}
@@ -101,7 +101,7 @@ func lsCatalogCommand() *cobra.Command {
101101
# List catalogs in JSON format
102102
docker mcp catalog ls --format=json`,
103103
RunE: func(cmd *cobra.Command, _ []string) error {
104-
return catalog.Ls(cmd.Context(), opts.Format)
104+
return catalog.Ls(cmd.Context(), dockerCli, opts.Format)
105105
},
106106
}
107107
flags := cmd.Flags()
@@ -165,7 +165,7 @@ If no name is provided, shows the Docker official catalog.`,
165165
}
166166

167167
mcpOAuthDcrEnabled := isMcpOAuthDcrFeatureEnabled(dockerCli)
168-
return catalog.Show(cmd.Context(), name, opts.Format, mcpOAuthDcrEnabled)
168+
return catalog.Show(cmd.Context(), dockerCli, name, opts.Format, mcpOAuthDcrEnabled)
169169
},
170170
}
171171
flags := cmd.Flags()

cmd/docker-mcp/commands/client.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,21 @@ import (
55
"fmt"
66
"strings"
77

8-
"github.com/spf13/pflag"
9-
8+
"github.com/docker/cli/cli/command"
109
"github.com/spf13/cobra"
10+
"github.com/spf13/pflag"
1111

1212
"github.com/docker/mcp-gateway/cmd/docker-mcp/client"
1313
)
1414

15-
func clientCommand(cwd string) *cobra.Command {
15+
func clientCommand(dockerCli command.Cli, cwd string) *cobra.Command {
1616
cfg := client.ReadConfig()
1717
cmd := &cobra.Command{
1818
Use: fmt.Sprintf("client (Supported: %s)", strings.Join(client.GetSupportedMCPClients(*cfg), ", ")),
1919
Short: "Manage MCP clients",
2020
}
2121
cmd.AddCommand(listClientCommand(cwd, *cfg))
22-
cmd.AddCommand(connectClientCommand(cwd, *cfg))
22+
cmd.AddCommand(connectClientCommand(dockerCli, cwd, *cfg))
2323
cmd.AddCommand(disconnectClientCommand(cwd, *cfg))
2424
cmd.AddCommand(manualClientCommand())
2525
return cmd
@@ -44,7 +44,7 @@ func listClientCommand(cwd string, cfg client.Config) *cobra.Command {
4444
return cmd
4545
}
4646

47-
func connectClientCommand(cwd string, cfg client.Config) *cobra.Command {
47+
func connectClientCommand(dockerCli command.Cli, cwd string, cfg client.Config) *cobra.Command {
4848
var opts struct {
4949
Global bool
5050
Quiet bool
@@ -54,7 +54,7 @@ func connectClientCommand(cwd string, cfg client.Config) *cobra.Command {
5454
Short: fmt.Sprintf("Connect the Docker MCP Toolkit to a client. Supported clients: %s", strings.Join(client.GetSupportedMCPClients(cfg), " ")),
5555
Args: cobra.ExactArgs(1),
5656
RunE: func(cmd *cobra.Command, args []string) error {
57-
return client.Connect(cmd.Context(), cwd, cfg, args[0], opts.Global, opts.Quiet)
57+
return client.Connect(cmd.Context(), dockerCli, cwd, cfg, args[0], opts.Global, opts.Quiet)
5858
},
5959
}
6060
flags := cmd.Flags()

cmd/docker-mcp/commands/root.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func Root(ctx context.Context, cwd string, dockerCli command.Cli) *cobra.Command
7171
dockerClient := docker.NewClient(dockerCli)
7272

7373
cmd.AddCommand(catalogCommand(dockerCli))
74-
cmd.AddCommand(clientCommand(cwd))
74+
cmd.AddCommand(clientCommand(dockerCli, cwd))
7575
cmd.AddCommand(configCommand(dockerClient))
7676
cmd.AddCommand(featureCommand(dockerCli))
7777
cmd.AddCommand(gatewayCommand(dockerClient, dockerCli))
@@ -80,7 +80,7 @@ func Root(ctx context.Context, cwd string, dockerCli command.Cli) *cobra.Command
8080
cmd.AddCommand(registryCommand())
8181
cmd.AddCommand(secretCommand(dockerClient))
8282
cmd.AddCommand(serverCommand(dockerClient, dockerCli))
83-
cmd.AddCommand(toolsCommand(dockerClient))
83+
cmd.AddCommand(toolsCommand(dockerClient, dockerCli))
8484
cmd.AddCommand(versionCommand())
8585

8686
if os.Getenv("DOCKER_MCP_SHOW_HIDDEN") == "1" {

cmd/docker-mcp/commands/server.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func serverCommand(docker docker.Client, dockerCli command.Cli) *cobra.Command {
4343
fmt.Fprintln(cmd.OutOrStdout(), "No server is enabled")
4444
} else {
4545
fmt.Fprintln(cmd.OutOrStdout(), strings.Join(list, ", "))
46-
if hints.Enabled() {
46+
if hints.Enabled(dockerCli) {
4747
hints.TipCyan.Fprint(cmd.OutOrStdout(), "Tip: To use these servers, connect to a client (IE: claude/cursor) with ")
4848
hints.TipCyanBoldItalic.Fprintln(cmd.OutOrStdout(), "docker mcp client connect <client-name>")
4949
fmt.Fprintln(cmd.OutOrStdout(), "")
@@ -63,7 +63,7 @@ func serverCommand(docker docker.Client, dockerCli command.Cli) *cobra.Command {
6363
Args: cobra.MinimumNArgs(1),
6464
RunE: func(cmd *cobra.Command, args []string) error {
6565
mcpOAuthDcrEnabled := isMcpOAuthDcrFeatureEnabled(dockerCli)
66-
return server.Enable(cmd.Context(), docker, args, mcpOAuthDcrEnabled)
66+
return server.Enable(cmd.Context(), docker, dockerCli, args, mcpOAuthDcrEnabled)
6767
},
6868
})
6969

@@ -74,7 +74,7 @@ func serverCommand(docker docker.Client, dockerCli command.Cli) *cobra.Command {
7474
Args: cobra.MinimumNArgs(1),
7575
RunE: func(cmd *cobra.Command, args []string) error {
7676
mcpOAuthDcrEnabled := isMcpOAuthDcrFeatureEnabled(dockerCli)
77-
return server.Disable(cmd.Context(), docker, args, mcpOAuthDcrEnabled)
77+
return server.Disable(cmd.Context(), docker, dockerCli, args, mcpOAuthDcrEnabled)
7878
},
7979
})
8080

cmd/docker-mcp/commands/tools.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package commands
22

33
import (
4+
"github.com/docker/cli/cli/command"
45
"github.com/spf13/cobra"
56

67
"github.com/docker/mcp-gateway/cmd/docker-mcp/tools"
78
"github.com/docker/mcp-gateway/pkg/docker"
89
)
910

10-
func toolsCommand(docker docker.Client) *cobra.Command {
11+
func toolsCommand(docker docker.Client, dockerCli command.Cli) *cobra.Command {
1112
cmd := &cobra.Command{
1213
Use: "tools",
1314
Short: "Manage tools",
@@ -30,7 +31,7 @@ func toolsCommand(docker docker.Client) *cobra.Command {
3031
Short: "List tools",
3132
Args: cobra.NoArgs,
3233
RunE: func(cmd *cobra.Command, _ []string) error {
33-
return tools.List(cmd.Context(), version, gatewayArgs, verbose, "list", "", format)
34+
return tools.List(cmd.Context(), dockerCli, version, gatewayArgs, verbose, "list", "", format)
3435
},
3536
})
3637

@@ -39,7 +40,7 @@ func toolsCommand(docker docker.Client) *cobra.Command {
3940
Short: "Count tools",
4041
Args: cobra.NoArgs,
4142
RunE: func(cmd *cobra.Command, _ []string) error {
42-
return tools.List(cmd.Context(), version, gatewayArgs, verbose, "count", "", format)
43+
return tools.List(cmd.Context(), dockerCli, version, gatewayArgs, verbose, "count", "", format)
4344
},
4445
})
4546

@@ -48,7 +49,7 @@ func toolsCommand(docker docker.Client) *cobra.Command {
4849
Short: "Inspect a tool",
4950
Args: cobra.ExactArgs(1),
5051
RunE: func(cmd *cobra.Command, args []string) error {
51-
return tools.List(cmd.Context(), version, gatewayArgs, verbose, "inspect", args[0], format)
52+
return tools.List(cmd.Context(), dockerCli, version, gatewayArgs, verbose, "inspect", args[0], format)
5253
},
5354
})
5455
cmd.AddCommand(&cobra.Command{

cmd/docker-mcp/hints/hints.go

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package hints
22

33
import (
4-
"github.com/docker/cli/cli/config"
5-
"github.com/docker/cli/cli/config/configfile"
4+
"github.com/docker/cli/cli/command"
65
"github.com/fatih/color"
76
)
87

9-
func Enabled() bool {
10-
configFile := getDockerConfigFile()
8+
func Enabled(dockerCli command.Cli) bool {
9+
configFile := dockerCli.ConfigFile()
1110
if configFile != nil && configFile.Plugins != nil {
1211
if pluginConfig, ok := configFile.Plugins["-x-cli-hints"]; ok {
1312
if enabledValue, exists := pluginConfig["enabled"]; exists {
@@ -24,11 +23,3 @@ var (
2423
TipCyanBoldItalic = color.New(color.FgCyan, color.Bold, color.Italic)
2524
TipGreen = color.New(color.FgGreen)
2625
)
27-
28-
func getDockerConfigFile() *configfile.ConfigFile {
29-
configFile, err := config.Load("")
30-
if err != nil {
31-
return nil
32-
}
33-
return configFile
34-
}

cmd/docker-mcp/server/enable.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"context"
66
"fmt"
77

8+
"github.com/docker/cli/cli/command"
89
"gopkg.in/yaml.v3"
910

1011
"github.com/docker/mcp-gateway/cmd/docker-mcp/hints"
@@ -14,15 +15,15 @@ import (
1415
"github.com/docker/mcp-gateway/pkg/oauth"
1516
)
1617

17-
func Disable(ctx context.Context, docker docker.Client, serverNames []string, mcpOAuthDcrEnabled bool) error {
18-
return update(ctx, docker, nil, serverNames, mcpOAuthDcrEnabled)
18+
func Disable(ctx context.Context, docker docker.Client, dockerCli command.Cli, serverNames []string, mcpOAuthDcrEnabled bool) error {
19+
return update(ctx, docker, dockerCli, nil, serverNames, mcpOAuthDcrEnabled)
1920
}
2021

21-
func Enable(ctx context.Context, docker docker.Client, serverNames []string, mcpOAuthDcrEnabled bool) error {
22-
return update(ctx, docker, serverNames, nil, mcpOAuthDcrEnabled)
22+
func Enable(ctx context.Context, docker docker.Client, dockerCli command.Cli, serverNames []string, mcpOAuthDcrEnabled bool) error {
23+
return update(ctx, docker, dockerCli, serverNames, nil, mcpOAuthDcrEnabled)
2324
}
2425

25-
func update(ctx context.Context, docker docker.Client, add []string, remove []string, mcpOAuthDcrEnabled bool) error {
26+
func update(ctx context.Context, docker docker.Client, dockerCli command.Cli, add []string, remove []string, mcpOAuthDcrEnabled bool) error {
2627
// Read registry.yaml that contains which servers are enabled.
2728
registryYAML, err := config.ReadRegistry(ctx, docker)
2829
if err != nil {
@@ -95,15 +96,15 @@ func update(ctx context.Context, docker docker.Client, add []string, remove []st
9596
return fmt.Errorf("writing registry config: %w", err)
9697
}
9798

98-
if len(add) > 0 && hints.Enabled() {
99+
if len(add) > 0 && hints.Enabled(dockerCli) {
99100
hints.TipCyan.Print("Tip: ")
100101
hints.TipGreen.Print("✓")
101102
hints.TipCyan.Print(" Server enabled. To view all enabled servers, use ")
102103
hints.TipCyanBoldItalic.Println("docker mcp server ls")
103104
fmt.Println()
104105
}
105106

106-
if len(remove) > 0 && hints.Enabled() {
107+
if len(remove) > 0 && hints.Enabled(dockerCli) {
107108
hints.TipCyan.Print("Tip: ")
108109
hints.TipGreen.Print("✓")
109110
hints.TipCyan.Print(" Server disabled. To see remaining enabled servers, use ")

0 commit comments

Comments
 (0)