关于 grpc-go
gRPC-Go 是 gRPC 的 Go 语言实现,面向构建 Go 服务的开发者,提供开源 RPC 框架及其 API,并侧重移动端和 HTTP/2。
主要功能
- 01gRPC 的 Go 语言实现
- 02开源 RPC 框架
- 03面向移动端和 HTTP/2
- 04Go API 与文档
- 05示例和性能基准
适用场景
- 01用 Go 构建 RPC 服务
- 02连接 Go 客户端与服务端
- 03查阅 gRPC API 和示例
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
gRPC-Go
gRPC 的 Go 实现:一种高性能、开源的通用 RPC 框架,优先支持移动设备和 HTTP/2。更多信息请参阅 [Go gRPC 文档][],也可以直接查看[快速入门][]。
前置条件
安装
只需在代码中添加以下导入,然后 go [build|run|test]
便会自动获取所需的依赖项:
import "google.golang.org/grpc"
注意:如果你在中国尝试访问
grpc-go,请参阅下方的 常见问题。
了解更多
常见问题
I/O 超时错误
某些国家/地区可能会屏蔽 golang.org 域名。发生这种情况时,go get 通常
会产生如下错误:
$ go get -u google.golang.org/grpc
package google.golang.org/grpc: unrecognized import path "google.golang.org/grpc" (https fetch: Get https://google.golang.org/grpc?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)
构建 Go 代码有以下几种方法:
-
设置 VPN,并通过它访问 google.golang.org。
-
使用 Go 模块支持:可以使用
go mod的replace功能为 golang.org 软件包创建别名。在项目目录中:go mod edit -replace=google.golang.org/grpc=github.com/grpc/grpc-go@latest go mod tidy go mod vendor go build -mod=vendor此外,所有托管在 golang.org 上的传递依赖项也都需要进行同样的处理。详情请参阅 golang/go issue #28652。
编译错误,undefined: grpc.SupportPackageIsVersion
请使用
go get google.golang.org/grpc 更新到最新版本的 gRPC-Go。
如何启用日志记录
默认日志记录器由环境变量控制。可以这样开启所有日志:
$ export GRPC_GO_LOG_VERBOSITY_LEVEL=99
$ export GRPC_GO_LOG_SEVERITY_LEVEL=info
RPC 失败,错误为 "code = Unavailable desc = transport is closing"
此错误表示 RPC 使用的连接已关闭,原因可能有很多,包括:
- 传输凭据配置错误,握手失败
- 字节传输中断,可能是中间的代理导致
- 服务关闭
- Keepalive 参数导致连接关闭,例如,如果你配置了服务定期终止连接,以触发 DNS 查询。 如果是这种情况,可以考虑增大 MaxConnectionAgeGrace, 以便较长的 RPC 调用能够完成。
此问题可能较难调试,因为错误发生在客户端,但连接关闭的根本原因在服务端。请在 __客户端和服务端__都启用日志记录,查看是否存在传输错误。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。