go-mcp SDK 使用说明

项目简介

go-mcp 是一个使用 Go 语言开发的 SDK,用于构建符合 Model Context Protocol (MCP) 规范的服务器。它提供了一套类型安全且易于使用的 API,帮助开发者快速搭建和管理 MCP 服务器,以便为大型语言模型 (LLM) 应用提供结构化的上下文信息和功能。

主要功能点

  • 类型安全: 通过代码生成确保工具和 Prompt 参数的类型安全,在编译时而非运行时捕获错误。
  • API 简洁直观: 提供符合 Go 语言习惯的 API 接口,降低学习曲线,加速服务器开发过程。
  • 开发者友好: 注重 API 的人体工程学设计,使开发过程更加直观和高效。
  • 支持 MCP 核心功能: 实现了 MCP 协议的关键特性,包括资源管理、工具注册与调用、Prompt 模板定义和渲染等。
  • 灵活的传输协议: 支持 Stdio 等传输协议,方便与 MCP 客户端集成。

安装步骤

  1. 安装 Go 语言环境: 确保你的开发环境中已安装 Go 语言。你可以从 Go 官网 下载并安装。

  2. 获取 go-mcp SDK: 使用 'go get' 命令获取 SDK:

    go get github.com/ktr0731/go-mcp

服务器配置

MCP 服务器需要配置启动命令 (command) 及其参数 (args) 才能被 MCP 客户端调用。以下是基于 go-mcp SDK 构建的 MCP 服务器的典型配置信息(JSON 格式)。请根据你实际运行的示例或自定义服务器进行调整。

示例配置 (以 'examples/temperature' 为例):

{
  "serverName": "Temperature Server",
  "command": "go",
  "args": [
    "run",
    "./cmd/temperature/main.go"
  ],
  "description": "一个简单的温度转换 MCP 服务器示例"
}

参数注释:

  • '"serverName"': MCP 服务器的名称,可以自定义,用于在客户端识别服务器。
  • '"command"': 启动 MCP 服务器的可执行命令。对于 Go 程序,通常是 'go'。
  • '"args"': 启动命令的参数列表,以数组形式提供。
    • '"run"': 'go run' 命令用于直接运行 Go 程序。
    • '"./cmd/temperature/main.go"': 指向 'temperature' 示例服务器的 'main.go' 文件路径。请注意,你需要根据你的实际服务器代码路径进行修改。如果你已经编译了可执行文件,'args' 可以替换为可执行文件的路径。
  • '"description"': 服务器的描述信息,可选,用于提供服务器功能的简要说明。

重要提示:

  • 工作目录: MCP 客户端执行上述命令时,工作目录通常是客户端的上下文环境。请确保服务器代码中使用的任何相对路径(例如资源文件)都相对于客户端的工作目录是正确的,或者使用绝对路径。
  • 构建可执行文件: 如果你的 MCP 客户端环境不适合直接运行 'go run' 命令,你需要先将 Go 服务器代码编译成可执行文件。然后,将 '"command"' 配置为可执行文件的路径,'"args"' 可以根据需要调整。例如,编译 'temperature' 示例:
    go build -o temperature ./cmd/temperature/main.go
    配置可以修改为:
    {
      "serverName": "Temperature Server",
      "command": "./temperature",
      "args": [],
      "description": "一个简单的温度转换 MCP 服务器示例"
    }

示例配置 (以 'examples/weather' 为例):

{
  "serverName": "Weather Server",
  "command": "go",
  "args": [
    "run",
    "./examples/weather/cmd/weather/main.go"
  ],
  "description": "一个提供天气预报和工具的 MCP 服务器示例"
}

请根据实际情况调整文件路径和参数。

基本使用方法

  1. 编写服务器定义: 使用 go-mcp SDK 提供的 'codegen' 包定义你的 MCP 服务器的功能,包括 Capabilities, Implementation, Prompts, Tools, ResourceTemplates 等。参考 'examples/weather/cmd/mcpgen/main.go' 和 'examples/temperature/cmd/mcpgen/main.go' 示例。

  2. 生成代码: 运行 'go run cmd/mcpgen/main.go' (或类似的命令,根据你的 'mcpgen' 代码路径调整) 生成服务器框架代码 ('mcp.gen.go')。

  3. 实现 Handler 接口: 创建 Go 文件实现 'ServerPromptHandler', 'ServerToolHandler', 'ServerResourceHandler', 'ServerCompletionHandler' 等接口 (取决于你在服务器定义中启用的 Capabilities)。参考 'examples/weather/weather.go' 和 'examples/temperature/temperature.go' 示例。

  4. 实例化 Handler 并启动服务器: 在 'main.go' 文件中,实例化你的 Handler 实现,并使用 'mcp.NewStdioTransport' 和 'jsonrpc2.Serve' 启动 MCP 服务器。参考 'examples/weather/cmd/weather/main.go' 和 'examples/temperature/cmd/temperature/main.go' 示例。

  5. 配置 MCP 客户端: 根据 "服务器配置" 部分的说明,配置你的 MCP 客户端,指定服务器的启动命令和参数。

  6. 与 MCP 客户端交互: 启动 MCP 服务器和客户端,客户端即可通过 MCP 协议与服务器进行通信,调用工具、获取 Prompt、访问资源等。

更详细的使用方法和示例,请参考仓库中的 'README.md' 文档、 'examples' 目录以及 API 文档

信息

分类

开发者工具