6.如何用go语言搭MCP
1.什么是MCP?
MCP是“模型上下文协议(Model Context Protocol)”的简称,用一句简单通俗易懂的话描述:
是一种让 AI 模型能够无缝连接到外部工具和数据源的标准化方式。想象它就像 AI 的“万能接口”,能让 AI 像用 USB 线连接设备一样,轻松调用其他程序或服务。
2.官方MCP架构图

MCP Hosts: 是指 LLM 启动连接的应用程序,如 Cursor、Claude Desktop、IDE 或 AI 工具。
MCP Clients: 维护与服务器一对一连接的协议客户端。
MCP Servers: 通过标准的 Model Context Protocol 给 Client 提供特定的功能。
Local Data Sources: 本地的文件、数据库和 API。
Remote Service: 外部的文件、数据库和 API。
3.MCP原理图
4.编译go MCP服务
go version:go1.24.1
mcp-go库地址:github.com/mark3labs/mcp-go
操作步骤: 下面是一个go MCP服务的demo,可以根据自己的需要添加或更改Tool,下面是详细操作步骤:
步骤1:创建项目和main.go
mkdir mcp-server
cd mcp-server
vim main.go
#在main.go中添加如下内容
package main
import (
"context"
"errors"
"fmt"
"github.com/mark3labs/mcp-go/mcp"
"github.com/mark3labs/mcp-go/server"
)
func main() {
// Create a new MCP server
s := server.NewMCPServer(
"Calculator Demo",
"1.0.0",
server.WithResourceCapabilities(true, true),
server.WithLogging(),
server.WithRecovery(),
)
// Add a calculator tool
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"),
),
)
// Add the calculator handler
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 float64
switch op {
case "add":
result = x + y
case "subtract":
result = x - y
case "multiply":
result = x * y
case "divide":
if y == 0 {
return nil, errors.New("Cannot divide by zero")
}
result = x / y
}
return mcp.NewToolResultText(fmt.Sprintf("%.2f", result)), nil
})
// Start the server
if err := server.ServeStdio(s); err != nil {
fmt.Printf("Server error: %v\n", err)
}
}
步骤2:编译
#初始化依赖包
go mod init
#加载依赖包
go mod tidy
#编译
go build -o mcpServer main.go
#查看目录文件
ls -l
#查看文件路径path
pwd
#如下:

步骤3:在Cursor中配置MCP命令
Command + Shift + J 打开Cursor配置命令,如下图所示,在json配置中添加如下内容:

{
"mcpServers": {
"calculate": {
"command": "/Users/xxx(你的项目路径)/src/mcp-service/mcpServer"
}
}
}
其中 calculate 表示的是本地MCP工具的名称,command是需要执行的命令路径。
5.在Cursor中调用MCP服务
使用MCP calculate工具,若 x = 120,y = 30 ,x + y 、x * y 、x /y 分别等于多少?
作者:admin 创建时间:2025-04-12 00:53
最后编辑:admin 更新时间:2025-04-24 10:36
最后编辑:admin 更新时间:2025-04-24 10:36