grpc-go について
gRPC-Go は gRPC の Go 実装で、Go サービスを開発する人向けのオープンソース RPC フレームワークです。モバイルと HTTP/2 を重視し、Go API を提供します。
主な機能
- 01gRPC の Go 実装
- 02オープンソースの RPC フレームワーク
- 03モバイルと HTTP/2 を重視
- 04Go API とドキュメント
- 05サンプルと性能ベンチマーク
活用シーン
- 01Go での RPC サービス構築
- 02Go クライアントとサーバーの接続
- 03gRPC API とサンプルの参照
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
gRPC-Go
gRPC の Go 実装です。モバイルと HTTP/2 を重視した、高性能なオープンソースの汎用 RPC フレームワークです。詳しくは [Go gRPC ドキュメント][]をご覧いただくか、[クイックスタート][]に直接進んでください。
前提条件
- Go:最新のメジャーリリース 2 つのうち、いずれか。
インストール
以下のインポートをコードに追加するだけで、go [build|run|test] が必要な依存関係を自動的に取得します。
import "google.golang.org/grpc"
注: 中国から
grpc-goにアクセスしようとしている場合は、以下の FAQ をご覧ください。
詳細情報
- [Go gRPC ドキュメント][]([クイックスタート][]、API リファレンス、その他のリソースを掲載)
- このリポジトリの低レベル技術ドキュメント
- [パフォーマンスベンチマーク][]
- サンプル
- コントリビューションガイドライン
FAQ
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 ルックアップを発生させるために、サーバーが定期的に接続を終了するよう設定している場合です。この場合は、RPC 呼び出しをより長く完了できるように、MaxConnectionAgeGrace を大きくすることを検討してください。
エラーはクライアント側で発生する一方、接続が閉じられた根本原因はサーバー側にあるため、デバッグが難しい場合があります。__クライアントとサーバーの両方__でログを有効にし、トランスポートエラーがないか確認してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。