| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- package tools
- import (
- "context"
- "encoding/json"
- "fmt"
- "github.com/mark3labs/mcp-go/mcp"
- "github.com/mark3labs/mcp-go/server"
- "fwh-toolbox-server/services"
- )
- func RegisterSimCardTools(s *server.MCPServer) {
- // Tool: 查询单张SIM卡
- s.AddTool(
- mcp.NewTool("query_sim_card",
- mcp.WithDescription("查询单张 SIM 卡的详细信息,包括状态、平台、用量等"),
- mcp.WithString("giccid", mcp.Required(), mcp.Description("SIM 卡 GICCID(19位)")),
- ),
- handleQuerySimCard,
- )
- // Tool: 搜索SIM卡列表
- s.AddTool(
- mcp.NewTool("search_sim_cards",
- mcp.WithDescription("搜索 SIM 卡列表,支持按状态和平台过滤"),
- mcp.WithNumber("page", mcp.Description("页码,从1开始,默认1")),
- mcp.WithNumber("size", mcp.Description("每页数量,默认10")),
- mcp.WithString("search", mcp.Description("搜索关键字(GICCID)")),
- mcp.WithString("status", mcp.Description("状态过滤:UNKNOWN, NOT_ACTIVATED, ACTIVATED, DEACTIVATED, RETIRED(逗号分隔多选)")),
- mcp.WithString("platform", mcp.Description("平台过滤:SmartHub, Acceleronix(逗号分隔多选)")),
- ),
- handleSearchSimCards,
- )
- }
- func handleQuerySimCard(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- giccid, err := req.RequireString("giccid")
- if err != nil {
- return mcp.NewToolResultError("参数 giccid 必填"), nil
- }
- data, err := services.GetSimCardInfo(giccid)
- if err != nil {
- return mcp.NewToolResultError(fmt.Sprintf("查询失败: %v", err)), nil
- }
- jsonBytes, _ := json.MarshalIndent(data, "", " ")
- return mcp.NewToolResultText(string(jsonBytes)), nil
- }
- func handleSearchSimCards(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
- page := uint(req.GetFloat("page", 1))
- size := uint(req.GetFloat("size", 10))
- search := req.GetString("search", "")
- status := req.GetString("status", "")
- platform := req.GetString("platform", "")
- var statusPtr *string
- if status != "" {
- statusPtr = &status
- }
- var platformPtr *string
- if platform != "" {
- platformPtr = &platform
- }
- data, err := services.GetSimCardBatchInfo(page, size, search, statusPtr, platformPtr)
- if err != nil {
- return mcp.NewToolResultError(fmt.Sprintf("搜索失败: %v", err)), nil
- }
- jsonBytes, _ := json.MarshalIndent(data, "", " ")
- return mcp.NewToolResultText(string(jsonBytes)), nil
- }
|