关于 MCP4Go
MCP4Go 是用纯 Go 实现 MCP 的 SDK,面向构建 AI 应用的 Go 开发者。它封装协议细节,并提供资源、提示词和工具等高层能力。
主要功能
- 01纯 Go 实现 MCP 协议
- 02资源生命周期管理
- 03定义并调用工具
- 04提示词与采样参数支持
- 05可插拔扩展架构
- 06日志、诊断与错误处理
适用场景
- 01在 Go 应用中构建 MCP 能力
- 02管理 MCP 资源生命周期
- 03向 MCP 客户端提供工具调用
- 04扩展自定义 MCP 功能
MCP 相关
该 SDK 实现 MCP 协议,支持 JSON-RPC 通信,并提供资源、提示词和工具等 MCP 能力,供应用构建 MCP 服务端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP4Go
MCP4Go 是 Model Context Protocol (MCP) 的 Go 实现,旨在通过抽象协议的复杂性,简化 AI 应用的开发。
功能特性
- 使用纯 Go 完整实现 MCP 协议
- 为常见 MCP 资源提供高级抽象
- 支持自定义扩展的可插拔架构
- 完备的文档和示例
- 已可用于生产环境,并提供可靠的错误处理
安装
MCP4Go 需要 Go 1.18 或更高版本。使用 Go 模块安装:
go get github.com/mcp4go/mcp4go
快速入门
要开始使用 MCP4Go,请在 Go 应用中导入此软件包:
package main
import (
"context"
"fmt"
"log"
"os"
"os/signal"
"syscall"
"time"
"github.com/mcp4go/mcp4go/pkg/logger"
"github.com/mcp4go/mcp4go/protocol"
"github.com/mcp4go/mcp4go/server"
"github.com/mcp4go/mcp4go/server/iface"
"github.com/mcp4go/mcp4go/server/transport"
_ "time/tzdata" // Load all time zones
)
func main() {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
_logger := logger.DefaultLog
// Listen for interrupt signals for graceful exit
signalCh := make(chan os.Signal, 1)
signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM)
go func() {
<-signalCh
_logger.Logf(ctx, logger.LevelWarn, "Received shutdown signal")
cancel()
}()
type timeRequest struct {
TimeZone string `json:"time_zone,omitempty" description:"time zone default is Asia/Shanghai"`
}
// Create standard input/output transport layer
stdioTransport := transport.NewStdioTransport()
// Create MCP server and configure options
srv, cleanup, err := server.NewServer(
stdioTransport,
server.WithServerInfo(protocol.Implementation{
Name: "time-mcp",
Version: "0.1.0",
}),
server.WithInstructions("Welcome to Time MCP! This server provides Time tools."),
server.WithToolBuilder(iface.NewFunctionalToolsBuilder(
iface.NewFunctionalToolWrapper(
"time",
"get current time",
func(ctx context.Context, args timeRequest) ([]protocol.Content, error) {
if args.TimeZone == "" {
args.TimeZone = "Asia/Shanghai"
}
getTimezoneTime := func(_ context.Context, timeZone string) time.Time {
if timeZone == "" {
timeZone = "Asia/Shanghai"
}
loc, err := time.LoadLocation(timeZone)
if err != nil {
return time.Now()
}
return time.Now().In(loc)
}
currentTime := getTimezoneTime(ctx, args.TimeZone)
return []protocol.Content{
protocol.NewTextContent(fmt.Sprintf("current time is %s", currentTime), nil),
}, nil
}),
)),
)
if err != nil {
log.Printf("Failed to create server: %v\n", err)
return
}
defer cleanup()
// Start the server
_logger.Logf(ctx, logger.LevelWarn, "Starting Time MCP server")
if err := srv.Run(ctx); err != nil {
_logger.Logf(ctx, logger.LevelError, "Server error: %v", err)
return
}
_logger.Logf(ctx, logger.LevelWarn, "Server shutdown complete")
}
协议实现
MCP4Go 完整实现了 Model Context Protocol,支持:
- JSON-RPC 通信
- 资源生命周期管理
- 提示词工程
- 工具定义和调用
- 采样参数
- 日志记录和诊断
许可证
本项目采用 MIT 许可证。
贡献
欢迎贡献!有关更多信息,请参阅我们的贡献指南。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。