Skip to content

Commit 8162aee

Browse files
author
Roman Wu
authored
Improve secret handling by logging missing secrets and deduplicating … (docker#95)
* Improve secret handling by logging missing secrets and deduplicating secret names * Refactor secret deduplication to use struct for improved memory efficiency
1 parent 713c9fd commit 8162aee

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

cmd/docker-mcp/internal/gateway/clientpool.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ func (cp *clientPool) argsAndEnv(serverConfig *catalog.ServerConfig, readOnly *b
272272
if ok {
273273
env = append(env, fmt.Sprintf("%s=%s", s.Env, secretValue))
274274
} else {
275+
logf("Warning: Secret '%s' not found for server '%s', setting %s=<UNKNOWN>", s.Name, serverConfig.Name, s.Env)
275276
env = append(env, fmt.Sprintf("%s=%s", s.Env, "<UNKNOWN>"))
276277
}
277278
}

cmd/docker-mcp/internal/gateway/configuration.go

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,9 @@ func (c *FileBasedConfiguration) readToolsConfig(ctx context.Context) (config.To
392392
}
393393

394394
func (c *FileBasedConfiguration) readDockerDesktopSecrets(ctx context.Context, servers map[string]catalog.Server, serverNames []string) (map[string]string, error) {
395-
var secretNames []string
395+
// Use a map to deduplicate secret names
396+
uniqueSecretNames := make(map[string]struct{})
397+
396398
for _, serverName := range serverNames {
397399
serverName := strings.TrimSpace(serverName)
398400

@@ -402,14 +404,20 @@ func (c *FileBasedConfiguration) readDockerDesktopSecrets(ctx context.Context, s
402404
}
403405

404406
for _, s := range serverSpec.Secrets {
405-
secretNames = append(secretNames, s.Name)
407+
uniqueSecretNames[s.Name] = struct{}{}
406408
}
407409
}
408410

409-
if len(secretNames) == 0 {
411+
if len(uniqueSecretNames) == 0 {
410412
return map[string]string{}, nil
411413
}
412414

415+
// Convert map keys to slice
416+
var secretNames []string
417+
for name := range uniqueSecretNames {
418+
secretNames = append(secretNames, name)
419+
}
420+
413421
log(" - Reading secrets", secretNames)
414422
secretsByName, err := c.docker.ReadSecrets(ctx, secretNames, true)
415423
if err != nil {

0 commit comments

Comments
 (0)