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

网站空间虚拟主机互联网网站排名

网站空间虚拟主机,互联网网站排名,网站转化率是什么意思,微商城网站建设什么是MCP? MCP(Model Communication Protocol)是一种用于大语言模型(LLM)与外部工具进行交互的协议。它允许大语言模型在处理用户请求时,调用外部工具(如计算器、API、数据库等)来…

什么是MCP?

MCP(Model Communication Protocol)是一种用于大语言模型(LLM)与外部工具进行交互的协议。它允许大语言模型在处理用户请求时,调用外部工具(如计算器、API、数据库等)来完成特定任务。通过 MCP,大语言模型可以扩展其功能,而无需自己实现所有逻辑。MCP 的核心思想是将复杂任务分解为多个工具调用,从而提高模型的灵活性和效率。

MCP协议的golang Sdk有哪些?

目前官方没有给出对golang的实现,不过你可以在awesome-mcp-servers项目中找到基于go的SDK,如foxy-contexts、mcp-go、mcp-golang、当前这些库使用的golang版本均比较高,使用的时候需要注意下,目前,MCP 的 Golang 实现主要由 mark3labs/mcp-go 提供。这个库为开发者提供了一套完整的工具,用于创建和管理 MCP Server。它支持工具定义、参数处理、工具调用等功能,并且提供了丰富的配置选项和日志记录功能。

MCP golang sdk

目前官方并没有go版本的sdk,我们选择的是https://github.com/mark3labs/mcp-go,这个项目✨已超过4k。

package mainimport ("context""errors""fmt""github.com/mark3labs/mcp-go/mcp""github.com/mark3labs/mcp-go/server"
)func main() {// Create MCP servers := server.NewMCPServer("Demo 🚀","1.0.0",)// Add tooltool := mcp.NewTool("hello_world",mcp.WithDescription("Say hello to someone"),mcp.WithString("name",mcp.Required(),mcp.Description("Name of the person to greet"),),)// Add tool handlers.AddTool(tool, helloHandler)// Start the stdio serverif err := server.ServeStdio(s); err != nil {fmt.Printf("Server error: %v\n", err)}
}func helloHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {name, ok := request.Params.Arguments["name"].(string)if !ok {return nil, errors.New("name must be a string")}return mcp.NewToolResultText(fmt.Sprintf("Hello, %s!", name)), nil
}

使用golang构建一个mcp server,主要分四步:

  • 1.创建一个server
  • 2.向server注册tools
  • 3.为对应的tool添加相应的handler
  • 4.启动server

下面再看一个例子

用Golang实现MCP Server的详细步骤

示例代码

下面咱们就来实际操作一下,做一个能进行加减乘除运算的MCP Server。以后大模型遇到计算任务,就能找它帮忙了。

# 创建项目目录
mkdir 001-helloMcpServer# 进入项目
cd 001-helloMcpServer# 用vscode打开项目
code . # 初始化一个新的 Go 模块
go mod init gitcode.com/m# 创建main.go文件
touch main.go

代码

package mainimport ("context""fmt""github.com/mark3labs/mcp-go/mcp""github.com/mark3labs/mcp-go/server"
)func main() {// 创建一个新的MCP服务器实例// 第一个参数是服务器名称,第二个是版本号// server.WithResourceCapabilities用于设置资源相关能力,这里两个true表示开启某些资源功能// server.WithLogging开启日志记录功能,方便查看服务器运行状态s := server.NewMCPServer("Calculator Demo","1.0.0",server.WithResourceCapabilities(true, true),server.WithLogging(),)// 创建一个名为calculate的工具// mcp.WithDescription用于描述工具的功能// mcp.WithString定义了一个名为operation的字符串类型参数,Required表示该参数是必填的// mcp.Description对参数进行描述,Enum指定了该参数的取值范围// mcp.WithNumber定义了名为x和y的数字类型参数,同样是必填的calculatorTool := mcp.NewTool("calculate",mcp.WithDescription("Perform basic arithmetic operations"),mcp.WithString("operation",mcp.Required(),mcp.Description("The operation to perform (add, subtract, multiply, divide)"),mcp.Enum("add", "subtract", "multiply", "divide"),),mcp.WithNumber("x",mcp.Required(),mcp.Description("First number"),),mcp.WithNumber("y",mcp.Required(),mcp.Description("Second number"),),)// 为calculate工具添加处理函数// 当工具被调用时,会执行这个函数// ctx是上下文对象,用于传递一些运行时的信息// request包含了调用工具时传入的参数// 返回值是调用结果和可能出现的错误s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {op := request.Params.Arguments["operation"].(string)x := request.Params.Arguments["x"].(float64)y := request.Params.Arguments["y"].(float64)var result float64switch op {case "add":result = x + ycase "subtract":result = x - ycase "multiply":result = x * ycase "divide":if y == 0 {// 如果除数为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)}
}

这个代码的handler是一个匿名函数。在s.AddTool(calculatorTool,func(){})代码时,以匿名添加进来。

下载依赖

$ go mod tidy
go: finding module for package github.com/mark3labs/mcp-go/server
go: finding module for package github.com/mark3labs/mcp-go/mcp
go: downloading github.com/mark3labs/mcp-go v0.23.1
go: found github.com/mark3labs/mcp-go/mcp in github.com/mark3labs/mcp-go v0.23.1
go: found github.com/mark3labs/mcp-go/server in github.com/mark3labs/mcp-go v0.23.1
go: downloading github.com/yosida95/uritemplate/v3 v3.0.2
go: downloading github.com/frankban/quicktest v1.14.6
go: downloading github.com/kr/pretty v0.3.1
go: downloading github.com/google/go-cmp v0.5.9
go: downloading github.com/rogpeppe/go-internal v1.9.0
go: downloading github.com/kr/text v0.2.0

生成

go build -o calculator.exe

配置到客户端插件

写好MCP Server后,还得把它配置到客户端插件里,这样大语言模型才能找到它。下面是在Windows系统中,配置cline插件的MCP Server时用到的示例JSON文件:

{"mcpServers": {"culculate_server": {"command": "C:\\Users\\Administrator\\go\\bin\\calculator.exe","args": [],"env": {"GOPATH": "C:\\Users\\Administrator\\go","GOMODCACHE": "C:\\Users\\Administrator\\go\\pkg\\mod"}}}
}

在这里插入图片描述
这里面,“command”指定了MCP Server可执行文件的路径,“args”是运行时传递的参数,这里为空,“env”则设置了一些环境变量,比如GOPATH和GOMODCACHE,这些变量在Go项目运行时很重要。

实际使用效果展示

配置完成后,我们就可以来试试效果了。在和大语言模型交互的对话框里,输入计算任务,比如“计算89989 + 4378247的结果”。大语言模型识别到这个计算任务后,会自动去调用我们配置好的MCP Server。从交互记录里可以看到,大语言模型会分析出有个叫“culculate_server”的MCP Server提供了“calculate”工具,然后根据任务要求,把“operation”设为“add”,“x”设为89989,“y”设为4378247,调用这个工具进行计算,点击Approve,最后返回计算结果4468236.00。
在这里插入图片描述
在这里插入图片描述

总结

通过上面这些步骤,咱们就成功实现了一个简单的MCP Server,它能完成基本的加减乘除运算。当然啦,这只是个开始,大家可以根据自己的实际需求,继续扩展这个MCP Server的功能。比如支持更复杂的数学运算,调用外部API获取更多数据,或者和数据库进行交互查询数据等等。要是在实现过程中遇到啥问题,欢迎在评论区留言,咱们一起讨论解决!

http://www.dtcms.com/a/604322.html

相关文章:

  • 服务平台网站设计织梦 做网站 教程
  • asp做网站得多长时间福田网站建设龙岗网站建设罗湖网站建设
  • 嘉兴网站设计公司网站打开速度与服务器
  • 网站开发赚钱在线是免费生成网
  • 知乎,闲鱼网站建设和网站运营怎样在电脑登录wordpress
  • 网站建设与服务技能实训心得体会学校做网站有些什么好处
  • 广州技术网站建设现在建设一个网站还能够赚钱吗
  • 做钓鱼网站原理西部数码网站管理助手 ftp上传文件失败
  • dw可以用来做网站吗cmsinitiatingoccupancyfraction
  • 长沙市建设网站平台的公司怎么注册公司名
  • 不让人看出wordpress建的站广东建设注册执业中心网站
  • 网站ip地址查询app简易开发平台
  • 网站开发职务黄浦上海网站建设
  • 泉州微信网站开发公司电商网站前端设计方案
  • 西安未央区做网站dedecms 网站搬迁 模板路径错误
  • 网站建设素材库网站升级建设
  • 网站结构布局微信网站平台怎么建立
  • 网站设置cookie什么意思网站建设质量要求
  • 江门网站建设哪家好在线gif图片制作
  • 手机能制作网站吗视频网站咋么做
  • 做邮轮的网站wordpress 文章排名
  • 网站建设的结论和体会镇江seo方案
  • 地方门户网站规划佛山市城市建设档案馆网站
  • 寺庙网站开发建设方案网络品牌前十大排名
  • 中国建设银行黑龙江支行官方网站手机wap端
  • 网站建设与管理指什么软件wordpress 企业网站教程
  • 营销型科技网站东方cj网上购物商城
  • 国内做性视频网站百度站长网站地图
  • wap盛唐建站邯郸做网站推广的公司
  • 网站制作多少钱啊湖南建设厅网站二建注销