Skip to main content
Glama
pawbhard

gRPC Transport for MCP

by pawbhard

gRPC Transport for MCP

WARNING

Experimental / Proof of Concept

This package is a proof of concept for experimentation purposes. It is not intended for production use. The official Python package is being developed at GoogleCloudPlatform/mcp-grpc-transport-py — please follow/star that repo to stay updated.

A gRPC transport implementation for the Model Context Protocol (MCP) using FastMCP.

Background

Features

  • Server: expose a FastMCP server over gRPC

  • Client: call a gRPC MCP server and get back native mcp.types objects

  • Tool calls with text and image content, structured output, and progress reporting

  • Proto definitions sourced from GoogleCloudPlatform/mcp-grpc-transport-proto

Installation

uv sync

The proto package (mcp-transport-proto) is fetched directly from GitHub via [tool.uv.sources] — no manual proto compilation needed.

Server

import asyncio
from mcp.server.fastmcp import FastMCP
from grpcmcp import serve_grpc

mcp = FastMCP("My Server")

@mcp.tool()
async def my_tool(x: int) -> str:
    """Does something useful."""
    return str(x)

if __name__ == "__main__":
    asyncio.run(serve_grpc(mcp))          # default: 0.0.0.0:50051
    # asyncio.run(serve_grpc(mcp, port=9090))

Client

import asyncio
from grpcmcp import GRPCClient

async def main():
    async with GRPCClient("localhost", 50051) as client:
        tools = await client.list_tools()
        for tool in tools.tools:
            print(f"{tool.name}: {tool.description}")

        result = await client.call_tool("my_tool", {"x": 42})
        for content in result.content:
            if content.type == "text":
                print(content.text)

asyncio.run(main())

GRPCClient reference

Parameter

Type

Description

host

str

Server hostname

port

int

Server port

timeout

float | None

Default per-call timeout in seconds

channel_options

list[tuple] | None

Raw gRPC channel options

Method

Returns

list_tools()

types.ListToolsResult

call_tool(name, arguments)

types.CallToolResult

Running the examples

Start the server:

uv run python example/grpc_example_server.py

In another terminal, run the client:

uv run python example/grpc_example_client.py

Requirements

  • Python >= 3.10

  • grpcio >= 1.78.0

  • protobuf >= 4.25.0

  • mcp == 1.25.0

A
license - permissive license
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pawbhard/grpcmcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server