
Go-MCP

2025.04.09
0
GoAI 服务协议库开发效率
Go-MCP 是一个基于 Go 语言实现的 Model Context Protocol (MCP) 协议库。MCP 是一种用于构建 AI 服务的协议,定义了三个核心原语:Prompts(提示)、Tools(工具)和 Resources(资源)。该库提供了完整的 MCP 协议实现,支持多种传输方式(HTTP、SSE),并提供了类型安全的 API 和统一的响应结构。
View on GitHub
Overview
基本能力
产品定位
Go-MCP 是一个用于构建 AI 服务的协议库,支持多种传输方式和统一的响应结构,适用于开发高效的 AI 服务。
核心功能
- 完整的 MCP 协议实现
- 类型安全的 API
- 多种传输选项(HTTP、SSE)
- 统一的响应结构
- 分页支持
- 变更通知支持
适用场景
- 构建 AI 服务后端
- 开发多模态内容传输应用
- 实现资源订阅和通知功能
- 支持分页查询的服务
工具列表
- ListPrompts: 列出可用的提示(支持分页)
- GetPrompt: 通过名称获取特定提示
- ListTools: 列出可用的工具(支持分页)
- CallTool: 调用特定工具
- ListResources: 列出可用资源(支持分页)
- ReadResource: 读取特定资源的内容
- ListResourceTemplates: 列出可用的资源模板
- SubscribeToResource: 订阅特定资源的变更
常见问题解答
- 如何创建服务器? 使用
mcp.NewServer
并实现MCPService
接口。 - 如何创建客户端? 使用
mcp.NewClient
并指定服务器地址和传输类型。 - 如何支持分页? 使用
cursor
参数进行分页查询。
使用教程
使用依赖
安装 Go 语言环境,并确保 go
命令可用。
安装教程
go get github.com/virgoC0der/go-mcp
调试方式
- 启动服务器:
server, err := mcp.NewServer(service, &types.ServerOptions{
Address: ":8080",
Type: "sse", // 或 "http"
})
if err != nil {
log.Fatal(err)
}
- 创建客户端并连接:
client, err := mcp.NewClient(&types.ClientOptions{
ServerAddress: "localhost:8080",
Type: "http", // 或 "sse", "websocket"
UseJSONRPC: true,
SubscribeToNotifications: true,
})
if err != nil {
log.Fatal(err)
}
- 使用服务接口:
result, err := service.ListPrompts(ctx, "")
if err != nil {
log.Fatal(err)
}