whatisgithub

What is grpcurl?

fullstorydev/grpcurl — explained in plain English

Analysis updated 2026-06-24

12,632GoAudience · developerComplexity · 2/5Setup · easy

In one sentence

A command-line tool for calling gRPC server endpoints from the terminal, like cURL for HTTP. It converts human-readable JSON to binary protobuf format and back automatically.

Mindmap

mindmap
  root((grpcurl))
    What it does
      Call gRPC methods
      JSON to protobuf
      Streaming support
    Service discovery
      Server reflection
      Proto source files
      Descriptor files
    Connection types
      TLS encrypted
      Plain text
      Mutual TLS
    Installation
      Binary download
      Homebrew macOS
      Docker image
    Go library
      Build custom clients
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Test a gRPC service endpoint from your terminal without writing any client code.

USE CASE 2

List all services and methods available on a gRPC server using server reflection.

USE CASE 3

Debug bidirectional streaming gRPC methods by piping JSON messages from a file.

USE CASE 4

Automate gRPC API calls in shell scripts using JSON input piped from other commands.

What is it built with?

Go

How does it compare?

fullstorydev/grpcurlelastic/beatsgo-admin-team/go-admin
Stars12,63212,61512,650
LanguageGoGoGo
Setup difficultyeasymoderatehard
Complexity2/53/54/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

So what is it?

gRPCurl is a command-line tool for talking to gRPC servers, named after the popular cURL utility that developers use to send HTTP requests from the terminal. gRPC is a way for programs to communicate with each other over a network, but it uses a compact binary data format called protocol buffers (protobuf) that is not human-readable and cannot be sent with regular HTTP tools. gRPCurl translates between the JSON format humans can read and write and the binary format that gRPC servers expect. With gRPCurl you can call any method on a gRPC server, including streaming methods where the server sends back multiple responses over time, or where both sides exchange data back and forth in an ongoing conversation. You write the request data as JSON in the terminal or pipe it in from another command, and the tool handles the conversion automatically. Custom headers and metadata can be added to each request with a flag. To know what methods and data shapes a server accepts, gRPCurl can ask the server directly if it supports a feature called server reflection. If the server does not support reflection, you can point gRPCurl at the source files that define the service (proto files) or pre-compiled descriptor files. This lets you list available services and describe what fields each method expects before making a call. Installation options include downloading a pre-built binary, using Homebrew on macOS, running it as a Docker container, installing via the Snap package manager, or building from source if you have Go installed. The tool supports servers that use TLS encryption, plain unencrypted connections, or mutual TLS where both the client and server present certificates to each other. The repository also includes a Go library package that other developers can use as a base for building their own gRPC command-line clients.

Copy-paste prompts

Prompt 1
Using grpcurl, how do I call the SayHello method on a gRPC server at localhost:50051 with the JSON payload {"name": "World"}?
Prompt 2
How do I list all available services on a gRPC server using grpcurl and server reflection?
Prompt 3
Show me how to use grpcurl with a .proto file to describe a service and call one of its methods.
Prompt 4
How do I connect grpcurl to a gRPC server that requires mutual TLS, providing both client certificate and key?
Prompt 5
Write a shell script that calls a gRPC endpoint with grpcurl and pipes the JSON response to jq to extract a specific field.

Frequently asked questions

What is grpcurl?

A command-line tool for calling gRPC server endpoints from the terminal, like cURL for HTTP. It converts human-readable JSON to binary protobuf format and back automatically.

What language is grpcurl written in?

Mainly Go. The stack also includes Go.

How hard is grpcurl to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is grpcurl for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.