package main import ( "bytes" "encoding/json" "fmt" "io" "net/http" "time" ) // MCPRequest 定义MCP请求结构 type MCPRequest struct { Data interface{} `json:"data"` Type string `json:"type"` Metadata map[string]string `json:"metadata,omitempty"` Timestamp int64 `json:"timestamp"` } // MCPResponse 定义MCP响应结构 type MCPResponse struct { Success bool `json:"success"` Message string `json:"message,omitempty"` Data interface{} `json:"data,omitempty"` AIResult interface{} `json:"ai_result,omitempty"` RequestID string `json:"request_id,omitempty"` Timestamp int64 `json:"timestamp"` } func main() { // 准备测试数据 diskData := map[string]interface{}{ "disk_id": "sda", "smart_data": map[string]interface{}{ "temperature": 38, "power_on_hours": 12345, "read_errors": 0, "write_errors": 0, "reallocated_sectors": 0, }, "performance_data": map[string]interface{}{ "read_speed": 120, "write_speed": 90, "io_wait": 0.5, }, } // 创建MCP请求 mcpRequest := MCPRequest{ Data: diskData, Type: "disk_inspection", Metadata: map[string]string{"server_id": "test-server", "location": "test-lab"}, Timestamp: time.Now().Unix(), } // 序列化请求数据 jsonData, err := json.Marshal(mcpRequest) if err != nil { fmt.Printf("序列化请求数据失败: %v\n", err) return } // 发送HTTP请求到MCP服务器 resp, err := http.Post("http://localhost:8080/mcp/v1/submit", "application/json", bytes.NewBuffer(jsonData)) if err != nil { fmt.Printf("发送请求失败: %v\n", err) fmt.Println("请确保MCP服务器正在运行,并且监听在正确的端口上") return } defer resp.Body.Close() // 读取响应 body, err := io.ReadAll(resp.Body) if err != nil { fmt.Printf("读取响应失败: %v\n", err) return } // 打印响应状态和内容 fmt.Printf("响应状态码: %d\n", resp.StatusCode) // 如果响应成功,解析并显示详细信息 if resp.StatusCode == http.StatusOK { var mcpResponse MCPResponse if err := json.Unmarshal(body, &mcpResponse); err != nil { fmt.Printf("解析响应数据失败: %v\n", err) fmt.Printf("原始响应内容: %s\n", string(body)) return } // 格式化输出响应数据 fmt.Println("\nMCP服务器响应:") fmt.Printf(" 成功状态: %v\n", mcpResponse.Success) fmt.Printf(" 消息: %s\n", mcpResponse.Message) fmt.Printf(" 请求ID: %s\n", mcpResponse.RequestID) fmt.Printf(" 时间戳: %d (%s)\n", mcpResponse.Timestamp, time.Unix(mcpResponse.Timestamp, 0).Format("2006-01-02 15:04:05")) // 输出AI分析结果(如果有) if mcpResponse.AIResult != nil { fmt.Println("\nAI分析结果:") aiResultJSON, _ := json.MarshalIndent(mcpResponse.AIResult, " ", " ") fmt.Println(string(aiResultJSON)) } } else { fmt.Printf("请求失败,响应内容: %s\n", string(body)) } // 测试健康检查接口 testHealthCheck() } // 测试健康检查接口 func testHealthCheck() { fmt.Println("\n测试健康检查接口...") resp, err := http.Get("http://localhost:8080/health") if err != nil { fmt.Printf("健康检查失败: %v\n", err) return } defer resp.Body.Close() body, err := io.ReadAll(resp.Body) if err != nil { fmt.Printf("读取健康检查响应失败: %v\n", err) return } fmt.Printf("健康检查状态码: %d\n", resp.StatusCode) fmt.Printf("健康检查响应: %s\n", string(body)) }