🚀 快速构建高性能Go MCP服务器

______________________________________________________________________
🚀 快速入门:在3分钟内运行MCP服务器
1.创建项目
Option 1: Clone the Template Repository
git clone https://github.com/go-nunu/nunu-layout-mcp.git
# Note: The default project name is nunu-layout-mcpOption 2: Create a New Project via Nunu CLI (Recommended)
go install github.com/go-nunu/nunu@latest
nunu new mcp-demo -r https://github.com/go-nunu/nunu-layout-mcp.git______________________________________________________________________
2.构建和启动
构建MCP服务器
cd mcp-demo
go build -ldflags="-s -w" -o ./bin/server ./cmd/server启动MCP检查器
MCP Inspector是MCP社区提供的用于测试和调试的交互式开发工具:
npx -y @modelcontextprotocol/inspector ./bin/server
# Requires Node.js to be installed______________________________________________________________________
3.测试服务
打开浏览器: http://127.0.0.1:6274 以测试不同的传输协议。
| 传输类型 | 地址/参数 | 用例 | 优点 | 缺点 |
|---|---|---|---|---|
| STDIO | ./bin/server | CLI工具、桌面应用程序 | 简单、安全、无需网络 | 仅限本地、单客户端 |
| SSE | http://localhost:3001/sse | Web实时通信 | 多客户端、实时、浏览器友好 | HTTP开销,仅服务器到客户端 |
| 流式HTTP | http://localhost:3002/mcp | Web服务、API | 标准协议、缓存和负载平衡 | 没有实时支持,稍显复杂 |
| 进程中 | (无外部地址) | 嵌入式,测试 | 无序列化,超快 | 仅进程中 |

______________________________________________________________________
🛠️ 开发指南
由于该项目是建立在 努努建筑,建议在开发之前了解框架。
______________________________________________________________________
📡 MCP服务器开发
请参阅 MCP-GO服务器文档
此项目默认启用三种协议:STDIO、SSE、StreamableHTTP。您可以根据需要修改或禁用它们:
// File: internal/server/mcp.go
func setupSrv(logger *log.Logger) *servermcp.Server {
mcpServer := server.NewMCPServer(
"example-servers/everything",
"1.0.0",
server.WithResourceCapabilities(true, true),
server.WithPromptCapabilities(true),
server.WithToolCapabilities(true),
server.WithLogging(),
server.WithHooks(newHooks(logger)),
)
return servermcp.NewServer(logger,
servermcp.WithMCPSrv(mcpServer),
// STDIO
servermcp.WithStdioSrv(true),
// SSE
servermcp.WithSSESrv(":3001", server.NewSSEServer(
mcpServer,
server.WithSSEEndpoint("/sse"),
)),
// StreamableHTTP
servermcp.WithStreamableHTTPSrv(":3002", server.NewStreamableHTTPServer(
mcpServer,
server.WithEndpointPath("/mcp"),
)),
)
}呼叫流程图
client
↓
internal/server/mcp.go
↓
internal/handler/example.go
↓
internal/service/example.go
↓
internal/repository/example.go
↓
DB / Third-party services注:
如果 MCP STDIO 被启用, 不应将日志打印到终端,否则通信将中断。您必须将日志配置为仅写入文件:
# File: config/local.yml
log:
log_level: debug
mode: file # file, console, or both
encoding: console # json or console
log_file_name: "./storage/logs/server.log"
max_backups: 30
max_age: 7
max_size: 1024
compress: true在Unix系统中查看日志:
tail -f storage/logs/server.log______________________________________________________________________
🤝 集成MCP客户端
您可以在以下网址注册客户 internal/repository/repository.go例如:
func NewStdioMCPClient() *client.Client {
c, err := client.NewStdioMCPClient(
"go", []string{}, "run", "/path/to/server/main.go",
)
if err != nil {
panic(err)
}
defer c.Close()
return c
}要集成其他协议或客户端,请遵循中使用的类似模式 redis, gorm等等。
______________________________________________________________________
📚 资源
______________________________________________________________________
最后说明
目前,有 没有官方的Golang SDK 由MCP组织提供。最成熟的开源项目是 mark3labs/mcp-go.
我们期待着官方的Golang SDK,一旦发布,该项目将相应更新。
官方Go MCP SDK:
______________________________________________________________________
📄 许可证
努努被释放 MIT许可证 --免费使用和贡献!
