by jeff-nasseri
helm-chart-cli-mcp serves as a bridge between AI assistants and the Helm package manager for Kubernetes. It enables AI assistants to manage Helm charts and releases through natural language requests, simplifying Kubernetes deployments and operations.
Helm MCP (Model Context Protocol) provides a bridge between AI assistants and the Helm package manager for Kubernetes. It allows AI assistants to interact with Helm through natural language requests, executing commands like installing charts, managing repositories, and more.
Installation:
Prerequisites: Python 3.8+, Docker (for containerized deployment), Helm CLI installed.
Using Docker:
git clone https://github.com/modelcontextprotocol/servers.git
cd src/helm
docker build -t mcp-helm .
Manual Installation:
git clone https://github.com/modelcontextprotocol/servers.git
cd src/helm
uv venv
source .venv/Scripts/Activate.ps1
uv pip install -e .
mcp-server-helm
Configuration with Claude Desktop:
Add the following to your claude_desktop_config.json:
Using uvx:
"mcpServers": {
"helm": {
"command": "uvx",
"args": ["mcp-server-helm"]
}
}
Using Docker:
"mcpServers": {
"helm": {
"command": "docker",
"args": ["run", "--rm", "-i", "mcp/helm"]
}
}
Helm MCP offers a comprehensive set of tools for managing Helm charts and releases through an AI-assistant interface. Key features include:
What is the purpose of Helm MCP? Helm MCP acts as a bridge, allowing AI assistants to interact with the Helm package manager for Kubernetes using natural language requests.
What are the prerequisites for running Helm MCP? You need Python 3.8+, Docker (for containerized deployment), and the Helm CLI installed.
Can I use Helm MCP with Claude Desktop?
Yes, you can configure Helm MCP to work with Claude Desktop by adding specific configurations to your claude_desktop_config.json file, either using uvx or Docker.
What kind of Helm operations can I perform with Helm MCP? You can perform a wide range of operations including chart creation, dependency management, release management (install, uninstall, upgrade, rollback), repository management, registry interactions, and more.
Is there a way to verify signed charts using Helm MCP?
Yes, Helm MCP provides a helm_verify tool to verify that a chart has been signed and is valid.
What license is Helm MCP released under? Helm MCP is licensed under the MIT License, allowing for free use, modification, and distribution.
Helm MCP provides a bridge between AI assistants and the Helm package manager for Kubernetes. It allows AI assistants to interact with Helm through natural language requests, executing commands like installing charts, managing repositories, and more.
https://github.com/user-attachments/assets/706184c4-9569-4977-8194-d8b0a6e8fa26
https://github.com/user-attachments/assets/4347e851-2791-4a07-b829-f171376fe8d7
Build and run the Docker container:
# Clone the repository
git clone https://github.com/modelcontextprotocol/servers.git
cd src/helm
# Build the Docker image
docker build -t mcp-helm .
# Clone the repository
git clone https://github.com/modelcontextprotocol/servers.git
cd src/helm
# Install dependencies
uv venv
source .venv/Scripts/Activate.ps1
uv pip install -e .
# Run the server
mcp-server-helm
Here are the available tools in the Helm MCP server:
helm_completionGenerate autocompletion scripts for various shells.
shell (required): The shell to generate the completion script for. Options are "bash", "fish", "powershell", "zsh".helm_completion(shell="bash")
helm_createCreate a new chart with the given name.
name (required): The name of the chart to create.starter (optional): The name of the starter chart to use.helm_create(name="mychart")
helm_lintRuns a series of tests to verify that the chart is well-formed.
chart_path (required): Path to the chart to lint.values_file (optional): Path to values file.set_values (optional): Set values on the command line (can specify multiple).helm_lint(chart_path="./mychart")
helm_packagePackages a chart into a chart archive.
chart_path (required): Path to the chart directory.destination (optional): Location to write the chart.app_version (optional): Set the appVersion on the chart.version (optional): Set the version on the chart.dependency_update (optional): Update dependencies before packaging.helm_package(chart_path="./mychart")
helm_templateRenders chart templates locally and displays the output.
chart (required): Chart name.release_name (optional): Release name.namespace (optional): Namespace.values_file (optional): Values file.set_values (optional): Set values.api_versions (optional): Kubernetes API versions.kube_version (optional): Kubernetes version.helm_template(chart="./mychart", release_name="my-release")
helm_dependency_buildBuilds the chart's dependencies.
chart_path (required): Path to the chart.helm_dependency_build(chart_path="./mychart")
helm_dependency_listLists the dependencies for the given chart.
chart_path (required): Path to the chart.helm_dependency_list(chart_path="./mychart")
helm_dependency_updateUpdates the chart's dependencies.
chart_path (required): Path to the chart.helm_dependency_update(chart_path="./mychart")
helm_envShows Helm's environment information.
helm_env()
helm_versionShows the Helm version information.
helm_version()
helm_installInstalls a chart.
chart (required): Chart name.release_name (optional): Release name.namespace (optional): Namespace.values_file (optional): Values file.set_values (optional): Set values.description (optional): Add a custom description.wait (optional): Wait until all resources are ready.atomic (optional): If set, installation rollback on failure.timeout (optional): Time to wait for any operation to complete.helm_install(chart="bitnami/nginx", release_name="my-nginx")
helm_uninstallUninstalls a release.
release_name (required): Release name.namespace (optional): Namespace.keep_history (optional): Remove the release but keep the history.no_hooks (optional): Prevent hooks from running during uninstallation.helm_uninstall(release_name="my-nginx")
helm_upgradeUpgrades a release.
release_name (required): Release name.chart (required): Chart name.namespace (optional): Namespace.values_file (optional): Values file.set_values (optional): Set values.install (optional): Install if release doesn't exist.force (optional): Force resource updates.wait (optional): Wait until all resources are ready.atomic (optional): If set, upgrade rollback on failure.timeout (optional): Time to wait for any operation to complete.helm_upgrade(release_name="my-nginx", chart="bitnami/nginx", set_values={"replicaCount": "3"})
helm_rollbackRolls back a release to a previous revision.
release_name (required): Release name.revision (optional): Revision number.namespace (optional): Namespace.wait (optional): Wait until all resources are ready.force (optional): Force resource updates.timeout (optional): Time to wait for any operation to complete.helm_rollback(release_name="my-nginx", revision=1)
helm_listLists releases.
all_namespaces (optional): List releases across all namespaces.filter_ (optional): Filter by regex.namespace (optional): Namespace.deployed (optional): Show deployed releases.failed (optional): Show failed releases.uninstalled (optional): Show uninstalled releases.helm_list()
helm_statusDisplays the status of the named release.
release_name (required): Release name.namespace (optional): Namespace.revision (optional): Revision number.helm_status(release_name="my-nginx")
helm_historyGets the release history.
release_name (required): Release name.namespace (optional): Namespace.max_ (optional): Maximum number of revisions to include.helm_history(release_name="my-nginx")
helm_testRuns tests for a release.
release_name (required): Release name.namespace (optional): Namespace.filter_ (optional): Filter tests by name.timeout (optional): Time to wait for any operation to complete.helm_test(release_name="my-nginx")
helm_get_allGets all information about a release.
release_name (required): Release name.namespace (optional): Namespace.helm_get_all(release_name="my-nginx")
helm_get_hooksGets the hooks for a release.
release_name (required): Release name.namespace (optional): Namespace.helm_get_hooks(release_name="my-nginx")
helm_get_manifestGets the manifest for a release.
release_name (required): Release name.namespace (optional): Namespace.helm_get_manifest(release_name="my-nginx")
helm_get_metadataGets the metadata for a release.
release_name (required): Release name.namespace (optional): Namespace.helm_get_metadata(release_name="my-nginx")
helm_get_notesGets the notes for a release.
release_name (required): Release name.namespace (optional): Namespace.helm_get_notes(release_name="my-nginx")
helm_get_valuesGets the values for a release.
release_name (required): Release name.namespace (optional): Namespace.all_values (optional): Get all values (user-supplied values and defaults).helm_get_values(release_name="my-nginx", all_values=true)
helm_repo_addAdds a chart repository.
name (required): Name of the repository.url (required): URL of the repository.username (optional): Username for repository.password (optional): Password for repository.pass_credentials (optional): Pass credentials to all domains.helm_repo_add(name="bitnami", url="https://charts.bitnami.com/bitnami")
helm_repo_indexGenerates an index file for a chart repository.
directory (required): Directory containing packaged charts.url (optional): URL of the repository.merge (optional): Merge the generated index with the given index.helm_repo_index(directory="./charts")
helm_repo_listLists chart repositories.
helm_repo_list()
helm_repo_removeRemoves a chart repository.
name (required): Name of the repository.helm_repo_remove(name="bitnami")
helm_repo_updateUpdates chart repositories.
helm_repo_update()
helm_search_repoSearches repositories for a keyword in charts.
keyword (required): Search term.regexp (optional): Use regular expressions for searching.version (optional): Search using semantic version constraints.versions (optional): Show all versions, not just the latest.helm_search_repo(keyword="nginx")
helm_search_hubSearches the Helm Hub for a keyword in charts.
keyword (required): Search term.max_results (optional): Maximum number of results to return.repo_url (optional): Specific repo URL to search.helm_search_hub(keyword="nginx")
helm_registry_loginLogs in to a registry.
registry_url (required): Registry URL to authenticate with.username (required): Username for registry.password (required): Password for registry.insecure (optional): Allow connections to TLS registry without certs.helm_registry_login(registry_url="registry.example.com", username="user", password="pass123")
helm_registry_logoutLogs out from a registry.
registry_url (required): Registry URL to logout from.helm_registry_logout(registry_url="registry.example.com")
helm_pushPushes a chart to a registry.
chart_path (required): Path to the chart to push.registry_url (required): Registry URL to push to.insecure (optional): Allow connections to TLS registry without certs.plain_http (optional): Use plain HTTP.force (optional): Force push even if the chart already exists.helm_push(chart_path="./mychart-1.0.0.tgz", registry_url="oci://registry.example.com/charts")
helm_pullDownloads a chart from a repository.
chart (required): Chart name.repo (optional): Repository name.version (optional): Chart version.destination (optional): Directory to download to.untar (optional): If set, untar the chart after downloading.verify (optional): Verify the package against its signature.keyring (optional): Path to the keyring containing public keys.helm_pull(chart="nginx", repo="bitnami", version="13.2.0")
helm_show_allShows all information of a chart.
chart (required): Chart name.repo (optional): Repository name.version (optional): Chart version.helm_show_all(chart="nginx", repo="bitnami")
helm_show_chartShows the chart's definition.
chart (required): Chart name.repo (optional): Repository name.version (optional): Chart version.helm_show_chart(chart="nginx", repo="bitnami")
helm_show_crdsShows the chart's CRDs.
chart (required): Chart name.repo (optional): Repository name.version (optional): Chart version.helm_show_crds(chart="prometheus-operator", repo="prometheus-community")
helm_show_readmeShows the chart's README.
chart (required): Chart name.repo (optional): Repository name.version (optional): Chart version.helm_show_readme(chart="nginx", repo="bitnami")
helm_show_valuesShows the chart's values.
chart (required): Chart name.repo (optional): Repository name.version (optional): Chart version.helm_show_values(chart="nginx", repo="bitnami")
helm_plugin_installInstalls a Helm plugin.
plugin_url (required): URL to the plugin.version (optional): Version of the plugin.helm_plugin_install(plugin_url="https://github.com/chartmuseum/helm-push")
helm_plugin_listLists Helm plugins.
helm_plugin_list()
helm_plugin_uninstallUninstalls a Helm plugin.
plugin_name (required): Name of the plugin.helm_plugin_uninstall(plugin_name="push")
helm_plugin_updateUpdates a Helm plugin.
plugin_name (required): Name of the plugin.helm_plugin_update(plugin_name="push")
helm_verifyVerifies that a chart at the given path has been signed and is valid.
path (required): Path to the chart file.keyring (optional): Path to the keyring containing public keys.helm_verify(path="./mychart-1.0.0.tgz")
Add this to your claude_desktop_config.json:
"mcpServers": {
"helm": {
"command": "uvx",
"args": ["mcp-server-helm"]
}
}
"mcpServers": {
"helm": {
"command": "docker",
"args": ["run", "--rm", "-i", "mcp/helm"]
}
}
# run the inspector against the mcp-server-helm
npx @modelcontextprotocol/inspector uvx mcp-server-helm
# Run the inspector against the mcp-config.json
npm install -g @modelcontextprotocol/inspector
cp mcp-config.json.example mcp-config.json
nano mcp-config.json # Edit the values
mcp-inspector --config mcp-config.json --server my-python-server
Docker build:
cd src/helm
docker build -t mcp/helm .
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
Please log in to share your review and rating for this MCP.
Discover more MCP servers with similar functionality and use cases
by zed-industries
Provides real-time collaborative editing powered by Rust, enabling developers to edit code instantly across machines with a responsive, GPU-accelerated UI.
by cline
Provides autonomous coding assistance directly in the IDE, enabling file creation, editing, terminal command execution, browser interactions, and tool extension with user approval at each step.
by continuedev
Provides continuous AI assistance across IDEs, terminals, and CI pipelines, offering agents, chat, inline editing, and autocomplete to accelerate software development.
by github
Enables AI agents, assistants, and chatbots to interact with GitHub via natural‑language commands, providing read‑write access to repositories, issues, pull requests, workflows, security data and team activity.
by block
Automates engineering tasks by installing, executing, editing, and testing code using any large language model, providing end‑to‑end project building, debugging, workflow orchestration, and external API interaction.
by RooCodeInc
An autonomous coding agent that lives inside VS Code, capable of generating, refactoring, debugging code, managing files, running terminal commands, controlling a browser, and adapting its behavior through custom modes and instructions.
by lastmile-ai
A lightweight, composable framework for building AI agents using Model Context Protocol and simple workflow patterns.
by firebase
Provides a command‑line interface to manage, test, and deploy Firebase projects, covering hosting, databases, authentication, cloud functions, extensions, and CI/CD workflows.
by gptme
Empowers large language models to act as personal AI assistants directly inside the terminal, providing capabilities such as code execution, file manipulation, web browsing, vision, and interactive tool usage.