
Model Context Protocol

2025.03.20
2
GoJSON RPC 通信多传输方式支持其它
go-mcp 是一个基于 Model Context Protocol (MCP) 的 Go 语言实现,主要用于实现客户端和服务端之间的 JSON RPC 通信。它提供了 Transport 和 Protocol 的抽象,支持多种传输方式(如 stdio、sse、in_memory 等),适用于需要高效、灵活通信的场景。
View on GitHub
Overview
基本能力
产品定位
go-mcp 是一个基于 Model Context Protocol (MCP) 的 Go 语言实现,专注于提供客户端和服务端之间的 JSON RPC 通信能力。
核心功能
- Transport 抽象:支持多种传输方式(如 stdio、sse、in_memory 等),负责发送和接收 JSON RPC 消息。
- Protocol 抽象:负责格式化、解析 JSON 消息,生成 Request/Response/Notification/Error 消息。
- MCP 客户端和服务端:支持定义客户端和服务端的能力,并通过 Transport 进行通信。
适用场景
- JSON RPC 通信:适用于需要高效、灵活通信的场景,如 LSP 客户端/服务端等。
- 多传输方式支持:适用于需要多种传输方式的场景,如 stdio、sse、in_memory 等。
工具列表
- Client:支持
ListTools()
、CallTool()
等功能,用于与服务器交互。 - Server:支持监听消息并通过 Transport 进行通信。
- Transport:提供多种传输方式(如 stdio、sse、in_memory 等)。
- Protocol:负责 JSON 消息的格式化和解析。
常见问题解答
- 如何创建客户端和服务端?
- 定义客户端或服务端的能力,并通过
Connect(transport)
方法连接到 Transport。 - 如何发送和接收消息?
- 使用 Transport 发送和接收消息,Protocol 负责消息的格式化和解析。
使用教程
使用依赖
- 确保已安装 Go 语言环境。
- 克隆项目代码:
bash git clone https://github.com/modelcontextprotocol/go-mcp.git
安装教程
- 进入项目目录:
bash cd go-mcp
- 安装依赖:
bash go mod download
- 编译项目:
bash go build
调试方式
- 启动服务端:
bash ./go-mcp server
- 启动客户端:
bash ./go-mcp client
- 使用
ListTools()
和CallTool()
进行交互测试。
许可证
None