config_list.go 1.0 KB

123456789101112131415161718192021222324252627282930313233
  1. package config
  2. import (
  3. "context"
  4. "encoding/json"
  5. "os"
  6. "strings"
  7. "github.com/0xJacky/Nginx-UI/internal/config"
  8. "github.com/mark3labs/mcp-go/mcp"
  9. )
  10. const nginxConfigListToolName = "nginx_config_list"
  11. var nginxConfigListTool = mcp.NewTool(
  12. nginxConfigListToolName,
  13. mcp.WithDescription("This is the list of Nginx configurations"),
  14. mcp.WithString("relative_path", mcp.Description("The relative path to the Nginx configurations")),
  15. mcp.WithString("filter_by_name", mcp.Description("Filter the Nginx configurations by name")),
  16. )
  17. func handleNginxConfigList(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
  18. args := request.GetArguments()
  19. relativePath := args["relative_path"].(string)
  20. filterByName := args["filter_by_name"].(string)
  21. configs, err := config.GetConfigList(relativePath, func(file os.FileInfo) bool {
  22. return filterByName == "" || strings.Contains(file.Name(), filterByName)
  23. })
  24. jsonResult, _ := json.Marshal(configs)
  25. return mcp.NewToolResultText(string(jsonResult)), err
  26. }