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
Похожие серверы
WhatsApp Web MCP
Connects AI models to WhatsApp Web using the Model Context Protocol (MCP) to automate and enhance interactions.
Voice MCP
Enables voice interactions with Claude and other LLMs using an OpenAI API key for STT/TTS services.
x402mail
Send and receive emails via Python SDK or MCP. No API keys, no accounts - your wallet is your identity. Pay per call with USDC on Base via the x402 protocol. $0.005 per email.
NANDA AI Agent Sunday Hack
An MCP server integrating WhatsApp messaging and ElevenLabs AI voice capabilities into VS Code.
Theagora
Agent-to-agent service exchange with atomic escrow, cryptographic verification, and per-function reputation. 27 MCP tools.
Ayni Protocol
Visual coordination protocol for AI agents — 22 MCP tools for glyph-based communication with 50-70% token savings, shared memory, governance, and on-chain attestation.
dTelecom STT
Real-time speech-to-text for AI assistants. Transcribe audio files with production-grade accuracy. Pay per use with USDC via x402 — no API keys needed.
mcp-max-messenger
mcp-max-messenger
Vapi MCP Server
A server for integrating with Vapi's voice AI APIs using function calls.
rqbit
Interact with the rqbit torrent client API. Requires a running rqbit instance.