MCPcopy
hub / github.com/dagger/container-use / createEnvironmentListTool

Function createEnvironmentListTool

mcpserver/tools.go:487–519  ·  view source on GitHub ↗
(_ bool)

Source from the content-addressed store, hash-verified

485}
486
487func createEnvironmentListTool(_ bool) *Tool {
488 return &Tool{
489 Definition: newRepositoryTool(
490 "environment_list",
491 "List available environments",
492 ),
493 Handler: func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
494 repo, err := openRepository(ctx, request)
495 if err != nil {
496 return nil, err
497 }
498 envInfos, err := repo.List(ctx)
499 if err != nil {
500 return nil, fmt.Errorf("invalid source: %w", err)
501 }
502
503 // Convert EnvironmentInfo slice to EnvironmentResponse slice
504 responses := make([]EnvironmentResponse, len(envInfos))
505 for i, envInfo := range envInfos {
506 responses[i] = *environmentResponseFromEnvInfo(envInfo)
507 }
508
509 out, err := json.Marshal(responses)
510 if err != nil {
511 return nil, err
512 }
513
514 // Add warning message for LLMs
515 result := string(out) + "\n\nDO NOT change environments without explicit permission from the user"
516 return mcp.NewToolResultText(result), nil
517 },
518 }
519}
520
521func createEnvironmentRunCmdTool(singleTenant bool) *Tool {
522 return &Tool{

Callers 1

createToolsFunction · 0.85

Calls 5

newRepositoryToolFunction · 0.85
openRepositoryFunction · 0.85
ListMethod · 0.80
MarshalMethod · 0.80

Tested by

no test coverage detected