项目简介

'go-mcp-server' 是一个用Go语言编写的MCP服务器实现,旨在通过标准化方式向大语言模型(LLM)客户端提供上下文信息和功能。它以“茶叶信息”为具体应用场景,展示了MCP协议的核心能力,包括提供可调用工具、可读取资源和可定制提示模板,支持通过Stdio和HTTP/SSE两种方式与客户端通信。

主要功能点

  • MCP协议兼容: 完全遵循MCP 2025-03-26规范,确保与兼容的LLM客户端顺畅交互。
  • 多传输协议支持: 可通过标准输入输出(stdio)或HTTP/SSE进行通信,适应不同集成环境。
  • 茶叶数据服务: 提供一个“茶叶收藏”示例,包含8种优质茶叶的信息。
  • 全面MCP能力:
    • 工具(Tools): 提供查询茶叶名称、获取详细茶叶信息及冲泡指南、按茶叶类型筛选等工具。
    • 资源(Resources): 托管完整的茶叶菜单资源,可供客户端读取。
    • 提示模板(Prompts): 支持生成个性化茶叶推荐、详细冲泡指南和食物搭配建议的提示。

安装步骤

  1. 克隆仓库: 首先,您需要将项目仓库克隆到本地。
    git clone https://github.com/cbrgm/go-mcp-server.git
    cd go-mcp-server
  2. 构建二进制文件: 使用Go命令构建服务器的可执行文件。
    go build ./cmd/go-mcp-server
    这将在当前目录下生成一个名为 'go-mcp-server' 的可执行文件。

服务器配置

MCP客户端需要配置服务器的启动命令及其参数才能建立连接。以下是一个标准的MCP客户端配置示例,用于连接此Go MCP服务器:

{
  "mcpServers": {
    "tea": {
      // 启动MCP服务器的命令。
      // 如果您已通过 'go build' 构建了二进制文件,可指定其路径,例如 "./go-mcp-server"。
      // 如果希望在开发环境中直接运行Go源代码,可将 command 设置为 "go"。
      "command": "path/to/your/go-mcp-server", 
      // 启动服务器时传递的参数列表。
      // 以下是常用参数及其含义:
      //   -transport <type>: 指定传输协议,可选值为 "stdio" (默认) 或 "http"。
      //   -port <number>: 当传输协议为 "http" 时,指定HTTP服务器监听的端口 (默认8080)。
      //   -request-timeout <duration>: 处理单个请求的最大等待时间,例如 "30s" (默认30s)。
      //   -shutdown-timeout <duration>: 服务器优雅关机的最大等待时间,例如 "10s" (默认10s)。
      //   -log-level <level>: 设置日志输出级别,可选 "debug", "info", "warn", "error" (默认info)。
      //   -log-json <bool>: 如果设置为 "true",日志将以JSON格式输出 (默认false)。
      //   -server-name <string>: 服务器在初始化响应中返回的名称 (默认"MCP Server")。
      //   -server-version <string>: 服务器在初始化响应中返回的版本号 (默认"1.0.0")。
      "args": [], 
      // 示例配置一:通过Stdio传输运行服务器,并开启调试日志。
      // "command": "./go-mcp-server",
      // "args": ["-log-level", "debug"]
      //
      // 示例配置二:通过HTTP传输运行服务器在端口9000,并输出JSON格式日志。
      // "command": "./go-mcp-server",
      // "args": ["-transport", "http", "-port", "9000", "-log-json"]
      //
      // 示例配置三:在本地开发时,使用 'go run' 命令直接从源代码启动服务器。
      // "command": "go",
      // "args": ["run", "./cmd/go-mcp-server"],
      // "cwd": "/path/to/your/go-mcp-server-repo" // 替换为您的仓库根目录路径
    }
  }
}

基本使用方法

  1. 启动服务器:

    • Stdio模式 (默认): 在终端中直接运行二进制文件。
      ./go-mcp-server
    • HTTP模式: 指定传输协议和端口。
      ./go-mcp-server -transport http -port 8080
  2. 与MCP客户端交互: 一旦服务器启动,您的MCP客户端(例如Claude Desktop、VS Code的MCP插件等)就可以通过配置的命令或HTTP地址连接并与之交互。

    • 示例:列出所有茶叶名称 (Stdio模式): 将JSON-RPC请求通过标准输入传递给服务器。
      echo '{"jsonrpc":"2.0","method":"tools/call","id":1,"params":{"name":"getTeaNames","arguments":{}}}' | ./go-mcp-server
    • 示例:获取特定茶叶信息 (Stdio模式):
      echo '{"jsonrpc":"2.0","method":"tools/call","id":2,"params":{"name":"getTeaInfo","arguments":{"name":"earl-grey"}}}' | ./go-mcp-server
    • 示例:读取完整的茶叶菜单资源 (Stdio模式):
      echo '{"jsonrpc":"2.0","method":"resources/read","id":4,"params":{"uri":"menu://tea"}}' | ./go-mcp-server
    • 示例:获取茶叶冲泡指南 (Stdio模式):
      echo '{"jsonrpc":"2.0","method":"prompts/get","id":5,"params":{"name":"brewing_guide","arguments":{"tea_name":"gyokuro"}}}' | ./go-mcp-server
    • Web UI (仅HTTP模式): 当服务器以HTTP模式运行时,访问 'http://localhost:<port>/' (例如 'http://localhost:8080/') 可以查看一个简单的状态页面,显示服务器信息和活动会话。

信息

分类

AI与计算