npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-nodes-grpc

v1.0.3

Published

n8n community node for making gRPC calls. Supports server reflection, multi-file proto with import resolution, TLS, mTLS, and automatic schema discovery.

Downloads

257

Readme

n8n-nodes-grpc

An n8n community node for making unary gRPC calls from your workflows. Point it at any gRPC server, paste your .proto files (or let server reflection discover the schema), pick a service and method, and send a JSON payload — no code generation required.

Features

  • Unary gRPC calls — request/response with automatic protobuf serialization
  • Manual proto files — paste one or more .proto files with full import support; Google well-known types are built-in
  • Server reflection — auto-discover services and methods without proto files
  • TLS / mTLS / insecure — choose transport security per credential
  • Bearer token auth — optional token sent as authorization metadata
  • Custom call metadata — arbitrary key-value pairs per request
  • Per-request timeout — configurable in milliseconds (default 30 000)
  • Merge with Proto Defaults — generates a skeleton from the schema and deep-merges your payload on top
  • Credential connectivity test — auto-tests the connection when you save credentials
  • AI agent integrationusableAsTool enabled for use in n8n AI workflows

Installation

Follow the installation guide in the n8n community nodes documentation.

This node is self-hosted only — it is not compatible with n8n Cloud (see n8n Cloud below).

Credentials

Create a gRPC API credential with the following fields:

| Field | Type | Default | Description | |-------|------|---------|-------------| | Host | string | — | Hostname and port of the gRPC server (e.g. localhost:50051) | | TLS Mode | options | Insecure | Transport security: Insecure, TLS, or mTLS | | CA Certificate | string | — | CA certificate in PEM format (shown for TLS / mTLS) | | Client Certificate | string | — | Client certificate in PEM format (shown for mTLS) | | Client Key | string | — | Client private key in PEM format (shown for mTLS) | | Auth Token | string | — | Optional Bearer token sent as authorization metadata |

The credential automatically tests connectivity when you save it.

Usage

  1. Add a gRPC Request node to your workflow.
  2. Create or select a gRPC API credential.
  3. Choose a Proto SourceManual (paste .proto files) or Server Reflection (auto-discover).
  4. If Manual: add one or more proto files with a filename and content.
  5. Select a Service from the dropdown.
  6. Select a Method from the dropdown.
  7. Write the JSON Request Payload.
  8. Optionally enable Merge with Proto Defaults to fill in missing fields with proto default values.
  9. Optionally add Metadata key-value pairs.
  10. Set a Timeout if the default 30 000 ms is not appropriate.
  11. Execute the node.

Node Parameters

| Parameter | Type | Default | Description | |-----------|------|---------|-------------| | Proto Source | options | Manual | How to obtain the protobuf schema — Manual or Server Reflection | | Proto Files | fixedCollection | — | Proto file entries (filename + content); shown when Proto Source is Manual | | Service | resourceLocator | — | The gRPC service to call | | Method | resourceLocator | — | The method to invoke on the selected service | | Request Payload | json | {} | JSON payload to send with the gRPC request | | Merge with Proto Defaults | boolean | false | Generate a skeleton from the schema and deep-merge your payload on top | | Metadata | fixedCollection | — | Key-value pairs sent as gRPC call metadata | | Timeout | number | 30000 | Request timeout in milliseconds |

Merge with Proto Defaults

When enabled, the node generates a JSON skeleton from the protobuf message definition (all fields set to their proto default values) and deep-merges your request payload on top. Fields you omit in the payload receive their proto defaults, ensuring the full message shape is always sent.

n8n Cloud

This node is not compatible with n8n Cloud. It uses @grpc/grpc-js, which requires Node.js built-in modules (net, tls, http2) that are restricted in the Cloud environment.

Install this node on self-hosted n8n instances only.

Compatibility

  • Minimum n8n version: 1.71.0 (n8nNodesApiVersion 1)
  • Tested with: n8n 2.12.x

Development

Prerequisites

  • Node.js 22+
  • just command runner

Commands

| Recipe | Description | |--------|-------------| | just build | Compile TypeScript to dist/ | | just dev | Watch mode — starts local n8n with the node loaded | | just lint | Run the n8n node linter | | just lint-fix | Lint and auto-fix | | just format | Run Prettier | | just format-check | Check formatting without writing | | just test | Run unit + integration tests | | just test-unit | Run unit tests only | | just test-int | Run integration tests only | | just test-e2e | Run e2e tests (requires Docker) | | just test-all | Run all test suites | | just test-coverage | Unit + integration with coverage enforcement | | just check | Full pre-publish check: lint + format + tests + build + verify | | just verify | Run the n8n community package scanner |

Test Server

A standalone gRPC server for manual testing. Start it alongside just dev to interact with the node in a real n8n UI.

just gen-certs        # run once to generate self-signed TLS certificates
just test-server-up   # starts the server in the foreground
# in another terminal:
just dev              # opens n8n with the node loaded

The server listens on two ports:

| Port | Transport | |------|-----------| | 50051 | Insecure | | 50052 | TLS (mTLS — requires client certificate) |

Both ports have gRPC server reflection enabled, so you can test both Manual and Server Reflection proto sources.

Services and test scenarios:

| Service | Method | What it tests | |---------|--------|---------------| | TestService | Echo | Basic unary round-trip — returns the request message verbatim | | | EchoTagged | Nested messages and repeated fields survive serialization | | | Ping | Empty request/response (google.protobuf.Empty) | | | ErrorNotFound, ErrorInvalidArgument, ErrorUnauthenticated, ErrorPermissionDenied, ErrorAlreadyExists, ErrorResourceExhausted, ErrorInternal, ErrorUnavailable, ErrorUnimplemented, ErrorDataLoss | Each returns its respective gRPC status code — tests error mapping | | | SlowResponse | Sleeps for delay_ms before responding — tests timeout behavior | | | EchoMetadata | Returns all incoming call metadata — tests custom metadata pairs | | | ReadRequestId | Returns the x-request-id metadata value | | | RequireAuth | Requires Bearer test-token — tests credential auth token | | | RequireAdminAuth | Requires Bearer admin-* — tests auth with role-based tokens | | | GenerateItems | Returns a repeated field with N items — tests large payloads | | WellKnownTypeService | GetServerTime | Returns a google.protobuf.Timestamp — tests well-known type handling | | | EchoStruct | Echoes a google.protobuf.Struct — tests dynamic JSON payloads |

Test Suites

  • Unit tests (test/unit/) — proto parsing, reflection, skeleton generation, merge logic, error mapping, node definition, execute logic
  • Integration tests (test/integration/) — in-process gRPC server, full node execute round-trips
  • E2E tests (test/e2e/) — real Qdrant (Docker) and Temporal servers
  • Manual testing — start the test server with just test-server-up, then use just dev to open n8n with the node loaded and test interactively against the local gRPC server

Generating TLS Certificates

just gen-certs

Run once before starting the TLS test server. Certificates are written to test-server/certs/.

Publishing

  1. Run npm run release locally — this bumps the version, updates the changelog, commits, tags, pushes to GitHub, and creates a GitHub release.
  2. The pushed version tag (v*.*.*) triggers GitHub Actions, which automatically publishes the package to npm with provenance.

Design & Planning

See DESIGN.md for architecture docs, epics, and stories.

Resources

Version History

See CHANGELOG.md.