Helm自然语言接口

Helm MCP为Kubernetes的Helm包管理器提供AI助手自然语言交互能力,支持图表安装、仓库管理等操作。

  • by jeff-nasseri
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 jeff-nasseri/helm-chart-cli-mcp

使用说明

概述

Helm MCP为Kubernetes的AI助手和Helm包管理器之间提供了一座桥梁。它允许AI助手通过自然语言请求与Helm交互,执行安装图表、管理存储库等命令。

克劳德桌面

https://github.com/user-attachments/assets/706184c4-9569-4977-8194-d8b0a6e8fa26

检查员

https://github.com/user-attachments/assets/4347e851-2791-4a07-b829-f171376fe8d7

安装

先决条件

  • Python 3.8+
  • Docker(用于容器化部署)
  • 已安装Helm CLI

使用Docker

构建并运行Docker容器:

# 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

工具

以下是Helm MCP服务器中可用的工具:

helm_completion

为各种shell生成自动补全脚本。

  • 参数:
    • shell (必填):用于生成完成脚本的shell。选项有“bash”、“fish”、“powershell”、“zsh”。
  • 例子:
    helm_completion(shell="bash")
    

图表创建和管理

helm_create

使用给定名称创建新图表。

  • 参数:
    • name (必填):要创建的图表的名称。
    • starter (可选):要使用的启动器图表的名称。
  • 例子:
    helm_create(name="mychart")
    

helm_lint

运行一系列测试以验证图表是否格式正确。

  • 参数:
    • chart_path (必填):指向图表的路径。
    • values_file (可选):值文件的路径。
    • set_values (可选):在命令行上设置值(可以指定多个)。
  • 例子:
    helm_lint(chart_path="./mychart")
    

helm_package

将图表打包到图表存档中。

  • 参数:
    • chart_path (必填):图表目录的路径。
    • destination (可选):绘制图表的位置。
    • app_version (可选):在图表上设置appVersion。
    • version (可选):在图表上设置版本。
    • dependency_update (可选):在打包之前更新依赖关系。
  • 例子:
    helm_package(chart_path="./mychart")
    

helm_template

在本地渲染图表模板并显示输出。

  • 参数:
    • chart (必填):图表名称。
    • release_name (可选):发布名称。
    • namespace (可选):命名空间。
    • values_file (可选):值文件。
    • set_values (可选):设置值。
    • api_versions (可选):Kubernetes API版本。
    • kube_version (可选):Kubernetes版本。
  • 例子:
    helm_template(chart="./mychart", release_name="my-release")
    

依赖管理

helm_dependency_build

构建图表的依赖关系。

  • 参数:
    • chart_path (必填):图表路径。
  • 例子:
    helm_dependency_build(chart_path="./mychart")
    

helm_dependency_list

列出给定图表的依赖关系。

  • 参数:
    • chart_path (必填):图表路径。
  • 例子:
    helm_dependency_list(chart_path="./mychart")
    

helm_dependency_update

更新图表的依赖关系。

  • 参数:
    • chart_path (必填):图表路径。
  • 例子:
    helm_dependency_update(chart_path="./mychart")
    

环境

helm_env

显示Helm的环境信息。

  • 参数:无
  • 例子:
    helm_env()
    

helm_version

显示Helm版本信息。

  • 参数:无
  • 例子:
    helm_version()
    

发布管理

helm_install

安装图表。

  • 参数:
    • chart (必填):图表名称。
    • release_name (可选):发布名称。
    • namespace (可选):命名空间。
    • values_file (可选):值文件。
    • set_values (可选):设置值。
    • description (可选):添加自定义描述。
    • wait (可选):等待所有资源准备就绪。
    • atomic (可选):如果设置,安装失败时回滚。
    • timeout (可选):等待任何操作完成的时间。
  • 例子:
    helm_install(chart="bitnami/nginx", release_name="my-nginx")
    

helm_uninstall

卸载发布。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
    • keep_history (可选):删除版本,但保留历史记录。
    • no_hooks (可选):防止钩子在卸载过程中运行。
  • 例子:
    helm_uninstall(release_name="my-nginx")
    

helm_upgrade

升级版本。

  • 参数:
    • release_name (必填):发布名称。
    • chart (必填):图表名称。
    • namespace (可选):命名空间。
    • values_file (可选):值文件。
    • set_values (可选):设置值。
    • install (可选):如果版本不存在,则安装。
    • force (可选):强制资源更新。
    • wait (可选):等待所有资源准备就绪。
    • atomic (可选):如果已设置,则升级失败后的回滚。
    • timeout (可选):等待任何操作完成的时间。
  • 例子:
    helm_upgrade(release_name="my-nginx", chart="bitnami/nginx", set_values={"replicaCount": "3"})
    

helm_rollback

将版本回滚到以前的版本。

  • 参数:
    • release_name (必填):发布名称。
    • revision (可选):修订号。
    • namespace (可选):命名空间。
    • wait (可选):等待所有资源准备就绪。
    • force (可选):强制资源更新。
    • timeout (可选):等待任何操作完成的时间。
  • 例子:
    helm_rollback(release_name="my-nginx", revision=1)
    

helm_list

列出发布。

  • 参数:
    • all_namespaces (可选):列出所有命名空间中的版本。
    • filter_ (可选):按正则表达式过滤。
    • namespace (可选):命名空间。
    • deployed (可选):显示已部署的版本。
    • failed (可选):显示失败的版本。
    • uninstalled (可选):显示已卸载的版本。
  • 例子:
    helm_list()
    

helm_status

显示命名版本的状态。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
    • revision (可选):修订号。
  • 例子:
    helm_status(release_name="my-nginx")
    

helm_history

获取发布历史记录。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
    • max_ (可选):要包含的最大修订数。
  • 例子:
    helm_history(release_name="my-nginx")
    

helm_test

运行发布测试。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
    • filter_ (可选):按名称筛选测试。
    • timeout (可选):等待任何操作完成的时间。
  • 例子:
    helm_test(release_name="my-nginx")
    

发布信息

helm_get_all

获取有关发布的所有信息。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
  • 例子:
    helm_get_all(release_name="my-nginx")
    

helm_get_hooks

获取释放的钩子。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
  • 例子:
    helm_get_hooks(release_name="my-nginx")
    

helm_get_manifest

获取发布的清单。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
  • 例子:
    helm_get_manifest(release_name="my-nginx")
    

helm_get_metadata

获取发布的元数据。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
  • 例子:
    helm_get_metadata(release_name="my-nginx")
    

helm_get_notes

获取发布的注释。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
  • 例子:
    helm_get_notes(release_name="my-nginx")
    

helm_get_values

获取版本的值。

  • 参数:
    • release_name (必填):发布名称。
    • namespace (可选):命名空间。
    • all_values (可选):获取所有值(用户提供的值和默认值)。
  • 例子:
    helm_get_values(release_name="my-nginx", all_values=true)
    

库管理

helm_repo_add

添加图表存储库。

  • 参数:
    • name (必填):存储库的名称。
    • url (必填):存储库的URL。
    • username (可选):存储库的用户名。
    • password (可选):存储库密码。
    • pass_credentials (可选):将凭据传递给所有域。
  • 例子:
    helm_repo_add(name="bitnami", url="https://charts.bitnami.com/bitnami")
    

helm_repo_index

为图表存储库生成索引文件。

  • 参数:
    • directory (必填):包含打包图表的目录。
    • url (可选):存储库的URL。
    • merge (可选):将生成的索引与给定的索引合并。
  • 例子:
    helm_repo_index(directory="./charts")
    

helm_repo_list

列出图表存储库。

  • 参数:无
  • 例子:
    helm_repo_list()
    

helm_repo_remove

删除图表存储库。

  • 参数:
    • name (必填):存储库的名称。
  • 例子:
    helm_repo_remove(name="bitnami")
    

helm_repo_update

更新图表存储库。

  • 参数:无
  • 例子:
    helm_repo_update()
    

helm_search_repo

在图表中搜索存储库中的关键字。

  • 参数:
    • keyword (必填):搜索词。
    • regexp (可选):使用正则表达式进行搜索。
    • version (可选):使用语义版本约束进行搜索。
    • versions (可选):显示所有版本,而不仅仅是最新版本。
  • 例子:
    helm_search_repo(keyword="nginx")
    

helm_search_hub

在Helm Hub中搜索图表中的关键字。

  • 参数:
    • keyword (必填):搜索词。
    • max_results (可选):返回的最大结果数。
    • repo_url (可选):要搜索的特定仓库URL。
  • 例子:
    helm_search_hub(keyword="nginx")
    

注册表管理

helm_registry_login

登录到注册表。

  • 参数:
    • registry_url (必需):要进行身份验证的注册表URL。
    • username (必填):注册表的用户名。
    • password (必填):注册表密码。
    • insecure (可选):允许连接到没有证书的TLS注册表。
  • 例子:
    helm_registry_login(registry_url="registry.example.com", username="user", password="pass123")
    

helm_registry_logout

从注册表中注销。

  • 参数:
    • registry_url (必填):用于注销的注册表URL。
  • 例子:
    helm_registry_logout(registry_url="registry.example.com")
    

helm_push

将图表推送到注册表。

  • 参数:
    • chart_path (必填):要推送的图表路径。
    • registry_url (必填):要推送到的注册表URL。
    • insecure (可选):允许连接到没有证书的TLS注册表。
    • plain_http (可选):使用纯HTTP。
    • force (可选):即使图表已经存在,也要强制推送。
  • 例子:
    helm_push(chart_path="./mychart-1.0.0.tgz", registry_url="oci://registry.example.com/charts")
    

helm_pull

从存储库下载图表。

  • 参数:
    • chart (必填):图表名称。
    • repo (可选):存储库名称。
    • version (可选):图表版本。
    • destination (可选):下载目录。
    • untar (可选):如果已设置,请在下载后解压缩图表。
    • verify (可选):根据包的签名验证包。
    • keyring (可选):包含公钥的密钥环的路径。
  • 例子:
    helm_pull(chart="nginx", repo="bitnami", version="13.2.0")
    

图表信息

helm_show_all

显示图表的所有信息。

  • 参数:
    • chart (必填):图表名称。
    • repo (可选):存储库名称。
    • version (可选):图表版本。
  • 例子:
    helm_show_all(chart="nginx", repo="bitnami")
    

helm_show_chart

显示图表的定义。

  • 参数:
    • chart (必填):图表名称。
    • repo (可选):存储库名称。
    • version (可选):图表版本。
  • 例子:
    helm_show_chart(chart="nginx", repo="bitnami")
    

helm_show_crds

显示图表的CRD。

  • 参数:
    • chart (必填):图表名称。
    • repo (可选):存储库名称。
    • version (可选):图表版本。
  • 例子:
    helm_show_crds(chart="prometheus-operator", repo="prometheus-community")
    

helm_show_readme

显示图表的README。

  • 参数:
    • chart (必填):图表名称。
    • repo (可选):存储库名称。
    • version (可选):图表版本。
  • 例子:
    helm_show_readme(chart="nginx", repo="bitnami")
    

helm_show_values

显示图表的值。

  • 参数:
    • chart (必填):图表名称。
    • repo (可选):存储库名称。
    • version (可选):图表版本。
  • 例子:
    helm_show_values(chart="nginx", repo="bitnami")
    

插件管理

helm_plugin_install

安装Helm插件。

  • 参数:
    • plugin_url (必填):插件的URL。
    • version (可选):插件的版本。
  • 例子:
    helm_plugin_install(plugin_url="https://github.com/chartmuseum/helm-push")
    

helm_plugin_list

列出Helm插件。

  • 参数:无
  • 例子:
    helm_plugin_list()
    

helm_plugin_uninstall

卸载Helm插件。

  • 参数:
    • plugin_name (必填):插件的名称。
  • 例子:
    helm_plugin_uninstall(plugin_name="push")
    

helm_plugin_update

更新Helm插件。

  • 参数:
    • plugin_name (必填):插件的名称。
  • 例子:
    helm_plugin_update(plugin_name="push")
    

验证

helm_verify

验证给定路径上的图表是否已签名且有效。

  • 参数:
    • path (必填):图表文件的路径。
    • keyring (可选):包含公钥的密钥环的路径。
  • 例子:
    helm_verify(path="./mychart-1.0.0.tgz")
    

配置

使用Claude Desktop

将此添加到您的 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"]
  }
}

检查员

# 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构建:

cd src/helm
docker build -t mcp/helm .

许可证

此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。