|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
作者:微信文章
👆点击MarkShuo智能体 > 点击右上角··· > 设为星标🌟
嗨~我是MarkShuo阿里国际官方签约AI导师,企业AI咨询顾问。目前专注商业AI智能体开发、教学、企业咨询,持续分享商业智能体、流程自动化、Coze智能体模板定制、coze商业工作流搭建案例。
今天给大家带来的智能体MCP实践是Trae + 八字MCP打造八字智能体精准测算,由于上期写的八字MCP排盘算命非常的火。有粉丝说能不能出一个精准测算解盘的智能体。如您所愿他来了。只要输入姓名,姓别,年月日时,就能精准测算你的人生。让那些只会使用DeepSeek算命的人去颤抖吧。一晃我学易经都七年了。有些粉丝还不相信。这是第一讲在大连碧海观学习的的照片。因为疫情的原因把本来只需要2年的课程硬上拉长到了5年。一切都是最好的安排。因为时间拉得比较长,反而把基础打扎实了。鉴于大家对算命的热情度我们来手把手带着大家做一个八字智能体。真正意义上的做到:万事不决问AI。
先我们封装一个八字测算的MCP服务,以下是服务端的代码。
⚽
func main() {
var transport string
flag.StringVar(&transport, "t", "stdio", "传输协议类型(stdio或sse)")
flag.StringVar(&transport, "transport", "stdio", "传输协议类型(stdio或sse)")
flag.Parse()
s := server.NewMCPServer(
"PaipanService",
"1.0.0",
)
paipanTool := mcp.NewTool("Paipan",
mcp.WithDescription("排盘服务,输入姓名、性别、出生时间、历法类型和省市,自动转换为API参数"),
mcp.WithString("name", mcp.Required(), mcp.Description("姓名")),
mcp.WithString("sex", mcp.Required(), mcp.Description("性别,0为男,1为女")),
mcp.WithString("calendar_type", mcp.Required(), mcp.Description("历法类型,公历填solar,农历填lunar")),
mcp.WithString("year", mcp.Required(), mcp.Description("出生年")),
mcp.WithString("month", mcp.Required(), mcp.Description("出生月")),
mcp.WithString("day", mcp.Required(), mcp.Description("出生日")),
mcp.WithString("hour", mcp.Required(), mcp.Description("出生小时")),
mcp.WithString("minute", mcp.Required(), mcp.Description("出生分钟")),
mcp.WithString("province", mcp.Required(), mcp.Description("省份")),
mcp.WithString("city", mcp.Required(), mcp.Description("城市")),
)
cesuanTool := mcp.NewTool("Cesuan",
mcp.WithDescription("测算服务,输入姓名、性别、出生时间、历法类型、省市和问题内容,自动转换为API参数"),
mcp.WithString("name", mcp.Required(), mcp.Description("姓名")),
mcp.WithString("sex", mcp.Required(), mcp.Description("性别,0为男,1为女")),
mcp.WithString("calendar_type", mcp.Required(), mcp.Description("历法类型,公历填solar,农历填lunar")),
mcp.WithString("year", mcp.Required(), mcp.Description("出生年")),
mcp.WithString("month", mcp.Required(), mcp.Description("出生月")),
mcp.WithString("day", mcp.Required(), mcp.Description("出生日")),
mcp.WithString("hour", mcp.Required(), mcp.Description("出生小时")),
mcp.WithString("minute", mcp.Required(), mcp.Description("出生分钟")),
mcp.WithString("province", mcp.Required(), mcp.Description("省份")),
mcp.WithString("city", mcp.Required(), mcp.Description("城市")),
)
s.AddTool(paipanTool, paipan)
s.AddTool(cesuanTool, cesuan)
switch transport {
case "stdio":
if err := server.ServeStdio(s); err != nil {
log.Fatalf("Server error: %v", err)
}
case "sse":
sseServer := server.NewSSEServer(s)
log.Println("MCP Paipan Service SSE started on :9000")
if err := sseServer.Start(":9000"); err != nil {
log.Fatalf("SSE server error: %v", err)
}
default:
log.Fatalf("未知的传输协议: %s (仅支持 stdio 或 sse)", transport)
}
}
核心测算部分的代码我们封装成函数,如下所示
🎨
// cesuan功能实现
func cesuan(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
params := map[string]string{}
log.Printf("cesuan请求参数: %s", req)
fields := []string{"api_key", "name", "sex", "type", "year", "month", "day", "hour", "minute", "zhen", "province", "city"}
for _, field := range fields {
val, _ := req.RequireString(field)
params[field] = val
}
// 组装API参数
apiParams := map[string]string{}
apiParams["name"] = params["name"]
apiParams["sex"] = params["sex"]
apiParams["province"] = params["province"]
apiParams["city"] = params["city"]
apiParams["hours"] = params["hour"]
if apiParams["hours"] == "" {
apiParams["hours"] = params["hour"]
}
apiParams["minute"] = params["minute"]
apiParams["year"] = params["year"]
apiParams["month"] = params["month"]
apiParams["day"] = params["day"]
apiParams["zhen"] = "1" // 默认自动真太阳时
apiParams["type"] = "1" // 默认公历
if params["calendar_type"] == "lunar" {
apiParams["type"] = "0" // 0为农历
}
// 处理性别:用户输入"男"或"女",API需要0(男)或1(女)
sexInput := params["sex"]
sexVal := "0" // 默认男
if sexInput == "女" || sexInput == "female" {
sexVal = "1"
}
apiParams["sex"] = sexVal
// 处理省市后缀
city := params["city"]
if strings.HasSuffix(city, "市") {
city = strings.TrimSuffix(city, "市")
}
apiParams["city"] = city
// 真太阳时转换
lng, lat, err := getLocation(apiParams["province"], apiParams["city"])
if err == nil {
year, _ := strconv.Atoi(apiParams["year"])
month, _ := strconv.Atoi(apiParams["month"])
day, _ := strconv.Atoi(apiParams["day"])
hour, _ := strconv.Atoi(apiParams["hours"])
minute, _ := strconv.Atoi(apiParams["minute"])
h, m, shicha := solarTimeCorrection(year, month, day, hour, minute, lng)
apiParams["hours"] = fmt.Sprintf("%d", h)
apiParams["minute"] = fmt.Sprintf("%d", m)
apiParams["jingdu"] = fmt.Sprintf("%.2f", lng)
apiParams["weidu"] = fmt.Sprintf("%.2f", lat)
apiParams["shicha"] = shicha
}
// 构造POST请求(application/x-www-form-urlencoded)
formData := make([]string, 0, len(apiParams))
for k, v := range apiParams {
formData = append(formData, fmt.Sprintf("%s=%s", k, v))
}
formBody := strings.Join(formData, "&")
log.Printf("cesuan请求参数: %s", formBody)
url := "https://api.markshuo.com/v1/Bazi/cesuan"
resp, err := http.Post(url, "application/x-www-form-urlencoded", strings.NewReader(formBody))
if err != nil {
return mcp.NewToolResultError("远程接口请求失败: " + err.Error()), nil
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return mcp.NewToolResultError("读取远程接口响应失败: " + err.Error()), nil
}
result := strings.TrimSpace(string(body))
var obj map[string]interface{}
if err := json.Unmarshal(body, &obj); err == nil {
return mcp.NewToolResultText(result), nil
}
return mcp.NewToolResultText(result), nil
}
代码封装完成后,启动MCP服务供MCP客户端掉用
🎹
go run main.go -t sse
在Trae客户端中添加MCP服务,对应的配置文件如下。配置成功后会显示以下界面
{
"mcpServers": {
"MarkShuo八字排盘测算MCP": {
"url": "http://localhost:9000/sse"
}
}
}
再将MCP服务封装成为智能体,以下是提示词
你是一个易经国学专家,请根据用户输入的,姓名,性别,出生年月日时,时间公历农历,出生的省市。调用Cesuan Service 服务。生成八字排盘表和测算结果。根据生成的八字排盘表以及测算结果。
按照以下的顺序生成内容:
1.八字原盘
2.八字大运
3.八字测算内容
将上面生成的内容按照下面的要求生成HTML文件。要求如下:
请设计高级的知识卡片,将日常信息以精致奢华的杂志编排呈现,让用户感受到如同翻阅高端杂志般的视觉享受。
设计风格:
样式:ios消息,符合苹果的设计美学,头像
改用UI Avatars服务生成文字头像
为每个人物设置了独特的背景色,与其消息气泡颜色相匹配:
技术规范:
使用HTML5、Font Awesome、Tailwind CSS和必要的JavaScript
Font Awesome: https://lf6-cdn-tos.bytecdntp.com/cdn/expire-100-M/font-awesome/6.0.0/css/all.min.css
Tailwind CSS: https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/tailwindcss/2.2.19/tailwind.min.css
中文字体: https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap
可考虑添加微妙的动效,如页面载入时的淡入效果或微妙的悬停反馈
确保代码简洁高效,注重性能和可维护性
使用CSS变量管理颜色和间距,便于风格统一
输出要求:
提供一个完整的HTML文件,
代码应当优雅且符合最佳实践,CSS应体现出对细节的极致追求
封装好智能体后,直接在对话框里提交八字信息,生成测算页面
看看最终八字智能体给的测算报告如何?
🎯 🔥🔥🔥往期精选🔥🔥🔥
AI智能体-MCP智能体-Trae+八字MCP排盘算命
AI智能体-MCP智能体-Trae + Md2Card MCP将MD文件转换成知识卡片
Coze智能体-抖音爆款视频生成小红书笔记
Coze智能体-英语记忆王-定制画板-自定义插件-自定义Logo |
|