返回市场
-go-MCP-服务器

-go-MCP-服务器

作者:cbrgm6 星标更新:2025-11-21

项目介绍

Go MCP 服务器

这是一个用Go语言实现的模型上下文协议(MCP)服务器,通过工具、资源和提示提供茶的信息。

注意:此项目仅用于学习目的。我从零开始构建了这个MCP服务器以理解模型上下文协议规范。对于生产用途,请考虑使用mcp-go或等待官方发布的MCP Go SDK(预计于2025年6月底发布)。

此MCP服务器,特别是mcp包,是在Claude Code的帮助下,使用最新的MCP规范(2025-06-21版本)编写的。

特性

  • 符合MCP 2025-03-26规范
  • 多种传输方式stdio(默认),http带SSE
  • 茶品集合:8种优质茶叶(绿茶、红茶、乌龙茶、白茶)
  • 完整的MCP功能:工具、资源和提示

快速开始

# 构建二进制文件
go build ./cmd/go-mcp-server

# 使用默认的stdio传输运行
./go-mcp-server

# 使用HTTP传输运行
./go-mcp-server -transport http -port 8080

# 使用MCP Inspector测试
echo '{"jsonrpc":"2.0","method":"initialize","id":1}' | ./go-mcp-server

使用方法

服务器二进制文件接受多个命令行参数来配置其行为:

./go-mcp-server [选项]

命令行参数

参数类型默认值描述
-transport字符串stdio使用的传输协议(stdiohttp
-port整数8080HTTP服务器端口(仅在使用 -transport http 时使用)
-request-timeout持续时间30s等待请求处理的最大时间
-shutdown-timeout持续时间10s等待优雅关闭的最大时间
-log-level字符串info日志级别(debuginfowarnerror
-log-json布尔值false是否以JSON格式输出日志
-server-name字符串MCP Server初始化时返回的服务器名称
-server-version字符串1.0.0初始化时返回的服务器版本

示例

# 使用默认的stdio传输并启用调试日志
./go-mcp-server -log-level debug

# 在自定义端口上使用HTTP传输,并启用JSON日志
./go-mcp-server -transport http -port 9000 -log-json

# 生产环境下的自定义超时设置
./go-mcp-server -transport http -request-timeout 60s -shutdown-timeout 30s

# 自定义服务器标识
./go-mcp-server -server-name "My Tea Server" -server-version "2.0.0"

MCP功能

工具

  • getTeaNames - 列出所有可用的茶叶
  • getTeaInfo - 获取详细茶叶信息和冲泡说明
  • getTeasByType - 根据类型筛选茶叶(绿茶、红茶、乌龙茶、白茶)

资源

  • menu://tea - 完整的茶品集合,包括价格和详情

提示

  • tea_recommendation - 根据心情/偏好进行个性化推荐
  • brewing_guide - 特定茶叶的详细冲泡说明
  • tea_pairing - 食物搭配建议

茶品集合示例

尝试以下命令探索茶品集合:

# 列出所有可用的茶叶
echo '{"jsonrpc":"2.0","method":"tools/call","id":1,"params":{"name":"getTeaNames","arguments":{}}}' | ./go-mcp-server

# 获取特定茶叶的信息
echo '{"jsonrpc":"2.0","method":"tools/call","id":2,"params":{"name":"getTeaInfo","arguments":{"name":"earl-grey"}}}' | ./go-mcp-server

# 获取所有乌龙茶
echo '{"jsonrpc":"2.0","method":"tools/call","id":3,"params":{"name":"getTeasByType","arguments":{"type":"Oolong Tea"}}}' | ./go-mcp-server

# 读取完整的茶品菜单资源
echo '{"jsonrpc":"2.0","method":"resources/read","id":4,"params":{"uri":"menu://tea"}}' | ./go-mcp-server

# 获取玉露茶的冲泡指南
echo '{"jsonrpc":"2.0","method":"prompts/get","id":5,"params":{"name":"brewing_guide","arguments":{"tea_name":"gyokuro"}}}' | ./go-mcp-server

Web界面

当使用HTTP传输时,可以在服务器根路径(/)访问一个Web状态页面。该页面显示服务器信息、活动会话和可用端点。

MCP客户端配置

Claude Desktop / VS Code / 其他MCP客户端

在您的MCP客户端设置中添加以下配置:

{
  "mcpServers": {
    "tea": {
      "command": "podman",
      "args": ["run", "-i", "--rm", "ghcr.io/cbrgm/go-mcp-server:v1"]
    }
  }
}

对于本地开发,您也可以使用:

{
  "mcpServers": {
    "tea": {
      "command": "go",
      "args": ["run", "./cmd/go-mcp-server"],
      "cwd": "/path/to/go-mcp-server"
    }
  }
}

使用MCP Inspector测试

  1. 安装:npm install -g @modelcontextprotocol/inspector
  2. 启动:npx @modelcontextprotocol/inspector
  3. 使用命令连接:go run ./cmd/go-mcp-server

许可证

Apache 2.0