项目简介
'go-sdk' 是Model Context Protocol (MCP) 的官方Go语言软件开发工具包。它提供了一套完整的API和工具,用于构建与LLM客户端进行上下文交互的MCP服务器和客户端。该SDK支持管理资源、注册和调用工具、定义Prompt模板,并通过JSON-RPC协议进行通信,支持多种传输方式。
主要功能点
- MCP服务器构建: 轻松创建和运行MCP服务器,定义其能力。
- 资源管理: 托管和管理数据资源,提供数据访问能力。
- 工具注册与执行: 允许LLM客户端调用外部功能或服务。
- Prompt模板定义: 支持定义和渲染Prompt模板,以支持可定制的LLM交互模式。
- 多种传输协议: 支持Stdio、SSE (Server-Sent Events) 和Streamable HTTP等传输协议。
- 会话与能力声明: 负责会话管理并向客户端声明服务器支持的能力。
- 中间件支持: 提供发送和接收中间件,方便集成日志、认证、限流等功能。
安装步骤
- 确保已安装Go语言环境 (Go 1.21 或更高版本)。
- 在您的Go项目中,通过以下命令引入MCP Go SDK:
go get github.com/modelcontextprotocol/go-sdk/mcp
服务器配置
MCP服务器需要通过启动命令来运行,MCP客户端通过这些命令与服务器建立连接。以下是一个MCP客户端配置示例,用于连接使用'go-sdk'构建的“问候”服务器:
{ "implementation": { "name": "greeter", "version": "v1.0.0" }, "command": { "program": "myserver", // MCP服务器的可执行文件路径或命令 "args": [] // MCP服务器的启动参数 (如果有) }, "capabilities": { "tools": { "listChanged": true } } }
- 'program': 指向您的MCP服务器可执行文件的路径或命令,例如,如果您编译了一个名为 'myserver' 的Go程序,这里就是 'myserver'。
- 'args': 如果您的服务器启动时需要额外参数,可以在这里以字符串数组的形式提供。
基本使用方法
以下示例展示了如何使用MCP Go SDK创建一个简单的“问候”服务器:
- 编写服务器代码 (例如 'myserver.go'):
package main import ( "context" "log" "github.com/modelcontextprotocol/go-sdk/mcp" ) type Input struct { Name string 'json:"name" jsonschema:"the name of the person to greet"' } type Output struct { Greeting string 'json:"greeting" jsonschema:"the greeting to tell to the user"' } func SayHi(ctx context.Context, req *mcp.CallToolRequest, input Input) (*mcp.CallToolResult, Output, error) { return nil, Output{Greeting: "Hi " + input.Name}, nil } func main() { // 创建一个带有一个工具的MCP服务器。 server := mcp.NewServer(&mcp.Implementation{Name: "greeter", Version: "v1.0.0"}, nil) // 添加一个名为 "greet" 的工具。 mcp.AddTool(server, &mcp.Tool{Name: "greet", Description: "say hi"}, SayHi) // 通过标准输入/输出运行服务器,直到客户端断开连接。 if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil { log.Fatal(err) } } - 编译服务器程序:
go build -o myserver myserver.go - 运行MCP客户端: 现在,您可以使用任何MCP客户端(例如,另一个使用'go-sdk'构建的客户端或其他语言的客户端)通过上述配置连接并调用'greet'工具。
信息
分类
开发者工具