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

Related MCP server: fal

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    FastMCP is a comprehensive MCP server allowing secure and standardized data and functionality exposure to LLM applications, offering resources, tools, and prompt management for efficient LLM interactions.
    3
    MIT