使用说明

项目简介

go-modelcontextprotocol库是一个使用Go语言开发的,实现了模型上下文协议(Model Context Protocol, MCP)的库。它为开发者提供了一套构建MCP服务器的框架,使得开发者可以快速搭建起能够与大型语言模型(LLM)客户端进行标准化上下文交互的后端服务。该库专注于提供MCP协议的核心组件,包括资源管理、工具注册和Prompt模板支持,并支持多种传输协议,如标准I/O、服务器发送事件(SSE)等。

主要功能点

  • 资源管理:支持托管和管理各种类型的资源,例如文档、数据片段等,并允许客户端通过URI访问这些资源。
  • 工具注册与执行:允许开发者注册工具函数,供LLM客户端调用执行外部功能,扩展LLM的能力。
  • Prompt模板支持:虽然文档中没有明确提及Prompt模板,但MCP服务器通常包含此功能。此库可能支持Prompt模板的定义和渲染(需要进一步代码分析确认,但根据MCP定义推测可能支持)。
  • 多种传输协议:支持标准输入输出(stdio)、服务器发送事件(SSE)等多种传输协议,适应不同的应用场景。
  • JSON-RPC通信:基于JSON-RPC 2.0协议与客户端进行通信,实现标准化的请求和响应处理。
  • 会话管理和能力声明:MCP服务器应具备会话管理和能力声明功能,虽然文档没有明确提及,但作为MCP服务器实现的基础,该库可能已包含相关设计。

安装步骤

由于这是一个Go语言库,你需要先安装Go语言环境。然后,你可以使用 'go get' 命令来安装该库:

go get github.com/Warashi/go-modelcontextprotocol

服务器配置

MCP客户端通常需要配置MCP服务器的启动命令和参数。对于使用 'go-modelcontextprotocol' 库构建的服务器,配置信息主要取决于你如何使用该库以及你自定义的服务器实现。

以下是一个通用的配置信息 JSON 示例,请注意,这只是一个示例,你需要根据你实际使用 'go-modelcontextprotocol' 库构建的服务器程序来确定 'command' 和 'args' 的具体内容

{
  "serverName": "example-mcp-server",
  "command": "/path/to/your/server/executable",  //  * 替换为你使用 go-modelcontextprotocol 库构建的服务器可执行文件的路径
  "args": [                                      //  * 替换为服务器启动所需的命令行参数,如果不需要参数,则保留空数组
    // "--config",
    // "/path/to/config.yaml"
  ],
  "transport": "stdio"                            //  *  如果你的服务器使用标准I/O传输,则设置为 "stdio";如果使用 SSE,则配置 SSE 相关信息 (例如,如果服务器监听 HTTP SSE 端口,则这里可能需要配置服务器的 URL 前缀)
}

基本使用方法

  1. 创建服务器实例:使用 'mcp.NewServer' 函数创建一个MCP服务器实例,你需要提供服务器的名称和版本号。你可以通过 'mcp.ServerOption' 来自定义服务器的功能,例如添加工具、资源等。

    server, err := mcp.NewServer("your-server-name", "1.0.0", /* 可选的 ServerOption ... */)
    if err != nil {
        // 处理错误
    }
  2. 注册工具和资源:使用 'mcp.WithTool'、'mcp.WithResource'、'mcp.WithResourceTemplate' 和 'mcp.WithResourceReader' 等选项向服务器注册工具和资源。

    tool := mcp.NewToolFunc(...) // 创建工具
    resource := mcp.Resource{...} // 定义静态资源
    template := mcp.ResourceTemplate{...} // 定义资源模板
    reader := mcp.NewResourceReaderMux() // 创建资源读取器并注册路由
    
    server, err := mcp.NewServer("your-server-name", "1.0.0",
        mcp.WithTool(tool),
        mcp.WithResource(resource),
        mcp.WithResourceTemplate(template),
        mcp.WithResourceReader(reader),
    )
  3. 选择传输协议并启动服务器:根据你的应用场景选择合适的传输协议,例如 'ServeStdio'(标准I/O)或 'SSEHandler'(HTTP SSE)。

    • 使用标准I/O:

      ctx := context.Background()
      if err := server.ServeStdio(ctx); err != nil {
          // 处理服务器启动错误
      }
    • 使用HTTP SSE:

      handler, err := server.SSEHandler("http://your-server-host:8080/sse")
      if err != nil {
          // 处理创建 SSE handler 错误
      }
      http.Handle("/sse", handler)
      log.Fatal(http.ListenAndServe(":8080", nil))
  4. 构建客户端并连接:使用MCP客户端库,配置服务器的连接信息(例如,标准I/O管道或SSE endpoint),与你构建的MCP服务器建立连接,并进行交互。

请务必参考仓库中的示例代码和文档,根据你的具体需求进行服务器的开发和配置。本使用说明提供的是基于仓库信息和MCP协议理解的通用指导,实际操作请以仓库的最新代码和文档为准。

信息

分类

开发者工具