概要
今天我们使用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/