MCP gRPC Transport
A gRPC transport for MCP, enabling communication between clients and remote MCP servers.
mcp-grpc-transport
An MCP transport which uses gRPC for communication between the client and the MCP server. This will make it easier to host MCP servers on remote instances just like any other web servers.
Usage of gRPC as the transport, allows to reuse any existing infrastructure and processes for authentication and authorization.
[!NOTE] Supports only the two most widely used libraries currently:
- metoro-io/mcp-golang - Upstream PR #118
- mark3labs/mcp-go
Usage
With metoro-io library
[!TIP] Full example is available at
examples/metoro-io-server/main.go
In the metoro-io/mcp-golang server example, just replace the transport as follows:
+ 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())
...
}
You can customize the server with more options if required:
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)
}
With mark3labs library
[!TIP] Full example is available at
examples/mark3labs-server/main.go
In the mark3labs/mcp-go server example, just replace the transport as follows:
+ 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)
+ }
...
}
You can customize the server with more options if required:
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!
),
)
}
Example
Start the server:
$ go run examples/metoro-io-server.go
transport started...
Received message...
transport started...
Received message...
Configure your IDE client (following confugration is for Cursor IDE's 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
]
}
}
}
Or test the client locally directly through 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"}]}}
License
Serveurs connexes
S-IMSY MCP Server
Provides SSE and HTTP streamable connection endpoints, authenticated via a SIMSY App token.
Telegram
A server for interacting with Telegram via the MTProto API, requiring API credentials.
Telnet MCP Server
A secure telnet client for LLM applications, designed for defensive security analysis of network devices.
YCloud WhatsApp API
Interact with the YCloud WhatsApp API to send and manage messages.
Sinch Engage / MessageMedia MCP server
Sinch Engage (Sinch MessageMedia in AU) MCP server, which provides Sinch Engage APIs as MCP tools.
Genesys Cloud MCP Server
Exposes Genesys Cloud tools like sentiment analysis, conversation search, and topic detection for LLMs.
Hacker News MCP Server
Access Hacker News stories, comments, and user profiles using the Hacker News API.
CData Twilio
A read-only MCP server for querying live Twilio data, powered by the CData JDBC Driver.
Twist MCP Server
Interact with a Twist workspace using its REST API.
Join.Cloud
Collaboration rooms for AI agents. Real-time messaging + standard git.