【Golang玩转MCP】-实现一个加减乘除MCP服务
文章目录
- 概要
- 1 首先创建一个MCP服务器
- 2 添加MCP工具
- 如何测试我们的MCP服务功能是否正常呢
- 小结
概要
今天我们使用golang简单实现一个加减乘除MCP服务
1 首先创建一个MCP服务器
s := server.NewMCPServer("Hello World Server","1.0.0",server.WithToolCapabilities(true), #开放工具列表给AI)
2 添加MCP工具
tool := mcp.NewTool("calculate",mcp.WithDescription("Perform arithmetic operations"),mcp.WithString("operation",mcp.Required(),mcp.Enum("add", "subtract", "multiply", "divide"),mcp.Description("The arithmetic operation to perform"),),mcp.WithNumber("x", mcp.Required(), mcp.Description("First number")),mcp.WithNumber("y", mcp.Required(), mcp.Description("Second number")),)// Add tool handlers.AddTool(tool, calHandler)
calHandler为具体实现方法【这里实现了计算的基础方法】
func calHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {x, err := request.RequireFloat("x")if err != nil {return mcp.NewToolResultError(err.Error()), nil}y, err := request.RequireFloat("y")if err != nil {return mcp.NewToolResultError(err.Error()), nil}operation, err := request.RequireString("operation")if err != nil {return mcp.NewToolResultError(err.Error()), nil}switch operation {case "add":return mcp.NewToolResultText(fmt.Sprintf("%f", x+y)), nilcase "subtract":return mcp.NewToolResultText(fmt.Sprintf("%f", x-y)), nilcase "multiply":return mcp.NewToolResultText(fmt.Sprintf("%f", x*y)), nilcase "divide":if y == 0 {return mcp.NewToolResultError("Cannot divide by zero"), nil}return mcp.NewToolResultText(fmt.Sprintf("%f", x/y)), nildefault:return mcp.NewToolResultError("Unknown operation"), nil}
}
如何测试我们的MCP服务功能是否正常呢
可以使用 MCP Inspector 进行测试
# Install the MCP Inspector
npm install -g @modelcontextprotocol/inspector# Run your server with the inspector
mcp-inspector go run main.go
运行成功之后会弹出一个界面
我们点击左边的连接就能开始调试我们的MCP服务了
小结
目前MCP-GO官方的文档非常详细了,大家可以参考文档里面进行学习开发。我这里就不做过多的赘述了。看官方文档比任何一些教程都要靠谱
https://mcp-go.dev/