使用 Cline 和 mcp-go 跑通 MCP
只有跑通了 MCP 流程,我们才能知道 MCP 的真正强大

承接上一篇 MCP (一) 的理解,我们尝试写一个功能,集成到 MCP Host 中。

使用 tool,计算 1+2

安装 Cline 插件

Autonomous coding agent right in your IDE, capable of creating/editing files, executing commands, using the browser, and more with your permission every step of the way.

Cline 可以一步步处理复杂的软件开发任务。通过允许他创建和编辑文件、探索大型项目、使用浏览器和执行终端命令(在你授予权限后),他可以提供超越代码完成或技术支持的帮助。Cline 甚至可以使用 Model Context Protocol (MCP) 创建新工具并扩展自己的能力。虽然自主 AI 脚本传统上在沙盒环境中运行,但此扩展提供了一个人机交互的 GUI 来批准每个文件更改和终端命令,提供了一种安全且可访问的方式来探索代理 AI 的潜力。

在 VSCode 搜索 Cline 安装最新版即可,安装完成后,需要配置大模型:

我们使用 DeepSeek API。点击 Cline 顶部第二个按钮 (MCP Servers),即可看到 Cline 内置的 MCP Server 市场,之后整理一些有价值的服务,比如:GitHub MCP Server

mcp-go Server 构建

市面上已经提供各种各样的 SDK,我们的目标是学习 Golang 语言,所以选择了 https://github.com/mark3labs/mcp-go

先按照官方给的代码,我们跑下流程。先写一个简单的运算方法:

func calculatorHandler(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  
}

然后根据 SDK,创建 MCP Tool:

// Create MCP server  
s := server.NewMCPServer(  
    "Demo 🚀",  
    "1.0.0",  
)  
  
// 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"),  
    ),  
)  
  
s.AddTool(calculatorTool, calculatorHandler)  
  
// Start the stdio server  
if err := server.ServeStdio(s); err != nil {  
    fmt.Printf("Server error: %v\n", err)  
}

当然,我们还是需要引入:

import (  
    "context"  
    "errors"    
    "fmt"
    "github.com/mark3labs/mcp-go/mcp"    
    "github.com/mark3labs/mcp-go/server")

代码写完后,直接 go build,创建可执行文件已供使用。

安装 MCP Server

回到 Cline 设置界面,在刚才的 Marketplace 右侧 Installed,可以配置安装自己写的 MCP Server:

直接进入测试,输入我们要让的计算:“使用 tool,计算 1+3”。整个过程中我们没有进行任何干预,Cline 能直接连接 MCP 服务器,根据我们写的工具,将我们的问题文本直接翻译成实际调用参数,最后调用 ‘calculate’,得出结果:4。

当然,你还可以继续追问:

小结

通过简单的使用,基本跑通 MCP 逻辑。接下来我们就可以借助 MCP 去做很多实际项目,将 AI 应用到提高效率的工作和生活场景中。


最后修改于 2025-03-22