Go-MCP

Go-MCP

site icon
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

调试方式

  1. 启动服务器:
server, err := mcp.NewServer(service, &types.ServerOptions{
    Address: ":8080",
    Type:    "sse", // 或 "http"
})
if err != nil {
    log.Fatal(err)
}
  1. 创建客户端并连接:
client, err := mcp.NewClient(&types.ClientOptions{
    ServerAddress: "localhost:8080",
    Type:         "http", // 或 "sse", "websocket"
    UseJSONRPC: true,
    SubscribeToNotifications: true,
})
if err != nil {
    log.Fatal(err)
}
  1. 使用服务接口:
result, err := service.ListPrompts(ctx, "")
if err != nil {
    log.Fatal(err)
}

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。