当前位置: 首页 > news >正文

Go开发mcp入门示例

main.go

package mainimport ("context""fmt""github.com/mark3labs/mcp-go/mcp""github.com/mark3labs/mcp-go/server"
)func main() {// 创建一个新的MCP服务器s := server.NewMCPServer("mcp入门示例","1.0.0",server.WithResourceCapabilities(true, true),server.WithLogging(),)// 添加一个计算器工具calculatorTool := mcp.NewTool("calculate",mcp.WithDescription("执行计算"),mcp.WithString("operation",mcp.Required(),mcp.Description("要执行的操作(add, subtract, multiply, divide)"),mcp.Enum("add", "subtract", "multiply", "divide"),),mcp.WithNumber("x",mcp.Required(),mcp.Description("第一个数"),),mcp.WithNumber("y",mcp.Required(),mcp.Description("第二个数"),),)// 添加计算器处理程序,功能多了就是添加n个程序,类似于路由s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {// 使用GetArguments()方法获取参数arguments := request.GetArguments()// 安全地获取operation参数opValue, ok := arguments["operation"]if !ok {return mcp.NewToolResultError("Missing operation parameter"), nil}op, ok := opValue.(string)if !ok {return mcp.NewToolResultError("Operation parameter must be a string"), nil}// 安全地获取x参数xValue, ok := arguments["x"]if !ok {return mcp.NewToolResultError("Missing x parameter"), nil}x, ok := xValue.(float64)if !ok {// 尝试转换为float64if xFloat, ok := xValue.(float32); ok {x = float64(xFloat)} else if xInt, ok := xValue.(int); ok {x = float64(xInt)} else {return mcp.NewToolResultError("X parameter must be a number"), nil}}// 安全地获取y参数yValue, ok := arguments["y"]if !ok {return mcp.NewToolResultError("Missing y parameter"), nil}y, ok := yValue.(float64)if !ok {// 尝试转换为float64if yFloat, ok := yValue.(float32); ok {y = float64(yFloat)} else if yInt, ok := yValue.(int); ok {y = float64(yInt)} else {return mcp.NewToolResultError("Y parameter must be a number"), nil}}var result float64switch op {case "add":result = x + ycase "subtract":result = x - ycase "multiply":result = x * ycase "divide":if y == 0 {return mcp.NewToolResultError("Cannot divide by zero"), nil}result = x / y}return mcp.NewToolResultText(fmt.Sprintf("%.2f", result)), nil})// 启动服务器if err := server.ServeStdio(s); err != nil {fmt.Printf("Server error: %v\n", err)}
}

执行go mod tidy

编译(可选),如果没有编译,后面配置mcp服务器可以直接用命令启动go run xx.go

配置mcp,这里我是用trace

image

测试一下,编辑器会自动选择对应的mcp

image

http://www.sczhlp.com/news/36511/

相关文章:

  • 网站子目录怎么做反向代理设置网络推广的方式和途径有哪些
  • 做网站工程案例图片搜索引擎调词平台价格
  • 杭州哪家做网站比较好2022近期时事热点素材摘抄
  • 精美网页图片扬州网站seo
  • 东西湖做网站百度账号出售平台
  • wordpress 取一类文章郑州网站seo技术
  • 网站备案信息真实核验单下载企业培训课程分类
  • 周至做网站的公司桌面百度
  • 登录入口注册珠海优化seo
  • 做任务赚钱网站源码广州网页seo排名
  • C# 中实现 DataGridView 数据的自动刷新
  • 【视频笔记】云原生到底是个啥
  • 华为路由器 MESH 智联组网
  • 响应式企业网站外链吧
  • 汕头市委网站两学一做武汉网站seo推广公司
  • wordpress分销网络推广seo公司
  • php动态网站开发 唐四薪 答案如何给公司做网络推广
  • 安顺网站建设最新新闻事件今天疫情
  • 杭州网站建设招聘新手怎样做网络推广
  • mathtype内嵌wps中使用教程
  • 唐山建设工程造价信息网站百度关键词优化曝光行者seo
  • 优秀的响应式网站模板下载谷歌排名推广公司
  • 国家发改委网站吉抚武温铁路建设市场推广
  • 网站如何被搜索到友链通
  • 邵武网站建设本周热点新闻事件
  • 当当网的网站建设目标是晋中网站seo
  • 怎样找到专业做网站人公众号seo排名软件
  • 安徽政府网站建设公司网址怎么制作
  • 网站建设流程与步骤seo技术优化技巧
  • 企业网站建设公司哪家好营销策划方案ppt范文