Code Sandbox MCP

package installer import ( "encoding/json" "fmt" "os" "path/filepath" "runtime" ) // MCPConfig represents the Claude Desktop config file structure type MCPConfig struct { MCPServers map[string]MCPServer `json:"mcpServers"` } // MCPServer represents a single MCP server configuration type MCPServer struct { Command string `json:"command"` Args []string `json:"args"` Env map[string]string `json:"env"` } func InstallConfig() error { configPath, err := getConfigPath() if err != nil { return err } // Create config directory if it doesn't exist configDir := filepath.Dir(configPath) if err := os.MkdirAll(configDir, 0755); err != nil { return fmt.Errorf("failed to create config directory: %w", err) } // Get the absolute path of the current executable execPath, err := os.Executable() if err != nil { return fmt.Errorf("failed to get executable path: %w", err) } execPath, err = filepath.Abs(execPath) if err != nil { return fmt.Errorf("failed to get absolute path: %w", err) } var config MCPConfig if _, err := os.Stat(configPath); err == nil { // Read existing config configData, err := os.ReadFile(configPath) if err != nil { return fmt.Errorf("failed to read config file: %w", err) } if err := json.Unmarshal(configData, &config); err != nil { return fmt.Errorf("failed to parse config file: %w", err) } } else { // Create new config config = MCPConfig{ MCPServers: make(map[string]MCPServer), } } // Add or update our server config var command string if runtime.GOOS == "windows" { command = "cmd" config.MCPServers["code-sandbox-mcp"] = MCPServer{ Command: command, Args: []string{"/c", execPath}, Env: map[string]string{}, } } else { config.MCPServers["code-sandbox-mcp"] = MCPServer{ Command: execPath, Args: []string{}, Env: map[string]string{}, } } // Write the updated config configData, err := json.MarshalIndent(config, "", " ") if err != nil { return fmt.Errorf("failed to marshal config: %w", err) } if err := os.WriteFile(configPath, configData, 0644); err != nil { return fmt.Errorf("failed to write config file: %w", err) } fmt.Printf("Added code-sandbox-mcp to %s\n", configPath) return nil } func getConfigPath() (string, error) { homeDir, err := os.UserHomeDir() if err != nil { return "", fmt.Errorf("failed to get user home directory: %w", err) } var configDir string switch runtime.GOOS { case "darwin": configDir = filepath.Join(homeDir, "Library", "Application Support", "Claude") case "windows": configDir = filepath.Join(os.Getenv("APPDATA"), "Claude") default: // linux and others configDir = filepath.Join(homeDir, ".config", "Claude") } return filepath.Join(configDir, "claude_desktop_config.json"), nil }