# toolhive Installs the [ToolHive](https://docs.stacklok.com/toolhive) Kubernetes operator via Argo CD, so MCP servers can be declared as `MCPServer` custom resources (see the `mcp-services` app). Runs in the `toolhive-system` namespace. ## What it deploys A multi-source Argo CD Application renders two OCI Helm charts plus this repo's values: | Source | Purpose | |---------------------------------------------------------|----------------------------------| | `oci://ghcr.io/stacklok/toolhive/toolhive-operator-crds`| CRDs (MCPServer, MCPRegistry, …) | | `oci://ghcr.io/stacklok/toolhive/toolhive-operator` | operator Deployment + RBAC | | this repo (`ref: values`) | operator Helm values | Both charts share a unified version, pinned via `chartVersion` in `bootstrap/applicationset.yaml` (currently `0.28.3`). RBAC scope is left `cluster` (chart default) so the operator can reconcile MCPServers in `mcp-services`. ## Deploy ```bash # validate the operator chart renders with our values helm template toolhive-operator oci://ghcr.io/stacklok/toolhive/toolhive-operator \ --version 0.28.3 -n toolhive-system \ -f manifest/overlays/production/helm-values/values.yaml >/dev/null # enable bootstrap/config.yaml (enabled: true), commit, push to main, then: kubectl get pods -n toolhive-system kubectl get crd | grep toolhive.stacklok.dev ``` Deploy this app **before** `mcp-services` — the MCPServer CRs depend on the CRDs installed here. ## Bumping the version ```bash curl -s 'https://api.github.com/repos/stacklok/toolhive/releases?per_page=10' \ | grep tag_name ``` Update `chartVersion` in `bootstrap/applicationset.yaml` and push. (The CRDs and operator charts are released together under the same version number.)