Open coreApache-2.0Tested by Geekflare

ToolHive review

Runs each MCP server in its own container, locally or on Kubernetes, with a virtual MCP gateway, a registry server and Cedar policies per tool

Data refreshedMethodologyHow we tested
Founder of Geekflare

Chandan Kumar is a founder of Geekflare. He is a technology enthusiast and entrepreneur who loves to help businesses and people around the world. Chandan has worked at BNP Paribas, Citibank, Deutsche Bank, Motorola, and HP. He’s got an in-depth understanding of business software and IT infrastructure.

Verdict

ToolHive is a good fit for running untrusted or local MCP servers: each one gets its own container with network isolation on by default, and on Kubernetes the operator adds a virtual MCP gateway, Cedar rules per tool and audit logs. The catch is that the free version has no admin console, so access is set through CRDs, CLI flags and Cedar files, and the pre-1.0 project ships several releases a week alongside a long list of security advisories.

Best for

Platform teams that run MCP servers on Kubernetes and want containers and policy as code

Not for

Teams that want a web console to manage users, catalog and access without Kubernetes

Pros

  • Every server runs in its own container with network isolation on by default
  • Virtual MCP server combines many servers behind one endpoint, on Kubernetes or locally
  • Cedar policies can allow or deny single tools by user, role or group claim
  • Gateway, registry, operator and auth are all in the Apache 2.0 version

Cons

  • No admin console in the free version; configuration is CLI flags, CRDs and policy files
  • Over 40 security advisories in September and October 2026, one of them a critical auth bypass
  • Pre-1.0 with several releases a week and no supported older versions outside Enterprise
Ask Sparkian

Is ToolHive right for your project?

Describe what you need and AI will check the fit against this review.

Or try:

ToolHive features and capabilities

Containers with network isolation

Each MCP server runs in a container behind an egress proxy and DNS filter, so a server can only reach the hosts and files its permission profile allows.

Virtual MCP server

Local containers and remote SaaS MCP servers sit behind one endpoint with one sign-in, and teams can rename, filter or wrap tools and build multi-step workflows across them.

Cedar policies and webhooks

Rules written in Cedar decide which users, roles or groups may call each tool, and a webhook can hand the decision to an external policy service.

Registry Server

A PostgreSQL-backed catalog of approved MCP servers and skills that syncs from the official MCP registry or Git, so developers install vetted servers by name.

Kubernetes operator

MCP servers, remote proxies and gateways are declared as Kubernetes resources with rate limits per user, OpenTelemetry traces and audit logs.

One endpointCombines tools from several MCP servers behind one URL
YesVirtual MCP server, on Kubernetes or via the CLI
Client authOAuth, OIDC or keys for the agents and users calling the gateway
YesOAuth 2.1 and OIDC; virtual API keys are Enterprise
Per-tool accessAllows or denies individual tools per user, team or key
YesCedar rules per tool on user, role or group claims
Server catalogA registry of approved MCP servers that teams can pick from
YesRegistry Server; org-wide catalog policies are Enterprise
API to MCPTurns existing REST or OpenAPI APIs into MCP tools
No
Sandboxed serversRuns local MCP servers in containers or another sandbox
YesContainer per server, network isolation on by default
GuardrailsChecks tool calls for prompt injection, secrets or PII
PartlyWebhooks and argument rules; no built-in scanner

At a glance

Type
MCP server manager and gateway
Stack
Go
Databases
PostgreSQL, Redis
Licence terms
ToolHive itself is Apache 2.0, including the CLI, desktop app, operator, vMCP and Registry Server. The admin console, Connector Gateway, AI Gateway, turnkey Okta and Entra ID setup, group-to-role mapping and long-term supported versions are only in Stacklok Enterprise, a separate paid platform.
SSO
Free edition
Roles and permissions
Free edition
Audit logs
Free edition

Free vs paid editions

What you get when you self-host, and what needs a paid plan.

ToolHive is free under Apache 2.0, with the CLI, desktop app, Kubernetes operator, virtual MCP server, Registry Server, OIDC authentication, Cedar policies and audit logging. Stacklok Enterprise is a separate self-hosted platform that adds an admin console, a Connector Gateway and an AI Gateway, ready-made Okta and Entra ID setup, mapping of IdP groups to roles, central audit reporting, supported release lines and SLA support.

Self-hosting ToolHive

ToolHive gives no minimum requirements and says they depend on the MCP servers you run; it needs Docker, Podman, Colima or Rancher Desktop locally, or a supported Kubernetes version for the operator.

New cloud server to ready

10 s

Memory in use at idle

654 MB of 4 GB

Median tool call

13.4 ms

Calls/s, 8 sessions

154

Peak memory

654 MB

Version tested

0.59.0 · Oct 30, 2026

  • The CLI pulled the reference server from its registry and started it with an egress proxy and a DNS container beside it, and a local vMCP was serving both servers about 10 seconds after I downloaded thv.
  • thv run treated Geekflare's remote server as needing OAuth and waited for a browser login, so I added it to the vMCP config as a backend instead.
  • When I named my workload everything, ToolHive deleted an existing container with that name that it had not created and put its own in its place, without asking. Check names before you run it on a shared Docker host.
  • Tool calls through vMCP took a median of 13 ms and 8 sessions made 154 calls a second. The idle total was 654 MB, about 225 MB of it the thv proxy process for one server, and a per-workload filter cut the list to the two tools I named.
Commands and vMCP config I ran
thv group create gw
thv run --group gw --name everything io.github.stacklok/everything   # runs in a container
thv vmcp init --group gw --output vmcp.yaml
# then added Geekflare as a remote backend and a tool filter:
#   backends:
#   - name: geekflare
#     url: https://mcp.geekflare.com/<API_KEY>/mcp
#     transport: streamable-http
#   aggregation:
#     tools:
#     - workload: everything
#       filter: ["echo"]
thv vmcp serve --config vmcp.yaml        # http://127.0.0.1:4483/mcp
OutputPassed0.59.0 · vMCP with 31 tools · 1.4 s
Request: tools/call geekflare_dnsRecord with {"url": "geekflare.com"}, through the gateway to Geekflare's hosted MCP server
{
  "timestamp": 1793385307315,
  "apiStatus": "success",
  "apiCode": 200,
  "meta": {
    "url": "geekflare.com",
    "test": {
      "id": "f66e64da-cb63-4763-ae9d-a36d71d3a492"
    }
  },
  "data": {
    "A": [
      "104.26.0.30",
      "104.26.1.30",
      "172.67.72.144"
    ],
    "AAAA": [
      "2606:4700:20::ac43:4890",
      "2606:4700:20::681a:1e",
      "2606:4700:20::681a:11e"
    ],
    "MX": [ … ],
    …

What you can do with ToolHive

Safe local MCP servers for developers

Run npm, PyPI and Docker MCP servers from the desktop app in containers that can reach only the hosts each server needs.

One MCP endpoint per team on Kubernetes

Deploy servers with the operator and put a virtual MCP server in front, with OIDC sign-in and Cedar rules for each team's tools.

Approved server catalog

Run the Registry Server with a list of vetted MCP servers so developers install those instead of copying configs from the internet.