|
| 1 | +# KMCP Helm Chart |
| 2 | + |
| 3 | +A Helm chart for deploying the KMCP (Kubernetes MCP Server Controller) to Kubernetes clusters. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +KMCP is a Kubernetes controller that manages MCP (Model Context Protocol) servers. It provides a declarative way to deploy and manage MCP servers in your Kubernetes environment. |
| 8 | + |
| 9 | +## Prerequisites |
| 10 | + |
| 11 | +- Kubernetes 1.11.3+ |
| 12 | +- Helm 3.0+ |
| 13 | + |
| 14 | +## Installation |
| 15 | + |
| 16 | +### Add the Helm Repository |
| 17 | + |
| 18 | +```bash |
| 19 | +# Add the repository (once available) |
| 20 | +helm repo add kmcp https://charts.kagent.dev |
| 21 | +helm repo update |
| 22 | +``` |
| 23 | + |
| 24 | +### Install the Chart |
| 25 | + |
| 26 | +```bash |
| 27 | +# Install with default values |
| 28 | +helm install kmcp kmcp/kmcp |
| 29 | + |
| 30 | +# Install in a specific namespace |
| 31 | +helm install kmcp kmcp/kmcp --namespace kmcp-system --create-namespace |
| 32 | + |
| 33 | +# Install with custom values |
| 34 | +helm install kmcp kmcp/kmcp --values values.yaml |
| 35 | +``` |
| 36 | + |
| 37 | +## Configuration |
| 38 | + |
| 39 | +The following table lists the configurable parameters of the KMCP chart and their default values. |
| 40 | + |
| 41 | +### Image Configuration |
| 42 | + |
| 43 | +| Parameter | Description | Default | |
| 44 | +|-----------|-------------|---------| |
| 45 | +| `image.repository` | Container image repository | `controller` | |
| 46 | +| `image.tag` | Container image tag | `""` (uses appVersion) | |
| 47 | +| `image.pullPolicy` | Container image pull policy | `IfNotPresent` | |
| 48 | +| `imagePullSecrets` | Image pull secrets | `[]` | |
| 49 | + |
| 50 | +### Controller Configuration |
| 51 | + |
| 52 | +| Parameter | Description | Default | |
| 53 | +|-----------|-------------|---------| |
| 54 | +| `controller.replicaCount` | Number of controller replicas | `1` | |
| 55 | +| `controller.leaderElection.enabled` | Enable leader election | `true` | |
| 56 | +| `controller.healthProbe.bindAddress` | Health probe bind address | `:8081` | |
| 57 | +| `controller.metrics.enabled` | Enable metrics endpoint | `true` | |
| 58 | +| `controller.metrics.bindAddress` | Metrics bind address | `:8443` | |
| 59 | + |
| 60 | +### RBAC Configuration |
| 61 | + |
| 62 | +| Parameter | Description | Default | |
| 63 | +|-----------|-------------|---------| |
| 64 | +| `rbac.create` | Create RBAC resources | `true` | |
| 65 | +| `serviceAccount.create` | Create service account | `true` | |
| 66 | +| `serviceAccount.name` | Service account name | `""` (generated) | |
| 67 | +| `serviceAccount.annotations` | Service account annotations | `{}` | |
| 68 | + |
| 69 | +### Resource Configuration |
| 70 | + |
| 71 | +| Parameter | Description | Default | |
| 72 | +|-----------|-------------|---------| |
| 73 | +| `resources.limits.cpu` | CPU limit | `500m` | |
| 74 | +| `resources.limits.memory` | Memory limit | `128Mi` | |
| 75 | +| `resources.requests.cpu` | CPU request | `10m` | |
| 76 | +| `resources.requests.memory` | Memory request | `64Mi` | |
| 77 | + |
| 78 | +### Security Configuration |
| 79 | + |
| 80 | +| Parameter | Description | Default | |
| 81 | +|-----------|-------------|---------| |
| 82 | +| `podSecurityContext.runAsNonRoot` | Run as non-root user | `true` | |
| 83 | +| `podSecurityContext.seccompProfile.type` | Seccomp profile type | `RuntimeDefault` | |
| 84 | +| `securityContext.allowPrivilegeEscalation` | Allow privilege escalation | `false` | |
| 85 | +| `securityContext.capabilities.drop` | Capabilities to drop | `["ALL"]` | |
| 86 | + |
| 87 | +### Service Configuration |
| 88 | + |
| 89 | +| Parameter | Description | Default | |
| 90 | +|-----------|-------------|---------| |
| 91 | +| `service.type` | Service type | `ClusterIP` | |
| 92 | +| `service.port` | Service port | `8443` | |
| 93 | +| `service.targetPort` | Service target port | `8443` | |
| 94 | + |
| 95 | +### Custom Resource Definition |
| 96 | + |
| 97 | +| Parameter | Description | Default | |
| 98 | +|-----------|-------------|---------| |
| 99 | +| `crd.create` | Create CRDs | `true` | |
| 100 | + |
| 101 | +## Usage |
| 102 | + |
| 103 | +After installation, you can create MCP servers using the `MCPServer` custom resource: |
| 104 | + |
| 105 | +```yaml |
| 106 | +apiVersion: kagent.dev/v1alpha1 |
| 107 | +kind: MCPServer |
| 108 | +metadata: |
| 109 | + name: my-mcp-server |
| 110 | +spec: |
| 111 | + transportType: http |
| 112 | + deployment: |
| 113 | + image: my-mcp-server:latest |
| 114 | + port: 8080 |
| 115 | + httpTransport: |
| 116 | + targetPort: 8080 |
| 117 | +``` |
| 118 | +
|
| 119 | +## Monitoring |
| 120 | +
|
| 121 | +The controller exposes metrics on port 8443 by default. These metrics can be scraped by Prometheus or other monitoring systems. |
| 122 | +
|
| 123 | +## Upgrading |
| 124 | +
|
| 125 | +To upgrade the chart: |
| 126 | +
|
| 127 | +```bash |
| 128 | +helm upgrade kmcp kmcp/kmcp |
| 129 | +``` |
| 130 | + |
| 131 | +## Uninstalling |
| 132 | + |
| 133 | +To uninstall the chart: |
| 134 | + |
| 135 | +```bash |
| 136 | +helm uninstall kmcp |
| 137 | +``` |
| 138 | + |
| 139 | +**Note**: This will remove all the Kubernetes resources associated with the chart and delete the release. |
| 140 | + |
| 141 | +## Contributing |
| 142 | + |
| 143 | +For information on contributing to this project, please see the [main repository](https://github.com/kagent-dev/kmcp). |
| 144 | + |
| 145 | +## License |
| 146 | + |
| 147 | +This project is licensed under the terms specified in the main repository. |
0 commit comments