Token导航 LogoToken导航TokenDH.com
Go Mcpserver logo
AI代理未说明官方级别未说明来源级核验

Go Mcpserver

MCP Server

一个用于简化Go MCP服务器启动过程的库,提供一站式配置和运行功能,减少样板代码。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
Go中间件Go语言

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

anatolykoptev

提供方

anatolykoptev

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

go mcpserver

Go MCP服务器的Bootstrap库。一 Run() 用电话代替大约80行的陈词滥调。

建在上面 modelcontextprotocol/go-sdk.

安装

go get github.com/anatolykoptev/go-mcpserver@latest

用法

package main

import (
	mcpserver "github.com/anatolykoptev/go-mcpserver"
	"github.com/modelcontextprotocol/go-sdk/mcp"
)

var version = "dev"

func main() {
	server := mcp.NewServer(&mcp.Implementation{
		Name:    "my-service",
		Version: version,
	}, nil)

	// register tools...

	if err := mcpserver.Run(server, mcpserver.Config{
		Name:    "my-service",
		Version: version,
	}); err != nil {
		panic(err)
	}
}

这为您提供了:

  • 标准检测 --通行证 --stdio 通过stdin/stdout运行的标志
  • 结构化日志记录 --slog到stdout(HTTP)或stderr(stdio)
  • 信号处理 --SIGINT/SIGTERM,优雅关机
  • MCP路线/mcp/mcp/ 使用无状态StreamableHTTP
  • 健康终点/health, /health/live, /health/ready
  • 中间件链 --恢复、请求ID、请求日志、CORS
  • 配置验证NameVersion 需要
  • 可配置超时 --读(30s)、写(120s)、关机(10s)

配置

type Config struct {
	Name    string // service name (required)
	Version string // version string (required)
	Port    string // HTTP port; empty → MCP_PORT env → "8080"

	WriteTimeout    time.Duration // default 120s
	ReadTimeout     time.Duration // default 30s
	ShutdownTimeout time.Duration // default 10s

	Metrics func() string        // if set, registers GET /metrics
	Routes  func(*http.ServeMux) // extra routes after /mcp, /health, /metrics

	Middleware        []Middleware  // custom middleware, applied after built-ins
	CORSOrigins       []string     // nil = no CORS; ["*"] = allow all
	CORSMaxAge        int          // preflight Max-Age in seconds; 0 = omit
	CORSAllowHeaders  []string     // nil = default (Content-Type, Authorization, X-Request-ID)
	ReadinessCheck    func() error // nil = /health/ready always returns 200

	DisableRecovery   bool            // default false (recovery ON)
	DisableHealth     bool            // set true to register custom /health in Routes
	DisableRequestLog bool            // default false (request logging ON)

	Context    context.Context // nil → internal signal.NotifyContext(SIGINT, SIGTERM)
	Logger     *slog.Logger    // nil → auto
	OnShutdown func()          // called before HTTP shutdown
}

健康终点

终点目的
GET /health基本健康: {"status":"ok","service":"...","version":"..."}
GET /health/live活体探针:总是返回200
GET /health/ready准备状态调查:通话 ReadinessCheck,返回200或503

中间件

内置中间件(按顺序应用):

  1. 恢复 --捕捉恐慌,返回500(禁用: DisableRecovery)
  2. 安魂曲 --生成/传播 X-Request-ID 头球
  3. 请求日志 --日志方法、路径、状态、持续时间(禁用: DisableRequestLog)
  4. 跨域资源共享 --跨源资源共享(启用:设置 CORSOrigins)

通过以下方式在内置后附加自定义中间件 Config.Middleware.

导出中间件

mcpserver.Recovery(logger)        // panic recovery
mcpserver.RequestID()             // X-Request-ID generation
mcpserver.RequestLog(logger)      // request logging
mcpserver.CORS(mcpserver.CORSConfig{...}) // CORS
mcpserver.Chain(handler, mw...)   // apply middleware chain
mcpserver.RequestIDFromContext(ctx) // retrieve request ID

示例

外部上下文(无双信号处理程序)

ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
defer cancel()

// ... init DB, caches using ctx ...

mcpserver.Run(server, mcpserver.Config{
	Name:    "my-service",
	Version: version,
	Context: ctx, // reuse parent context
})

CORS与最大年龄

mcpserver.Run(server, mcpserver.Config{
	Name:        "my-api",
	Version:     version,
	CORSOrigins: []string{"https://app.example.com"},
	CORSMaxAge:  3600, // cache preflight for 1 hour
})

通过DB ping检查准备情况

mcpserver.Run(server, mcpserver.Config{
	Name:    "my-service",
	Version: version,
	ReadinessCheck: func() error {
		return db.Ping(context.Background())
	},
})

自定义指标和额外路线

mcpserver.Run(server, mcpserver.Config{
	Name:         "go-wp",
	Version:      version,
	Port:         "8894",
	WriteTimeout: 600 * time.Second,
	Metrics:      engine.FormatMetrics,
	Routes: func(mux *http.ServeMux) {
		mux.HandleFunc("POST /cache/clear", handleCacheClear)
	},
	OnShutdown: func() {
		wpserver.Shutdown()
	},
})

预运行stdio检查

if mcpserver.IsStdio() {
	// skip heavy init (DB pools, caches) in stdio mode
}

许可证

Apache 2.0

目录标签

目录标签

Go中间件Go语言服务器启动本地部署MCP协议健康检查

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP