extractSecretsFromConfig extracts all required secrets from an MCP server config
(config parser.RegistryMCPServerConfig)
| 64 | |
| 65 | // extractSecretsFromConfig extracts all required secrets from an MCP server config |
| 66 | func extractSecretsFromConfig(config parser.RegistryMCPServerConfig) []SecretInfo { |
| 67 | secretsLog.Printf("Extracting secrets from MCP config: command=%s", config.Command) |
| 68 | var secrets []SecretInfo |
| 69 | seen := make(map[string]struct { |
| 70 | }) |
| 71 | |
| 72 | // Extract from HTTP headers |
| 73 | for key, value := range config.Headers { |
| 74 | secretName := workflow.ExtractSecretName(value) |
| 75 | if secretName != "" && !setutil.Contains(seen, secretName) { |
| 76 | secrets = append(secrets, SecretInfo{ |
| 77 | Name: secretName, |
| 78 | EnvKey: key, |
| 79 | }) |
| 80 | seen[secretName] = struct { |
| 81 | }{} |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | // Extract from environment variables |
| 86 | for key, value := range config.Env { |
| 87 | secretName := workflow.ExtractSecretName(value) |
| 88 | if secretName != "" && !setutil.Contains(seen, secretName) { |
| 89 | secrets = append(secrets, SecretInfo{ |
| 90 | Name: secretName, |
| 91 | EnvKey: key, |
| 92 | }) |
| 93 | seen[secretName] = struct { |
| 94 | }{} |
| 95 | } |
| 96 | } |
| 97 | |
| 98 | secretsLog.Printf("Extracted %d secrets from config", len(secrets)) |
| 99 | return secrets |
| 100 | } |
| 101 | |
| 102 | // checkSecretsAvailability checks which secrets are available and where |
| 103 | func checkSecretsAvailability(secrets []SecretInfo, useActionsSecrets bool) []SecretInfo { |