@@ -34,30 +34,44 @@ func (c *Config) IsDockerMCPEnabled() bool {
34 return exists
34 return exists
37−// EnableDockerMCP adds Docker MCP configuration and persists it.
37+func DockerMCPConfig() MCPConfig {
38−func (s *ConfigStore) EnableDockerMCP() error {
39− if !IsDockerMCPAvailable() {
40− return fmt.Errorf("docker mcp is not available, please ensure docker is installed and 'docker mcp version' succeeds")
43− mcpConfig := MCPConfig{
38+ return MCPConfig{
44 Type: MCPStdio,
39 Type: MCPStdio,
45 Command: "docker",
40 Command: "docker",
46 Args: []string{"mcp", "gateway", "run"},
41 Args: []string{"mcp", "gateway", "run"},
47 Disabled: false,
42 Disabled: false,
46+func (s *ConfigStore) PrepareDockerMCPConfig() (MCPConfig, error) {
47+ if !IsDockerMCPAvailable() {
48+ return MCPConfig{}, fmt.Errorf("docker mcp is not available, please ensure docker is installed and 'docker mcp version' succeeds")
50− // Add to in-memory config.
51+ mcpConfig := DockerMCPConfig()
51 if s.config.MCP == nil {
52 if s.config.MCP == nil {
52 s.config.MCP = make(map[string]MCPConfig)
53 s.config.MCP = make(map[string]MCPConfig)
54 s.config.MCP[DockerMCPName] = mcpConfig
55 s.config.MCP[DockerMCPName] = mcpConfig
56+ return mcpConfig, nil
56− // Persist to config file.
59+func (s *ConfigStore) PersistDockerMCPConfig(mcpConfig MCPConfig) error {
57 if err := s.SetConfigField(ScopeGlobal, "mcp."+DockerMCPName, mcpConfig); err != nil {
60 if err := s.SetConfigField(ScopeGlobal, "mcp."+DockerMCPName, mcpConfig); err != nil {
58 return fmt.Errorf("failed to persist docker mcp configuration: %w", err)
61 return fmt.Errorf("failed to persist docker mcp configuration: %w", err)
66+// EnableDockerMCP adds Docker MCP configuration and persists it.
67+func (s *ConfigStore) EnableDockerMCP() error {
68+ mcpConfig, err := s.PrepareDockerMCPConfig()
72+ if err := s.PersistDockerMCPConfig(mcpConfig); err != nil {
61 return nil
75 return nil