status.go 968 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package nginx
  2. import (
  3. "context"
  4. "encoding/json"
  5. "github.com/0xJacky/Nginx-UI/internal/nginx"
  6. "github.com/gin-gonic/gin"
  7. "github.com/mark3labs/mcp-go/mcp"
  8. )
  9. const nginxStatusToolName = "nginx_status"
  10. // statusResource is the status of the Nginx server
  11. var statusTool = mcp.NewTool(
  12. nginxStatusToolName,
  13. mcp.WithDescription("This is the status of the Nginx server"),
  14. )
  15. // handleNginxStatus handles the Nginx status request
  16. func handleNginxStatus(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
  17. lastResult := nginx.GetLastResult()
  18. if lastResult.IsError() {
  19. return mcp.NewToolResultError(lastResult.GetOutput()), lastResult.GetError()
  20. }
  21. // build result
  22. result := gin.H{
  23. "running": nginx.IsRunning(),
  24. "message": lastResult.GetOutput(),
  25. "level": lastResult.GetLevel(),
  26. }
  27. // marshal to json and return text result
  28. jsonResult, _ := json.Marshal(result)
  29. return mcp.NewToolResultText(string(jsonResult)), nil
  30. }