【Golang玩转MCP】-实现一个加减乘除MCP服务

发布于:2025-06-24 ⋅ 阅读:(11) ⋅ 点赞:(0)

概要

今天我们使用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 handler
	s.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)), nil
	case "subtract":
		return mcp.NewToolResultText(fmt.Sprintf("%f", x-y)), nil
	case "multiply":
		return mcp.NewToolResultText(fmt.Sprintf("%f", x*y)), nil
	case "divide":
		if y == 0 {
			return mcp.NewToolResultError("Cannot divide by zero"), nil
		}
		return mcp.NewToolResultText(fmt.Sprintf("%f", x/y)), nil
	default:
		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/


网站公告

今日签到

点亮在社区的每一天
去签到