dashboard.go 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package service
  2. import (
  3. "context"
  4. "github.com/mark3labs/mcp-go/mcp"
  5. "github.com/mark3labs/mcp-go/server"
  6. "fwh-toolbox-server/cmd/mcp/tools/helper"
  7. "fwh-toolbox-server/services"
  8. )
  9. func registerDashboardTools(s *server.MCPServer) {
  10. s.AddTool(
  11. mcp.NewTool("service_dashboard_shutdown_date",
  12. mcp.WithDescription("查询停机统计最新可用日期"),
  13. ),
  14. handleDashboardShutdownDate,
  15. )
  16. s.AddTool(
  17. mcp.NewTool("service_dashboard_shutdown_detail",
  18. mcp.WithDescription("查询指定日期的停机详情数据(含各站点停机信息)"),
  19. mcp.WithString("date", mcp.Description("统计日期,格式 yyyy-MM-dd(不传则查最新)")),
  20. ),
  21. handleDashboardShutdownDetail,
  22. )
  23. s.AddTool(
  24. mcp.NewTool("service_dashboard_alarm_detail",
  25. mcp.WithDescription("查询指定日期的告警详情数据(含各站点告警码统计)"),
  26. mcp.WithString("date", mcp.Description("统计日期,格式 yyyy-MM-dd(不传则查最新)")),
  27. ),
  28. handleDashboardAlarmDetail,
  29. )
  30. }
  31. func handleDashboardShutdownDate(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
  32. date, err := services.GetShutdownStatisticsDate()
  33. if err != nil {
  34. return helper.ServiceError("查询停机统计日期", err), nil
  35. }
  36. if date == nil {
  37. return helper.EmptyResult("暂无停机统计数据"), nil
  38. }
  39. return helper.TextResult(*date), nil
  40. }
  41. func handleDashboardShutdownDetail(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
  42. date := req.GetString("date", "")
  43. var datePtr *string
  44. if date != "" {
  45. datePtr = &date
  46. }
  47. data, err := services.GetShutdownInfoMap(datePtr)
  48. if err != nil {
  49. return helper.ServiceError("查询停机详情", err), nil
  50. }
  51. return helper.JSONResultOrFileAuto(data), nil
  52. }
  53. func handleDashboardAlarmDetail(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
  54. date := req.GetString("date", "")
  55. var datePtr *string
  56. if date != "" {
  57. datePtr = &date
  58. }
  59. data, err := services.GetAlarmStatisticsInfoMap(datePtr)
  60. if err != nil {
  61. return helper.ServiceError("查询告警详情", err), nil
  62. }
  63. return helper.JSONResultOrFileAuto(data), nil
  64. }