config_list.go 1.0 KB

1234567891011121314151617181920212223242526272829303132
  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. relativePath := request.Params.Arguments["relative_path"].(string)
  19. filterByName := request.Params.Arguments["filter_by_name"].(string)
  20. configs, err := config.GetConfigList(relativePath, func(file os.FileInfo) bool {
  21. return filterByName == "" || strings.Contains(file.Name(), filterByName)
  22. })
  23. jsonResult, _ := json.Marshal(configs)
  24. return mcp.NewToolResultText(string(jsonResult)), err
  25. }