使用说明

项目简介

MCP Go SDK 提供了一套 Go 语言库,用于快速开发符合 Model Context Protocol (MCP) 规范的服务器和客户端应用。该 SDK 实现了 MCP 协议的核心功能,例如资源管理、工具注册与调用、Prompt 模板定义等,帮助开发者轻松构建为大型语言模型 (LLM) 提供上下文信息的后端服务。

主要功能点

  • 资源管理 (Resources): 支持托管和管理各种类型的数据资源,并提供标准的读取接口,使 LLM 能够访问外部数据。
  • 工具注册与执行 (Tools): 允许注册和执行外部功能模块(工具),扩展 LLM 的能力边界,例如调用 API、访问数据库等。
  • Prompt 模板 (Prompts): 支持定义和渲染 Prompt 模板,实现可定制化的 LLM 交互模式,提升交互的灵活性和效率。
  • 标准传输协议 (Stdio): 默认支持 Stdio 传输协议,方便快速部署和集成。
  • JSON-RPC 通信: 采用标准的 JSON-RPC 协议进行客户端与服务器端的通信。
  • 拦截器 (Interceptors): 提供拦截器功能,允许在请求处理过程中插入自定义逻辑,例如日志记录、鉴权等。

安装步骤

  1. 安装 Go 环境: 确保已安装 Go 语言环境 (>= 1.18)。
  2. 获取 SDK: 使用 'go get' 命令获取 MCP Go SDK:
    go get github.com/riza-io/mcp-go

服务器配置

MCP 服务器需要配置启动命令 (command) 及其参数 (args),以便 MCP 客户端能够连接。以下是基于仓库示例 'examples/fs/main.go' 生成的 JSON 格式配置信息,用于配置一个文件系统 (FS) MCP 服务器:

{
  "mcpServers": {
    "fs": {
      "command": "/path/to/compiled/fs-example",  // 替换为编译后的 fs-example 服务器程序路径
      "args": [
        "/path/to/root/directory"  // 文件系统根目录路径,MCP 服务器将以此目录为根目录提供文件资源
      ]
    }
  }
}

参数说明:

  • 'command': 指向编译后的 MCP 服务器可执行文件的绝对路径。你需要先编译 'examples/fs/main.go' 文件,并将路径替换为编译后的文件路径。 例如,如果编译后的文件名为 'fs-example',并且位于 '/home/user/bin' 目录下,则应设置为 '/home/user/bin/fs-example'。
  • 'args': 一个字符串数组,包含传递给服务器程序的命令行参数。对于 'fs-example',第一个参数指定文件系统根目录。你需要将其替换为你希望暴露给 MCP 客户端访问的目录的路径。

编译 'fs-example' (或其他示例) 服务器程序:

进入 'examples/fs' 目录,执行以下命令编译 'fs-example' 服务器程序:

cd examples/fs
go build -o fs-example main.go

编译成功后,会在当前目录下生成 'fs-example' 可执行文件。请根据实际情况调整 'command' 配置中的路径。

基本使用方法

  1. 编写 MCP 服务器处理程序: 创建一个 Go 结构体,实现 'mcp.ServerHandler' 接口,并根据需要实现 'Initialize', 'ListResources', 'ReadResource', 'ListTools', 'CallTool', 'ListPrompts', 'GetPrompt' 等方法,以提供资源、工具和 Prompt 服务。可以参考 'examples/fs/main.go' 或 'examples/weather/main.go' 中的示例。
  2. 创建 MCP 服务器实例: 使用 'mcp.NewServer' 函数创建一个 MCP 服务器实例,传入 'stdio.NewStream(os.Stdin, os.Stdout)' 作为通信流,并传入你编写的服务器处理程序实例。
  3. 启动服务器: 调用服务器实例的 'Listen(context.Background())' 方法启动服务器,监听客户端请求。
  4. 配置 MCP 客户端: 在 MCP 客户端(例如 Claude Desktop)中,根据 "服务器配置" 章节的说明,配置 MCP 服务器的启动命令和参数,建立连接。
  5. 客户端请求交互: 客户端可以通过 MCP 协议向服务器发送请求,例如列出资源、读取资源、调用工具、获取 Prompt 等,服务器会根据请求进行处理并返回响应。

运行示例服务器:

  1. 编译 'fs-example': 按照 "服务器配置" 中的说明编译 'fs-example'。

  2. 配置 MCP 客户端: 将 "服务器配置" 中的 JSON 配置信息添加到你的 MCP 客户端配置中,并将 'command' 和 'args' 替换为实际路径。

  3. 运行客户端: 启动 MCP 客户端,客户端将尝试连接到配置的 MCP 服务器。

  4. 运行 'fs-example': 在终端中运行编译后的 'fs-example' 程序,并传入文件系统根目录作为参数:

    ./fs-example /path/to/your/directory

    (将 '/path/to/your/directory' 替换为实际目录路径)

    'fs-example' 服务器将在标准输入和标准输出上与 MCP 客户端进行通信。

注意事项

  • 确保 MCP 客户端和服务器端使用的 MCP 协议版本兼容。
  • 根据实际需求,可以扩展和定制服务器的处理程序,实现更丰富的功能。
  • 可以参考 'examples' 目录下的其他示例,例如 'weather' 示例,了解如何实现更复杂的 MCP 服务器。

信息

分类

开发者工具