diff --git a/.github/workflows/helm-ci.yaml b/.github/workflows/helm-ci.yaml index a53151c..52342ec 100644 --- a/.github/workflows/helm-ci.yaml +++ b/.github/workflows/helm-ci.yaml @@ -19,7 +19,7 @@ jobs: - name: Set up Helm uses: azure/setup-helm@v3 with: - version: v3.13.3 + version: v3.21.2 - name: Install helm-unittest plugin run: helm plugin install https://github.com/helm-unittest/helm-unittest diff --git a/README.md b/README.md index 13eb47b..ab6948c 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,21 @@ This repo contains a Helm chart for running the Itential MCP server in Kubernetes. Requires Helm version `v3.15.0`. +## Table of Contents + +- [Itential MCP](#itential-mcp) + - [Before You Deploy](#before-you-deploy) + - [Usage](#usage) + - [Requirements & Dependencies](#requirements--dependencies) + - [Secrets](#secrets) + - [imagePullSecrets](#imagepullsecrets) + - [Transport Mode](#transport-mode) + - [TLS and Certificate Verification](#tls-and-certificate-verification) + - [Integrating with Claude Desktop](#integrating-with-claude-desktop) + - [Integrating with Claude Code](#integrating-with-claude-code) + - [Tool Filtering](#tool-filtering) +- [Values](#values) + ## Itential MCP The Itential MCP server is a [Model Context Protocol](https://modelcontextprotocol.io/) server @@ -274,8 +289,8 @@ helm install mcp . -f values.yaml \ | affinity | object | `{}` | Additional affinities | | applicationPort | int | `8000` | The port the MCP server container listens on inside the pod. Must match `env.ITENTIAL_MCP_SERVER_PORT`. | | credentials.secretName | string | `""` | Name of an existing Secret to use for platform credentials. When set, no Secret is created by the chart. | -| credentials.platformUser | string | `""` | Basic auth username for Itential Platform. Only used when `credentials.secretName` is empty. | -| credentials.platformPassword | string | `""` | Basic auth password for Itential Platform. Only used when `credentials.secretName` is empty. | +| credentials.platformUser | string | `"admin"` | Basic auth username for Itential Platform. Only used when `credentials.secretName` is empty. | +| credentials.platformPassword | string | `"admin"` | Basic auth password for Itential Platform. Only used when `credentials.secretName` is empty. | | credentials.platformClientId | string | `""` | OAuth 2.0 client ID. Only used when `credentials.secretName` is empty. | | credentials.platformClientSecret | string | `""` | OAuth 2.0 client secret. Only used when `credentials.secretName` is empty. | | deployment.enabled | bool | `true` | Toggle creation of the Deployment object. | @@ -304,7 +319,7 @@ helm install mcp . -f values.yaml \ | ingress.tls | list | `[]` | TLS configuration for the Ingress. | | livenessProbe.enabled | bool | `false` | Toggle the liveness probe. | | livenessProbe.failureThreshold | int | `3` | Number of failures before the pod is killed. | -| livenessProbe.path | string | `"/mcp"` | HTTP path for the liveness probe. | +| livenessProbe.path | string | `"/status/livez"` | HTTP path for the liveness probe. | | livenessProbe.periodSeconds | int | `30` | How often to run the probe. | | livenessProbe.successThreshold | int | `1` | Minimum consecutive successes to be considered healthy. | | livenessProbe.timeoutSeconds | int | `5` | Seconds after which the probe times out. | @@ -314,7 +329,7 @@ helm install mcp . -f values.yaml \ | podSecurityContext | object | `{}` | Pod-level security context. | | readinessProbe.enabled | bool | `false` | Toggle the readiness probe. | | readinessProbe.failureThreshold | int | `3` | Number of failures before the pod is marked not ready. | -| readinessProbe.path | string | `"/mcp"` | HTTP path for the readiness probe. | +| readinessProbe.path | string | `"/status/readyz"` | HTTP path for the readiness probe. | | readinessProbe.periodSeconds | int | `10` | How often to run the probe. | | readinessProbe.successThreshold | int | `1` | Minimum consecutive successes to be considered ready. | | readinessProbe.timeoutSeconds | int | `5` | Seconds after which the probe times out. | @@ -332,7 +347,7 @@ helm install mcp . -f values.yaml \ | startupProbe.enabled | bool | `false` | Toggle the startup probe. | | startupProbe.failureThreshold | int | `18` | Number of failures before the pod is killed during startup. | | startupProbe.initialDelaySeconds | int | `10` | Seconds before the startup probe begins. | -| startupProbe.path | string | `"/mcp"` | HTTP path for the startup probe. | +| startupProbe.path | string | `"/status/livez"` | HTTP path for the startup probe. | | startupProbe.periodSeconds | int | `10` | How often to run the probe during startup. | | startupProbe.successThreshold | int | `1` | Minimum consecutive successes to pass startup. | | startupProbe.timeoutSeconds | int | `5` | Seconds after which the startup probe times out. | diff --git a/tests/deployment_test.yaml b/tests/deployment_test.yaml index 256a399..dca75ab 100644 --- a/tests/deployment_test.yaml +++ b/tests/deployment_test.yaml @@ -207,19 +207,15 @@ tests: pullPolicy: IfNotPresent podSecurityContext: {} securityContext: {} - mcp: - server: - transport: sse - host: "0.0.0.0" - port: 8000 - path: "/mcp" - platform: - host: "iap.example.com" - port: 3000 - disableTls: false - timeout: 30 - includeTags: "" - excludeTags: "" + env: + ITENTIAL_MCP_SERVER_TRANSPORT: "sse" + ITENTIAL_MCP_SERVER_HOST: "0.0.0.0" + ITENTIAL_MCP_SERVER_PORT: "8000" + ITENTIAL_MCP_SERVER_PATH: "/mcp" + ITENTIAL_MCP_PLATFORM_HOST: "iap.example.com" + ITENTIAL_MCP_PLATFORM_PORT: "3000" + ITENTIAL_MCP_PLATFORM_DISABLE_TLS: "false" + ITENTIAL_MCP_PLATFORM_TIMEOUT: "30" asserts: - contains: path: spec.template.spec.containers[0].env diff --git a/values.yaml b/values.yaml index aad47cf..82c01d1 100644 --- a/values.yaml +++ b/values.yaml @@ -77,7 +77,7 @@ livenessProbe: timeoutSeconds: 5 failureThreshold: 3 successThreshold: 1 - path: "/mcp" + path: "/status/livez" # The readiness probe used to determine if the container is ready to accept requests. If the # readiness probe fails, the endpoints controller removes the pod's IP address from the @@ -90,7 +90,7 @@ readinessProbe: timeoutSeconds: 5 failureThreshold: 3 successThreshold: 1 - path: "/mcp" + path: "/status/readyz" # The startup probe used to allow some time for the application to start up. The application # will have a maximum of 3 minutes (18 * 10 = 180s) to finish its startup. Once the startup @@ -102,7 +102,7 @@ startupProbe: timeoutSeconds: 5 failureThreshold: 18 successThreshold: 1 - path: "/mcp" + path: "/status/livez" # env Non-sensitive environment variables passed to the MCP container. Keys must be valid # ITENTIAL_MCP_* environment variable names. See the full list at: @@ -141,8 +141,8 @@ credentials: # The existing Secret must contain the relevant ITENTIAL_MCP_PLATFORM_* keys. secretName: "" # The following values are only used when secretName is empty. - platformUser: "" - platformPassword: "" + platformUser: "admin" + platformPassword: "admin" platformClientId: "" platformClientSecret: ""