项目简介
'go-mcp-server' 是一个用Go语言编写的MCP服务器实现,旨在通过标准化方式向大语言模型(LLM)客户端提供上下文信息和功能。它以“茶叶信息”为具体应用场景,展示了MCP协议的核心能力,包括提供可调用工具、可读取资源和可定制提示模板,支持通过Stdio和HTTP/SSE两种方式与客户端通信。
主要功能点
- MCP协议兼容: 完全遵循MCP 2025-03-26规范,确保与兼容的LLM客户端顺畅交互。
- 多传输协议支持: 可通过标准输入输出(stdio)或HTTP/SSE进行通信,适应不同集成环境。
- 茶叶数据服务: 提供一个“茶叶收藏”示例,包含8种优质茶叶的信息。
- 全面MCP能力:
- 工具(Tools): 提供查询茶叶名称、获取详细茶叶信息及冲泡指南、按茶叶类型筛选等工具。
- 资源(Resources): 托管完整的茶叶菜单资源,可供客户端读取。
- 提示模板(Prompts): 支持生成个性化茶叶推荐、详细冲泡指南和食物搭配建议的提示。
安装步骤
- 克隆仓库: 首先,您需要将项目仓库克隆到本地。
git clone https://github.com/cbrgm/go-mcp-server.git cd go-mcp-server - 构建二进制文件: 使用Go命令构建服务器的可执行文件。
这将在当前目录下生成一个名为 'go-mcp-server' 的可执行文件。go build ./cmd/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" // 替换为您的仓库根目录路径 } } }
基本使用方法
-
启动服务器:
- Stdio模式 (默认): 在终端中直接运行二进制文件。
./go-mcp-server - HTTP模式: 指定传输协议和端口。
./go-mcp-server -transport http -port 8080
- Stdio模式 (默认): 在终端中直接运行二进制文件。
-
与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/') 可以查看一个简单的状态页面,显示服务器信息和活动会话。
- 示例:列出所有茶叶名称 (Stdio模式):
将JSON-RPC请求通过标准输入传递给服务器。
信息
分类
AI与计算