这是一个用Go语言实现的模型上下文协议(MCP)服务器,通过工具、资源和提示提供茶的信息。
注意:此项目仅用于学习目的。我从零开始构建了这个MCP服务器以理解模型上下文协议规范。对于生产用途,请考虑使用mcp-go或等待官方发布的MCP Go SDK(预计于2025年6月底发布)。
此MCP服务器,特别是mcp包,是在Claude Code的帮助下,使用最新的MCP规范(2025-06-21版本)编写的。
stdio(默认),http带SSE# 构建二进制文件
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 | 使用的传输协议(stdio 或 http) |
-port | 整数 | 8080 | HTTP服务器端口(仅在使用 -transport http 时使用) |
-request-timeout | 持续时间 | 30s | 等待请求处理的最大时间 |
-shutdown-timeout | 持续时间 | 10s | 等待优雅关闭的最大时间 |
-log-level | 字符串 | info | 日志级别(debug、info、warn、error) |
-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"
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
当使用HTTP传输时,可以在服务器根路径(/)访问一个Web状态页面。该页面显示服务器信息、活动会话和可用端点。
在您的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"
}
}
}
npm install -g @modelcontextprotocol/inspectornpx @modelcontextprotocol/inspectorgo run ./cmd/go-mcp-serverApache 2.0