mcpField
M
mcp-grpc-transport

mcp-grpc-transport

本地服务
github.com/rustycl0ck开发工具471 周前更新

关于 mcp-grpc-transport

mcp-grpc-transport 为基于两种 Go 库构建的 MCP 服务提供 gRPC 通信方式,适用于远程托管,并可复用现有的身份验证和授权基础设施。

主要功能

  1. 01为 MCP 提供 gRPC 传输
  2. 02支持两种 Go MCP 库
  3. 03可配置的服务端选项
  4. 04用于本地测试的命令行客户端

适用场景

  1. 01在远程实例托管 MCP 服务
  2. 02复用现有 gRPC 身份验证和授权流程
  3. 03通过命令行测试 MCP 请求

MCP 相关

它为 MCP 客户端与服务端之间提供 gRPC 传输,支持 metoro-io/mcp-golang 和 mark3labs/mcp-go。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-grpc-transport

一种使用 gRPC 在客户端和 MCP 服务之间通信的 MCP 传输方式。这使得像托管其他 Web 服务一样,在远程实例上托管 MCP 服务更加轻松。

使用 gRPC 作为传输方式,可以复用现有的身份验证和授权基础设施及流程。

说明

目前仅支持两种使用最广泛的库:

用法

使用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。