{"adoption": {"forks": 283, "observed_at": "2026-08-28T04:06:08.674204+00:00", "stars": 2043}, "canonical_url": "https://ross.abutalabs.com/products/toolhive", "card": {"archived": false, "artifact_type": "service", "description": "ToolHive is an enterprise-grade platform for running and managing Model Context Protocol (MCP) servers.", "domain": ["artificial-intelligence", "large-language-models", "security", "self-hosted", "developer-tools"], "enriched": true, "function": ["mcp", "security", "container-runtime", "api-gateway", "authorization", "monitoring", "self-hosted", "developer-tools"], "health_score": 100, "homepage": "https://stacklok.com/download/", "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["stacklok/toolhive"], "name": "stacklok/toolhive", "platform": ["go", "cli", "windows", "self-hosted", "cloud"], "pushed_at": "2026-08-26T17:00:48+00:00", "repo": "stacklok/toolhive", "stars": 2043, "tags": ["mcp-servers", "mcp-gateway", "mcp-registry", "kubernetes-operator", "container-isolation", "semantic-tool-search", "otel-tracing", "ai-security", "ai-agents", "devops", "containers", "kubernetes", "docker", "macos", "linux"], "topics": ["ai", "aicodeassistant", "mcp", "ai-security", "mcp-security", "mcp-servers", "mcp-tools", "security", "golang", "kubernetes", "model-context-protocol"], "urls": [], "use_cases": ["run mcp servers securely in isolated containers", "deploy mcp servers on kubernetes", "self-host an mcp registry and gateway", "connect claude code or cursor to mcp servers with one command", "reduce llm token usage from tool definitions", "enforce identity and access policy on mcp tool calls", "audit and observe mcp server usage in production"], "what_it_is": "ToolHive is an open-source platform for running, securing, and managing Model Context Protocol (MCP) servers. It wraps MCP servers in isolated containers, provides a registry, gateway, CLI, desktop app, and a Kubernetes operator for enterprise deployments.", "when_to_avoid": ["you only need a single MCP server locally with no security or governance requirements", "your AI client only supports STDIO transport and you cannot use SSE or Streamable HTTP", "you need a general-purpose agent framework rather than MCP server infrastructure"], "when_to_choose": ["you need to run MCP servers in production with security, isolation, and audit logs", "you want a self-hosted alternative to SaaS MCP platforms for compliance reasons", "your platform team wants to manage MCP on existing Kubernetes infrastructure", "you want one-click client configuration for Claude Code, Cursor, VS Code, and other AI clients"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/toolhive", "repo": "stacklok/toolhive", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:08.674204+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:58:16.988214+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f37d26fdf4afc5bcc61d0a881b6d83524a80854a55b9b499e07bac0fd107baf6", "fetched_at": "2026-08-28T04:06:08.674204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/stacklok/toolhive"}, {"content_hash": "22991a92959e177702c292a5c63cac8a2469324edfc2d17e8ef66bbd9a41284f", "fetched_at": "2026-08-29T10:38:23.725286+00:00", "kind": "homepage", "missing": false, "url": "https://stacklok.com/download/"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.734515+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com"}, {"content_hash": "cb574c5b988b2f7378779b0b600432bcc85a50dab60b84d51fef2ba6ab576c71", "fetched_at": "2026-08-29T10:38:23.736483+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/"}, {"content_hash": "b9a2db1c4a45f9072521ee4f68d0f3c26291a759908940225bbc9d145a0a2a61", "fetched_at": "2026-08-29T10:38:23.738291+00:00", "kind": "site_page", "missing": false, "url": "https://docs.stacklok.com/toolhive/reference/client-compatibility"}, {"content_hash": "f7c0ce611b11d1e62edc5140d9fe9ecffb41378067199eb4cd09103f19eb9a88", "fetched_at": "2026-08-29T10:38:23.740464+00:00", "kind": "site_page", "missing": false, "url": "https://stacklok.com/company"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 38, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 539, "days_push": 7, "days_rel": 7, "gap_med": 0.0, "n_releases_24m": 359}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}