mcpField
M
mcp-grpc-transport

mcp-grpc-transport

ローカル
github.com/rustycl0ck開発ツール471 週間前に更新

mcp-grpc-transport について

mcp-grpc-transport は、対応する 2 つの Go ライブラリで構築された MCP サーバーに gRPC 通信を追加します。既存の認証・認可基盤を再利用しながら、サーバーをリモートでホストする用途に向いています。

主な機能

  1. 01MCP 向け gRPC トランスポート
  2. 022 種類の Go MCP ライブラリに対応
  3. 03サーバーオプションの設定
  4. 04ローカルテスト用 CLI クライアント

活用シーン

  1. 01リモートインスタンスで MCP サーバーをホスト
  2. 02既存の gRPC 認証・認可プロセスを再利用
  3. 03コマンドラインから MCP リクエストをテスト

MCP 対応

MCP クライアントとサーバー間の gRPC トランスポートを提供し、metoro-io/mcp-golang と mark3labs/mcp-go に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mcp-grpc-transport

クライアントと MCP サーバー間の通信に gRPC を使用する MCP トランスポートです。これにより、ほかの Web サーバーと同様に、リモートインスタンス上で MCP サーバーをホストしやすくなります。

トランスポートとして gRPC を使用すると、認証と認可に既存のインフラストラクチャやプロセスを再利用できます。

メモ

現在、最も広く使われている次の 2 つのライブラリのみをサポートしています。

使い方

metoro-io ライブラリを使用する場合

ヒント

完全な例は examples/metoro-io-server/main.go で確認できます。

metoro-io/mcp-golang のサーバー例で、次のようにトランスポートを置き換えてください。

+ import grpctransport "github.com/rustycl0ck/mcp-grpc-transport/pkg/metoro-io-transport/grpc"
  
  func main() {
      ...
  
-     server := mcp_golang.NewServer(stdio.NewStdioServerTransport())
+     server := mcp_golang.NewServer(grpctransport.NewGrpcServerTransport())
      ...
  }

必要に応じて、さらにオプションを指定してサーバーをカスタマイズできます。

import (
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials/insecure"
)

func main(){
	serverTransport := grpctransport.NewGrpcServerTransport(
		grpctransport.WithPort(10051),
		grpctransport.WithGrpcOpts(
			grpc.UnaryInterceptor(loggingInterceptor),
			grpc.MaxRecvMsgSize(1024*1024),        // 1MB
			grpc.Creds(insecure.NewCredentials()), // TODO: Use TLS in production!
		),
	)

	// Create a new server with the transport
	server := mcp_golang.NewServer(serverTransport)
}
mark3labs ライブラリを使用する場合

ヒント

完全な例は examples/mark3labs-server/main.go で確認できます。

mark3labs/mcp-go のサーバー例で、次のようにトランスポートを置き換えてください。

+ import grpctransport "github.com/rustycl0ck/mcp-grpc-transport/pkg/mark3labs-transport/grpc"

  func main() {
      ...

      // Start the server
-     if err := server.ServeStdio(s); err != nil {
-         fmt.Printf("Server error: %v\n", err)
-     }

+     srv := grpctransport.NewGrpcServer(s)
+     if err := srv.Listen(context.Background()); err != nil {
+         fmt.Printf("Server error: %v\n", err)
+     }
      ...
  }

必要に応じて、さらにオプションを指定してサーバーをカスタマイズできます。

  import (
      "google.golang.org/grpc"
      "google.golang.org/grpc/credentials/insecure"
  )
  
  func main(){
-     srv := grpctransport.NewGrpcServer(s)
+     srv := grpctransport.NewGrpcServer(s,
          grpctransport.WithPort(10051),
          grpctransport.WithGrpcOpts(
              grpc.UnaryInterceptor(loggingInterceptor),
              grpc.MaxRecvMsgSize(1024*1024),        // 1MB
              grpc.Creds(insecure.NewCredentials()), // TODO: Use TLS in production!
          ),
      )
  }

例

サーバーを起動します。

$ go run examples/metoro-io-server.go
transport started...
Received message...
transport started...
Received message...

IDE クライアントを設定します(以下の設定は Cursor IDE の mcp.json 用です)。

{
  "mcpServers": {
    "my-mcp-server": {
      "command": "go",
      "args": [
        "run",
        "github.com/rustycl0ck/mcp-grpc-transport/cmd/client@latest",
        "--address",
        "localhost:50051"  // Replace with actual server location if hosted remotely
      ]
    }
  }
}

または、CLI からクライアントを直接ローカルでテストします。

$ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | go run github.com/rustycl0ck/mcp-grpc-transport/cmd/client@latest
{"id":1,"jsonrpc":"2.0","result":{"tools":[{"description":"Get the weather forecast for temperature, wind speed and relative humidity","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"latitude":{"description":"The latitude of the location to get the weather for","type":"number"},"longitude":{"description":"The longitude of the location to get the weather for","type":"number"}},"required":["longitude","latitude"],"type":"object"},"name":"get_weather"},{"description":"Says hello","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"name":{"description":"The name to say hello to","type":"string"}},"required":["name"],"type":"object"},"name":"hello"}]}}

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。