helm-mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,16 @@
1
+ export interface HelmInfo {
2
+ bin: string;
3
+ version: string;
4
+ major: number;
5
+ }
6
+ export declare function getHelmInfo(): HelmInfo;
7
+ export interface RunOptions {
8
+ cwd?: string;
9
+ stdin?: string;
10
+ }
11
+ export declare function runHelm(args: (string | undefined)[], opts?: RunOptions): string;
12
+ /** Build --set key=val flags from a record or "k=v,k2=v2" string */
13
+ export declare function buildSetFlags(set?: Record<string, string> | string): string[];
14
+ /** Build --values file flags from string or array */
15
+ export declare function buildValuesFlags(values?: string | string[]): string[];
16
+ //# sourceMappingURL=helm-runner.d.ts.map
@@ -0,0 +1,68 @@
1
+ import { execSync } from "child_process";
2
+ let helmInfoCache = null;
3
+ export function getHelmInfo() {
4
+ if (helmInfoCache)
5
+ return helmInfoCache;
6
+ const override = process.env.HELM_BIN;
7
+ const candidates = override ? [override] : ["helm4", "helm", "helm3"];
8
+ for (const bin of candidates) {
9
+ try {
10
+ const out = execSync(`"${bin}" version --short 2>/dev/null`, {
11
+ encoding: "utf8",
12
+ timeout: 5000,
13
+ }).trim();
14
+ // Match "v3.x.y" or "v4.x.y"
15
+ const match = out.match(/v?(\d+)\.\d+/);
16
+ if (match) {
17
+ const major = parseInt(match[1], 10);
18
+ helmInfoCache = { bin, version: out.replace(/^v/, ""), major };
19
+ return helmInfoCache;
20
+ }
21
+ }
22
+ catch {
23
+ // try next candidate
24
+ }
25
+ }
26
+ throw new Error("No helm binary found. Install helm or set HELM_BIN=/path/to/helm.");
27
+ }
28
+ export function runHelm(args, opts = {}) {
29
+ const { bin } = getHelmInfo();
30
+ const filtered = args.filter((a) => a !== undefined && a !== "");
31
+ const cmd = [bin, ...filtered].join(" ");
32
+ try {
33
+ return execSync(cmd, {
34
+ encoding: "utf8",
35
+ cwd: opts.cwd,
36
+ maxBuffer: 10 * 1024 * 1024,
37
+ timeout: 120_000,
38
+ }).trim();
39
+ }
40
+ catch (err) {
41
+ const e = err;
42
+ const stderr = e.stderr?.toString().trim() ?? "";
43
+ const stdout = e.stdout?.toString().trim() ?? "";
44
+ const detail = stderr || stdout || e.message || String(err);
45
+ throw new Error(`helm error: ${detail}`);
46
+ }
47
+ }
48
+ /** Build --set key=val flags from a record or "k=v,k2=v2" string */
49
+ export function buildSetFlags(set) {
50
+ if (!set)
51
+ return [];
52
+ if (typeof set === "string") {
53
+ return set
54
+ .split(",")
55
+ .map((s) => s.trim())
56
+ .filter(Boolean)
57
+ .flatMap((kv) => ["--set", kv]);
58
+ }
59
+ return Object.entries(set).flatMap(([k, v]) => ["--set", `${k}=${v}`]);
60
+ }
61
+ /** Build --values file flags from string or array */
62
+ export function buildValuesFlags(values) {
63
+ if (!values)
64
+ return [];
65
+ const arr = Array.isArray(values) ? values : [values];
66
+ return arr.flatMap((v) => ["--values", v]);
67
+ }
68
+ //# sourceMappingURL=helm-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helm-runner.js","sourceRoot":"","sources":["../src/helm-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
package/build/index.js ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import { startServer } from "./server.js";
3
+ startServer().catch((err) => {
4
+ process.stderr.write(`[helm-mcp-server] Unhandled error: ${err}\n`);
5
+ process.exit(1);
6
+ });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAC;IACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function startServer(): Promise<void>;
2
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1,30 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
+ import { registerLifecycleTools } from "./tools/lifecycle.js";
4
+ import { registerRepoTools } from "./tools/repo.js";
5
+ import { registerInspectTools } from "./tools/inspect.js";
6
+ import { registerRegistryTools } from "./tools/registry.js";
7
+ import { getHelmInfo } from "./helm-runner.js";
8
+ export async function startServer() {
9
+ // Probe helm early so startup fails fast with a clear message
10
+ let helmInfo;
11
+ try {
12
+ helmInfo = getHelmInfo();
13
+ }
14
+ catch (err) {
15
+ process.stderr.write(`[helm-mcp-server] FATAL: ${err}\n`);
16
+ process.exit(1);
17
+ }
18
+ const server = new McpServer({
19
+ name: "helm-mcp-server",
20
+ version: "1.0.0",
21
+ });
22
+ registerLifecycleTools(server);
23
+ registerRepoTools(server);
24
+ registerInspectTools(server);
25
+ registerRegistryTools(server);
26
+ const transport = new StdioServerTransport();
27
+ process.stderr.write(`[helm-mcp-server] Starting with ${helmInfo.bin} (v${helmInfo.version})\n`);
28
+ await server.connect(transport);
29
+ }
30
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,8DAA8D;IAC9D,IAAI,QAAwC,CAAC;IAC7C,IAAI,CAAC;QACH,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,QAAQ,CAAC,GAAG,MAAM,QAAQ,CAAC,OAAO,KAAK,CAC3E,CAAC;IAEF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerInspectTools(server: McpServer): void;
3
+ //# sourceMappingURL=inspect.d.ts.map
@@ -0,0 +1,160 @@
1
+ import { z } from "zod";
2
+ import { runHelm, buildSetFlags, buildValuesFlags } from "../helm-runner.js";
3
+ export function registerInspectTools(server) {
4
+ // ── helm_show_chart ──────────────────────────────────────────────────────────
5
+ server.tool("helm_show_chart", "Show chart metadata (Chart.yaml)", {
6
+ chart: z.string().describe("Chart reference (repo/chart, path, or OCI ref)"),
7
+ version: z.string().optional().describe("Chart version"),
8
+ }, async ({ chart, version }) => {
9
+ const args = [
10
+ "show", "chart", chart,
11
+ version ? `--version=${version}` : undefined,
12
+ ];
13
+ const out = runHelm(args);
14
+ return { content: [{ type: "text", text: out }] };
15
+ });
16
+ // ── helm_show_values ─────────────────────────────────────────────────────────
17
+ server.tool("helm_show_values", "Show the default values for a chart", {
18
+ chart: z.string().describe("Chart reference"),
19
+ version: z.string().optional().describe("Chart version"),
20
+ }, async ({ chart, version }) => {
21
+ const args = [
22
+ "show", "values", chart,
23
+ version ? `--version=${version}` : undefined,
24
+ ];
25
+ const out = runHelm(args);
26
+ return { content: [{ type: "text", text: out }] };
27
+ });
28
+ // ── helm_show_readme ─────────────────────────────────────────────────────────
29
+ server.tool("helm_show_readme", "Show the README for a chart", {
30
+ chart: z.string().describe("Chart reference"),
31
+ version: z.string().optional().describe("Chart version"),
32
+ }, async ({ chart, version }) => {
33
+ const args = [
34
+ "show", "readme", chart,
35
+ version ? `--version=${version}` : undefined,
36
+ ];
37
+ const out = runHelm(args);
38
+ return { content: [{ type: "text", text: out }] };
39
+ });
40
+ // ── helm_show_all ────────────────────────────────────────────────────────────
41
+ server.tool("helm_show_all", "Show all information for a chart (chart + values + readme + crds)", {
42
+ chart: z.string().describe("Chart reference"),
43
+ version: z.string().optional().describe("Chart version"),
44
+ }, async ({ chart, version }) => {
45
+ const args = [
46
+ "show", "all", chart,
47
+ version ? `--version=${version}` : undefined,
48
+ ];
49
+ const out = runHelm(args);
50
+ return { content: [{ type: "text", text: out }] };
51
+ });
52
+ // ── helm_template ────────────────────────────────────────────────────────────
53
+ server.tool("helm_template", "Render chart templates locally without installing", {
54
+ release: z.string().describe("Release name (used for template rendering)"),
55
+ chart: z.string().describe("Chart reference or path"),
56
+ namespace: z.string().optional().describe("Namespace to render into"),
57
+ values: z.array(z.string()).optional().describe("Values file paths"),
58
+ set: z.string().optional().describe("Set values on CLI, comma-separated k=v pairs"),
59
+ version: z.string().optional().describe("Chart version"),
60
+ show_only: z.array(z.string()).optional().describe("Only show specified templates"),
61
+ include_crds: z.boolean().optional().describe("Include CRDs in output"),
62
+ }, async ({ release, chart, namespace, values, set, version, show_only, include_crds }) => {
63
+ const showOnlyFlags = (show_only ?? []).flatMap((t) => ["--show-only", t]);
64
+ const args = [
65
+ "template", release, chart,
66
+ namespace ? `--namespace=${namespace}` : undefined,
67
+ version ? `--version=${version}` : undefined,
68
+ include_crds ? "--include-crds" : undefined,
69
+ ...showOnlyFlags,
70
+ ...buildValuesFlags(values),
71
+ ...buildSetFlags(set),
72
+ ];
73
+ const out = runHelm(args);
74
+ return { content: [{ type: "text", text: out }] };
75
+ });
76
+ // ── helm_lint ────────────────────────────────────────────────────────────────
77
+ server.tool("helm_lint", "Examine a chart for possible issues", {
78
+ path: z.string().describe("Path to chart directory"),
79
+ values: z.array(z.string()).optional().describe("Values file paths"),
80
+ set: z.string().optional().describe("Set values on CLI"),
81
+ strict: z.boolean().optional().describe("Fail on warnings"),
82
+ }, async ({ path, values, set, strict }) => {
83
+ const args = [
84
+ "lint", path,
85
+ strict ? "--strict" : undefined,
86
+ ...buildValuesFlags(values),
87
+ ...buildSetFlags(set),
88
+ ];
89
+ const out = runHelm(args);
90
+ return { content: [{ type: "text", text: out }] };
91
+ });
92
+ // ── helm_get_manifest ────────────────────────────────────────────────────────
93
+ server.tool("helm_get_manifest", "Get the Kubernetes manifests for a deployed release", {
94
+ release: z.string().describe("Release name"),
95
+ namespace: z.string().optional().describe("Kubernetes namespace"),
96
+ revision: z.number().optional().describe("Get manifests for a specific revision"),
97
+ }, async ({ release, namespace, revision }) => {
98
+ const args = [
99
+ "get", "manifest", release,
100
+ namespace ? `--namespace=${namespace}` : undefined,
101
+ revision !== undefined ? `--revision=${revision}` : undefined,
102
+ ];
103
+ const out = runHelm(args);
104
+ return { content: [{ type: "text", text: out }] };
105
+ });
106
+ // ── helm_get_values ──────────────────────────────────────────────────────────
107
+ server.tool("helm_get_values", "Get user-supplied values for a deployed release", {
108
+ release: z.string().describe("Release name"),
109
+ namespace: z.string().optional().describe("Kubernetes namespace"),
110
+ all: z.boolean().optional().describe("Include chart default values"),
111
+ revision: z.number().optional().describe("Get values for a specific revision"),
112
+ }, async ({ release, namespace, all, revision }) => {
113
+ const args = [
114
+ "get", "values", release,
115
+ "--output", "json",
116
+ namespace ? `--namespace=${namespace}` : undefined,
117
+ all ? "--all" : undefined,
118
+ revision !== undefined ? `--revision=${revision}` : undefined,
119
+ ];
120
+ const out = runHelm(args);
121
+ return { content: [{ type: "text", text: out }] };
122
+ });
123
+ // ── helm_get_hooks ───────────────────────────────────────────────────────────
124
+ server.tool("helm_get_hooks", "Get all hooks for a deployed release", {
125
+ release: z.string().describe("Release name"),
126
+ namespace: z.string().optional().describe("Kubernetes namespace"),
127
+ }, async ({ release, namespace }) => {
128
+ const args = [
129
+ "get", "hooks", release,
130
+ namespace ? `--namespace=${namespace}` : undefined,
131
+ ];
132
+ const out = runHelm(args);
133
+ return { content: [{ type: "text", text: out }] };
134
+ });
135
+ // ── helm_get_notes ───────────────────────────────────────────────────────────
136
+ server.tool("helm_get_notes", "Get the release notes for a deployed release", {
137
+ release: z.string().describe("Release name"),
138
+ namespace: z.string().optional().describe("Kubernetes namespace"),
139
+ }, async ({ release, namespace }) => {
140
+ const args = [
141
+ "get", "notes", release,
142
+ namespace ? `--namespace=${namespace}` : undefined,
143
+ ];
144
+ const out = runHelm(args);
145
+ return { content: [{ type: "text", text: out }] };
146
+ });
147
+ // ── helm_get_all ─────────────────────────────────────────────────────────────
148
+ server.tool("helm_get_all", "Get all information for a deployed release (manifest + hooks + notes + values)", {
149
+ release: z.string().describe("Release name"),
150
+ namespace: z.string().optional().describe("Kubernetes namespace"),
151
+ }, async ({ release, namespace }) => {
152
+ const args = [
153
+ "get", "all", release,
154
+ namespace ? `--namespace=${namespace}` : undefined,
155
+ ];
156
+ const out = runHelm(args);
157
+ return { content: [{ type: "text", text: out }] };
158
+ });
159
+ }
160
+ //# sourceMappingURL=inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/tools/inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerLifecycleTools(server: McpServer): void;
3
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1,159 @@
1
+ import { z } from "zod";
2
+ import { runHelm, buildSetFlags, buildValuesFlags } from "../helm-runner.js";
3
+ export function registerLifecycleTools(server) {
4
+ // ── helm_version ────────────────────────────────────────────────────────────
5
+ server.tool("helm_version", "Get the detected Helm version and binary path", {}, async () => {
6
+ const out = runHelm(["version"]);
7
+ return { content: [{ type: "text", text: out }] };
8
+ });
9
+ // ── helm_list ────────────────────────────────────────────────────────────────
10
+ server.tool("helm_list", "List Helm releases. Returns JSON array of releases.", {
11
+ namespace: z.string().optional().describe("Kubernetes namespace (omit for default)"),
12
+ all_namespaces: z.boolean().optional().describe("List across all namespaces"),
13
+ filter: z.string().optional().describe("Filter releases by name regex"),
14
+ all: z.boolean().optional().describe("Show all releases including superseded"),
15
+ }, async ({ namespace, all_namespaces, filter, all }) => {
16
+ const args = [
17
+ "list",
18
+ "--output", "json",
19
+ all_namespaces ? "--all-namespaces" : namespace ? `--namespace=${namespace}` : undefined,
20
+ all ? "--all" : undefined,
21
+ filter ? `--filter=${filter}` : undefined,
22
+ ];
23
+ const out = runHelm(args);
24
+ return { content: [{ type: "text", text: out }] };
25
+ });
26
+ // ── helm_status ──────────────────────────────────────────────────────────────
27
+ server.tool("helm_status", "Get the status of a named Helm release", {
28
+ release: z.string().describe("Release name"),
29
+ namespace: z.string().optional().describe("Kubernetes namespace"),
30
+ }, async ({ release, namespace }) => {
31
+ const args = [
32
+ "status", release,
33
+ "--output", "json",
34
+ namespace ? `--namespace=${namespace}` : undefined,
35
+ ];
36
+ const out = runHelm(args);
37
+ return { content: [{ type: "text", text: out }] };
38
+ });
39
+ // ── helm_history ─────────────────────────────────────────────────────────────
40
+ server.tool("helm_history", "Fetch release history for a named Helm release", {
41
+ release: z.string().describe("Release name"),
42
+ namespace: z.string().optional().describe("Kubernetes namespace"),
43
+ max: z.number().optional().describe("Max revisions to return (default 256)"),
44
+ }, async ({ release, namespace, max }) => {
45
+ const args = [
46
+ "history", release,
47
+ "--output", "json",
48
+ namespace ? `--namespace=${namespace}` : undefined,
49
+ max ? `--max=${max}` : undefined,
50
+ ];
51
+ const out = runHelm(args);
52
+ return { content: [{ type: "text", text: out }] };
53
+ });
54
+ // ── helm_install ─────────────────────────────────────────────────────────────
55
+ server.tool("helm_install", "Install a Helm chart as a new release", {
56
+ release: z.string().describe("Release name"),
57
+ chart: z.string().describe("Chart reference (e.g. repo/chart or path)"),
58
+ namespace: z.string().optional().describe("Target namespace"),
59
+ create_namespace: z.boolean().optional().describe("Create namespace if it doesn't exist"),
60
+ values: z.array(z.string()).optional().describe("Values file paths (--values)"),
61
+ set: z.string().optional().describe("Set values on CLI, comma-separated k=v pairs"),
62
+ version: z.string().optional().describe("Chart version"),
63
+ wait: z.boolean().optional().describe("Wait for resources to be ready"),
64
+ timeout: z.string().optional().describe("Timeout for wait (e.g. 5m0s)"),
65
+ dry_run: z.boolean().optional().describe("Simulate the install"),
66
+ }, async ({ release, chart, namespace, create_namespace, values, set, version, wait, timeout, dry_run }) => {
67
+ const args = [
68
+ "install", release, chart,
69
+ "--output", "json",
70
+ namespace ? `--namespace=${namespace}` : undefined,
71
+ create_namespace ? "--create-namespace" : undefined,
72
+ version ? `--version=${version}` : undefined,
73
+ wait ? "--wait" : undefined,
74
+ timeout ? `--timeout=${timeout}` : undefined,
75
+ dry_run ? "--dry-run" : undefined,
76
+ ...buildValuesFlags(values),
77
+ ...buildSetFlags(set),
78
+ ];
79
+ const out = runHelm(args);
80
+ return { content: [{ type: "text", text: out }] };
81
+ });
82
+ // ── helm_upgrade ─────────────────────────────────────────────────────────────
83
+ server.tool("helm_upgrade", "Upgrade (or install) a Helm release", {
84
+ release: z.string().describe("Release name"),
85
+ chart: z.string().describe("Chart reference"),
86
+ namespace: z.string().optional().describe("Target namespace"),
87
+ install: z.boolean().optional().describe("Install if release doesn't exist (--install)"),
88
+ create_namespace: z.boolean().optional().describe("Create namespace if it doesn't exist"),
89
+ values: z.array(z.string()).optional().describe("Values file paths"),
90
+ set: z.string().optional().describe("Set values on CLI, comma-separated k=v pairs"),
91
+ version: z.string().optional().describe("Chart version"),
92
+ wait: z.boolean().optional().describe("Wait for resources to be ready"),
93
+ timeout: z.string().optional().describe("Timeout (e.g. 5m0s)"),
94
+ atomic: z.boolean().optional().describe("Roll back on failure"),
95
+ cleanup_on_fail: z.boolean().optional().describe("Clean up on failure"),
96
+ dry_run: z.boolean().optional().describe("Simulate the upgrade"),
97
+ reset_values: z.boolean().optional().describe("Reset to chart defaults before merging"),
98
+ reuse_values: z.boolean().optional().describe("Reuse previous release values"),
99
+ }, async ({ release, chart, namespace, install, create_namespace, values, set, version, wait, timeout, atomic, cleanup_on_fail, dry_run, reset_values, reuse_values }) => {
100
+ const args = [
101
+ "upgrade", release, chart,
102
+ "--output", "json",
103
+ namespace ? `--namespace=${namespace}` : undefined,
104
+ install ? "--install" : undefined,
105
+ create_namespace ? "--create-namespace" : undefined,
106
+ version ? `--version=${version}` : undefined,
107
+ wait ? "--wait" : undefined,
108
+ timeout ? `--timeout=${timeout}` : undefined,
109
+ atomic ? "--atomic" : undefined,
110
+ cleanup_on_fail ? "--cleanup-on-fail" : undefined,
111
+ dry_run ? "--dry-run" : undefined,
112
+ reset_values ? "--reset-values" : undefined,
113
+ reuse_values ? "--reuse-values" : undefined,
114
+ ...buildValuesFlags(values),
115
+ ...buildSetFlags(set),
116
+ ];
117
+ const out = runHelm(args);
118
+ return { content: [{ type: "text", text: out }] };
119
+ });
120
+ // ── helm_rollback ────────────────────────────────────────────────────────────
121
+ server.tool("helm_rollback", "Roll back a release to a previous revision", {
122
+ release: z.string().describe("Release name"),
123
+ revision: z.number().optional().describe("Revision number (0 = previous)"),
124
+ namespace: z.string().optional().describe("Kubernetes namespace"),
125
+ wait: z.boolean().optional().describe("Wait for resources to be ready"),
126
+ timeout: z.string().optional().describe("Timeout (e.g. 5m0s)"),
127
+ dry_run: z.boolean().optional().describe("Simulate the rollback"),
128
+ }, async ({ release, revision, namespace, wait, timeout, dry_run }) => {
129
+ const args = [
130
+ "rollback", release,
131
+ revision !== undefined ? String(revision) : undefined,
132
+ namespace ? `--namespace=${namespace}` : undefined,
133
+ wait ? "--wait" : undefined,
134
+ timeout ? `--timeout=${timeout}` : undefined,
135
+ dry_run ? "--dry-run" : undefined,
136
+ ];
137
+ const out = runHelm(args);
138
+ return { content: [{ type: "text", text: out }] };
139
+ });
140
+ // ── helm_uninstall ───────────────────────────────────────────────────────────
141
+ server.tool("helm_uninstall", "Uninstall a Helm release", {
142
+ release: z.string().describe("Release name"),
143
+ namespace: z.string().optional().describe("Kubernetes namespace"),
144
+ wait: z.boolean().optional().describe("Wait for deletion to complete"),
145
+ dry_run: z.boolean().optional().describe("Simulate the uninstall"),
146
+ keep_history: z.boolean().optional().describe("Keep release history"),
147
+ }, async ({ release, namespace, wait, dry_run, keep_history }) => {
148
+ const args = [
149
+ "uninstall", release,
150
+ namespace ? `--namespace=${namespace}` : undefined,
151
+ wait ? "--wait" : undefined,
152
+ dry_run ? "--dry-run" : undefined,
153
+ keep_history ? "--keep-history" : undefined,
154
+ ];
155
+ const out = runHelm(args);
156
+ return { content: [{ type: "text", text: out }] };
157
+ });
158
+ }
159
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tools/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerRegistryTools(server: McpServer): void;
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1,114 @@
1
+ import { z } from "zod";
2
+ import { runHelm, getHelmInfo } from "../helm-runner.js";
3
+ export function registerRegistryTools(server) {
4
+ // ── helm_registry_login ──────────────────────────────────────────────────────
5
+ server.tool("helm_registry_login", "Login to an OCI registry", {
6
+ host: z.string().describe("Registry host (e.g. registry-1.docker.io)"),
7
+ username: z.string().describe("Registry username"),
8
+ password: z.string().describe("Registry password or token"),
9
+ insecure: z.boolean().optional().describe("Allow insecure (HTTP) connections"),
10
+ }, async ({ host, username, password, insecure }) => {
11
+ const args = [
12
+ "registry", "login", host,
13
+ `--username=${username}`,
14
+ `--password=${password}`,
15
+ insecure ? "--insecure" : undefined,
16
+ ];
17
+ const out = runHelm(args);
18
+ return { content: [{ type: "text", text: out || "Login succeeded." }] };
19
+ });
20
+ // ── helm_registry_logout ─────────────────────────────────────────────────────
21
+ server.tool("helm_registry_logout", "Logout from an OCI registry", {
22
+ host: z.string().describe("Registry host"),
23
+ }, async ({ host }) => {
24
+ const out = runHelm(["registry", "logout", host]);
25
+ return { content: [{ type: "text", text: out || "Logout succeeded." }] };
26
+ });
27
+ // ── helm_push ────────────────────────────────────────────────────────────────
28
+ server.tool("helm_push", "Push a chart package (.tgz) to an OCI registry", {
29
+ chart: z.string().describe("Path to chart archive (.tgz)"),
30
+ remote: z.string().describe("OCI registry URI (oci://host/path)"),
31
+ plain_http: z.boolean().optional().describe("Use plain HTTP instead of HTTPS"),
32
+ }, async ({ chart, remote, plain_http }) => {
33
+ const args = [
34
+ "push", chart, remote,
35
+ plain_http ? "--plain-http" : undefined,
36
+ ];
37
+ const out = runHelm(args);
38
+ return { content: [{ type: "text", text: out }] };
39
+ });
40
+ // ── helm_pull ────────────────────────────────────────────────────────────────
41
+ server.tool("helm_pull", "Pull a chart from a repository or OCI registry", {
42
+ chart: z.string().describe("Chart reference (repo/chart or oci://…)"),
43
+ version: z.string().optional().describe("Chart version"),
44
+ destination: z.string().optional().describe("Directory to download to"),
45
+ untar: z.boolean().optional().describe("Untar after download"),
46
+ verify: z.boolean().optional().describe("Verify provenance"),
47
+ }, async ({ chart, version, destination, untar, verify }) => {
48
+ const args = [
49
+ "pull", chart,
50
+ version ? `--version=${version}` : undefined,
51
+ destination ? `--destination=${destination}` : undefined,
52
+ untar ? "--untar" : undefined,
53
+ verify ? "--verify" : undefined,
54
+ ];
55
+ const out = runHelm(args);
56
+ return { content: [{ type: "text", text: out || "Chart pulled successfully." }] };
57
+ });
58
+ // ── helm_package ─────────────────────────────────────────────────────────────
59
+ server.tool("helm_package", "Package a chart directory into a versioned chart archive (.tgz)", {
60
+ path: z.string().describe("Path to chart directory"),
61
+ destination: z.string().optional().describe("Output directory (default: current dir)"),
62
+ version: z.string().optional().describe("Override chart version"),
63
+ app_version: z.string().optional().describe("Override app version"),
64
+ sign: z.boolean().optional().describe("Sign the chart with a GPG key"),
65
+ key: z.string().optional().describe("GPG key name (used with --sign)"),
66
+ keyring: z.string().optional().describe("GPG keyring path"),
67
+ }, async ({ path, destination, version, app_version, sign, key, keyring }) => {
68
+ const args = [
69
+ "package", path,
70
+ destination ? `--destination=${destination}` : undefined,
71
+ version ? `--version=${version}` : undefined,
72
+ app_version ? `--app-version=${app_version}` : undefined,
73
+ sign ? "--sign" : undefined,
74
+ key ? `--key=${key}` : undefined,
75
+ keyring ? `--keyring=${keyring}` : undefined,
76
+ ];
77
+ const out = runHelm(args);
78
+ return { content: [{ type: "text", text: out }] };
79
+ });
80
+ // ── helm_dependency_build ────────────────────────────────────────────────────
81
+ server.tool("helm_dependency_build", "Build chart dependencies from Chart.lock", {
82
+ path: z.string().describe("Path to chart directory"),
83
+ verify: z.boolean().optional().describe("Verify provenance"),
84
+ }, async ({ path, verify }) => {
85
+ const args = [
86
+ "dependency", "build", path,
87
+ verify ? "--verify" : undefined,
88
+ ];
89
+ const out = runHelm(args);
90
+ return { content: [{ type: "text", text: out }] };
91
+ });
92
+ // ── helm_dependency_update ───────────────────────────────────────────────────
93
+ server.tool("helm_dependency_update", "Update chart dependencies to match Chart.yaml", {
94
+ path: z.string().describe("Path to chart directory"),
95
+ }, async ({ path }) => {
96
+ const out = runHelm(["dependency", "update", path]);
97
+ return { content: [{ type: "text", text: out }] };
98
+ });
99
+ // ── helm_dependency_list ─────────────────────────────────────────────────────
100
+ server.tool("helm_dependency_list", "List chart dependencies", {
101
+ path: z.string().describe("Path to chart directory"),
102
+ }, async ({ path }) => {
103
+ const args = ["dependency", "list", path, "--output", "json"];
104
+ // Helm v3 doesn't support --output json for dep list — fall back gracefully
105
+ const { major } = getHelmInfo();
106
+ if (major < 4) {
107
+ const out = runHelm(["dependency", "list", path]);
108
+ return { content: [{ type: "text", text: out }] };
109
+ }
110
+ const out = runHelm(args);
111
+ return { content: [{ type: "text", text: out }] };
112
+ });
113
+ }
114
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerRepoTools(server: McpServer): void;
3
+ //# sourceMappingURL=repo.d.ts.map
@@ -0,0 +1,75 @@
1
+ import { z } from "zod";
2
+ import { runHelm } from "../helm-runner.js";
3
+ export function registerRepoTools(server) {
4
+ // ── helm_repo_add ────────────────────────────────────────────────────────────
5
+ server.tool("helm_repo_add", "Add a Helm chart repository", {
6
+ name: z.string().describe("Repository alias"),
7
+ url: z.string().describe("Repository URL"),
8
+ username: z.string().optional().describe("Username for auth"),
9
+ password: z.string().optional().describe("Password for auth"),
10
+ force_update: z.boolean().optional().describe("Force update if repo already exists"),
11
+ pass_credentials: z.boolean().optional().describe("Pass credentials to all domains"),
12
+ }, async ({ name, url, username, password, force_update, pass_credentials }) => {
13
+ const args = [
14
+ "repo", "add", name, url,
15
+ username ? `--username=${username}` : undefined,
16
+ password ? `--password=${password}` : undefined,
17
+ force_update ? "--force-update" : undefined,
18
+ pass_credentials ? "--pass-credentials" : undefined,
19
+ ];
20
+ const out = runHelm(args);
21
+ return { content: [{ type: "text", text: out || `Repository '${name}' added.` }] };
22
+ });
23
+ // ── helm_repo_update ─────────────────────────────────────────────────────────
24
+ server.tool("helm_repo_update", "Update one or all Helm chart repositories", {
25
+ names: z.array(z.string()).optional().describe("Specific repo names to update (omit for all)"),
26
+ }, async ({ names }) => {
27
+ const args = ["repo", "update", ...(names ?? [])];
28
+ const out = runHelm(args);
29
+ return { content: [{ type: "text", text: out }] };
30
+ });
31
+ // ── helm_repo_remove ─────────────────────────────────────────────────────────
32
+ server.tool("helm_repo_remove", "Remove a Helm chart repository", {
33
+ names: z.array(z.string()).describe("Repository name(s) to remove"),
34
+ }, async ({ names }) => {
35
+ const args = ["repo", "remove", ...names];
36
+ const out = runHelm(args);
37
+ return { content: [{ type: "text", text: out || `Repository removed.` }] };
38
+ });
39
+ // ── helm_repo_list ───────────────────────────────────────────────────────────
40
+ server.tool("helm_repo_list", "List configured Helm chart repositories", {}, async () => {
41
+ const out = runHelm(["repo", "list", "--output", "json"]);
42
+ return { content: [{ type: "text", text: out }] };
43
+ });
44
+ // ── helm_search_repo ─────────────────────────────────────────────────────────
45
+ server.tool("helm_search_repo", "Search for charts in configured Helm repositories", {
46
+ keyword: z.string().describe("Search keyword"),
47
+ version: z.string().optional().describe("Search for a specific chart version"),
48
+ regexp: z.boolean().optional().describe("Treat keyword as a regular expression"),
49
+ devel: z.boolean().optional().describe("Include development versions"),
50
+ }, async ({ keyword, version, regexp, devel }) => {
51
+ const args = [
52
+ "search", "repo", keyword,
53
+ "--output", "json",
54
+ version ? `--version=${version}` : undefined,
55
+ regexp ? "--regexp" : undefined,
56
+ devel ? "--devel" : undefined,
57
+ ];
58
+ const out = runHelm(args);
59
+ return { content: [{ type: "text", text: out }] };
60
+ });
61
+ // ── helm_search_hub ──────────────────────────────────────────────────────────
62
+ server.tool("helm_search_hub", "Search for charts on Artifact Hub", {
63
+ keyword: z.string().describe("Search keyword"),
64
+ list_repo_url: z.boolean().optional().describe("Include repo URLs in results"),
65
+ }, async ({ keyword, list_repo_url }) => {
66
+ const args = [
67
+ "search", "hub", keyword,
68
+ "--output", "json",
69
+ list_repo_url ? "--list-repo-url" : undefined,
70
+ ];
71
+ const out = runHelm(args);
72
+ return { content: [{ type: "text", text: out }] };
73
+ });
74
+ }
75
+ //# sourceMappingURL=repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/tools/repo.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "helm-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "MCP server for Helm v3 and v4 — wraps the Helm CLI with auto-version detection",
5
+ "type": "module",
6
+ "main": "build/index.js",
7
+ "bin": {
8
+ "helm-mcp-server": "build/index.js"
9
+ },
10
+ "files": [
11
+ "build/**/*.js",
12
+ "build/**/*.d.ts",
13
+ "build/**/*.js.map"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "prepublishOnly": "npm run build && chmod +x build/index.js",
18
+ "start": "node build/index.js",
19
+ "dev": "tsc --watch"
20
+ },
21
+ "keywords": [
22
+ "mcp",
23
+ "helm",
24
+ "kubernetes",
25
+ "k8s",
26
+ "model-context-protocol",
27
+ "helm-v3",
28
+ "helm-v4",
29
+ "devops"
30
+ ],
31
+ "license": "MIT",
32
+ "dependencies": {
33
+ "@modelcontextprotocol/sdk": "^1.0.0"
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^22.0.0",
37
+ "typescript": "^5.6.0"
38
+ },
39
+ "engines": {
40
+ "node": ">=18"
41
+ }
42
+ }