Go MCP服务器构建工具

一个基于Nunu框架和MCP-GO的高性能Go语言MCP服务器快速构建工具,支持多种传输协议和实时调试。

  • by go-nunu
  • Go
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 go-nunu/nunu-layout-mcp

使用说明

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

简体中文介绍

这个项目是 MCP服务器示例 使用 努努 框架和 MCP-GO。它允许您快速设置基于Golang的MCP服务器,并使用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-mcp
Option 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客户端

看 MCP-GO客户文件

您可以在以下网址注册客户 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: https://github.com/golang/tools/tree/master/internal/mcp


📄 许可证

努努被释放 MIT许可证 --免费使用和贡献!