| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package tools
- import (
- "context"
- "encoding/json"
- "fmt"
- "time"
- "github.com/mark3labs/mcp-go/mcp"
- "github.com/mark3labs/mcp-go/server"
- "fwh-toolbox-server/services"
- )
- func RegisterPowerFlowTools(s *server.MCPServer) {
- s.AddTool(
- mcp.NewTool("query_power_flow",
- mcp.WithDescription("查询站点指定日期的功率流数据(PV、Grid、aPower、HomeLoad、Generator)"),
- mcp.WithString("sn", mcp.Required(), mcp.Description("站点 SN 序列号")),
- mcp.WithString("date", mcp.Required(), mcp.Description("日期,格式 yyyy-MM-dd")),
- ),
- handleQueryPowerFlow,
- )
- }
- func handleQueryPowerFlow(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- sn, err := req.RequireString("sn")
- if err != nil {
- return mcp.NewToolResultError("参数 sn 必填"), nil
- }
- dateStr, err := req.RequireString("date")
- if err != nil {
- return mcp.NewToolResultError("参数 date 必填"), nil
- }
- // 解析日期
- day, err := time.Parse("2006-01-02", dateStr)
- if err != nil {
- return mcp.NewToolResultError(fmt.Sprintf("日期格式错误,需要 yyyy-MM-dd: %v", err)), nil
- }
- data, err := services.QuerySitePowerFlow(sn, day)
- if err != nil {
- return mcp.NewToolResultError(fmt.Sprintf("查询功率流失败: %v", err)), nil
- }
- jsonBytes, _ := json.MarshalIndent(data, "", " ")
- return mcp.NewToolResultText(string(jsonBytes)), nil
- }
|