项目简介

'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等传输协议。
  • 会话与能力声明: 负责会话管理并向客户端声明服务器支持的能力。
  • 中间件支持: 提供发送和接收中间件,方便集成日志、认证、限流等功能。

安装步骤

  1. 确保已安装Go语言环境 (Go 1.21 或更高版本)。
  2. 在您的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创建一个简单的“问候”服务器:

  1. 编写服务器代码 (例如 '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)
    	}
    }
  2. 编译服务器程序:
    go build -o myserver myserver.go
  3. 运行MCP客户端: 现在,您可以使用任何MCP客户端(例如,另一个使用'go-sdk'构建的客户端或其他语言的客户端)通过上述配置连接并调用'greet'工具。

信息

分类

开发者工具