Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/helm-ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 20 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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. |
Expand Down Expand Up @@ -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. |
Expand All @@ -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. |
Expand All @@ -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. |
Expand Down
22 changes: 9 additions & 13 deletions tests/deployment_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 5 additions & 5 deletions values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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:
Expand Down Expand Up @@ -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: ""

Expand Down
Loading