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.
- SEP: gRPC as a native MCP transport — the specification enhancement proposal
- Blog: gRPC as a Native Transport for MCP
- Server: expose a FastMCP server over gRPC
- Client: call a gRPC MCP server and get back native
mcp.typesobjects - Tool calls with text and image content, structured output, and progress reporting
- Proto definitions sourced from GoogleCloudPlatform/mcp-grpc-transport-proto
uv syncThe proto package (mcp-transport-proto) is fetched directly from GitHub via [tool.uv.sources] — no manual proto compilation needed.
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))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())| 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 |
Start the server:
uv run python example/grpc_example_server.pyIn another terminal, run the client:
uv run python example/grpc_example_client.py- Python >= 3.10
- grpcio >= 1.78.0
- protobuf >= 4.25.0
- mcp == 1.25.0