@@ -256,17 +256,17 @@ func getToolsForAgent(a *latest.AgentConfig, parentDir string, sharedTools map[s
256256 serverName := strings .TrimPrefix (toolset .Ref , "docker:" )
257257 args := []string {"mcp" , "gateway" , "run" , "--servers=" + serverName }
258258
259+ var cleanUp func () error
259260 if toolset .Config != nil {
260- serverConfig := map [string ]any {
261- serverName : toolset .Config ,
262- }
263-
264261 file , err := os .CreateTemp ("" , "mcp-config-*.yaml" )
265262 if err != nil {
266263 return nil , fmt .Errorf ("failed to create temp file: %w" , err )
267264 }
268- // TODO(dga): Delete the temp file after use.
265+ cleanUp = func () error { return os . Remove ( file . Name ()) }
269266
267+ serverConfig := map [string ]any {
268+ serverName : toolset .Config ,
269+ }
270270 if err := yaml .NewEncoder (file ).Encode (serverConfig ); err != nil {
271271 return nil , fmt .Errorf ("failed to write config to temp file: %w" , err )
272272 }
@@ -279,10 +279,10 @@ func getToolsForAgent(a *latest.AgentConfig, parentDir string, sharedTools map[s
279279 args = append (args , "--catalog=https://desktop.docker.com/mcp/catalog/v2/catalog.yaml" )
280280
281281 // TODO(dga): If the server's docker image had the right annotations, we could run it directly with `docker run` or with the MCP gateway as a go library.
282- t = append (t , mcp .NewToolsetCommand ("docker" , args , os .Environ (), toolset .Tools ))
282+ t = append (t , mcp .NewToolsetCommand ("docker" , args , os .Environ (), toolset .Tools , cleanUp ))
283283
284284 case toolset .Type == "mcp" && toolset .Command != "" :
285- t = append (t , mcp .NewToolsetCommand (toolset .Command , toolset .Args , os .Environ (), toolset .Tools ))
285+ t = append (t , mcp .NewToolsetCommand (toolset .Command , toolset .Args , os .Environ (), toolset .Tools , nil ))
286286
287287 case toolset .Type == "mcp" && toolset .Remote .URL != "" :
288288 // Expand headers.
0 commit comments