nginx-ui/mcp/nginx/status.go
2025-04-29 17:41:09 +08:00

41 lines
993 B
Go

package nginx
import (
"context"
"encoding/json"
"github.com/0xJacky/Nginx-UI/internal/nginx"
"github.com/gin-gonic/gin"
"github.com/mark3labs/mcp-go/mcp"
)
const nginxStatusToolName = "nginx_status"
// statusResource is the status of the Nginx server
var statusTool = mcp.NewTool(
nginxStatusToolName,
mcp.WithDescription("This is the status of the Nginx server"),
)
// handleNginxStatus handles the Nginx status request
func handleNginxStatus(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
lastOutput, err := nginx.GetLastOutput()
if err != nil {
return mcp.NewToolResultError(lastOutput + "\n" + err.Error()), err
}
running := nginx.IsNginxRunning()
level := nginx.GetLogLevel(lastOutput)
// build result
result := gin.H{
"running": running,
"message": lastOutput,
"level": level,
}
// marshal to json and return text result
jsonResult, _ := json.Marshal(result)
return mcp.NewToolResultText(string(jsonResult)), nil
}