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.
- package/build/helm-runner.d.ts +16 -0
- package/build/helm-runner.js +68 -0
- package/build/helm-runner.js.map +1 -0
- package/build/index.d.ts +3 -0
- package/build/index.js +7 -0
- package/build/index.js.map +1 -0
- package/build/server.d.ts +2 -0
- package/build/server.js +30 -0
- package/build/server.js.map +1 -0
- package/build/tools/inspect.d.ts +3 -0
- package/build/tools/inspect.js +160 -0
- package/build/tools/inspect.js.map +1 -0
- package/build/tools/lifecycle.d.ts +3 -0
- package/build/tools/lifecycle.js +159 -0
- package/build/tools/lifecycle.js.map +1 -0
- package/build/tools/registry.d.ts +3 -0
- package/build/tools/registry.js +114 -0
- package/build/tools/registry.js.map +1 -0
- package/build/tools/repo.d.ts +3 -0
- package/build/tools/repo.js +75 -0
- package/build/tools/repo.js.map +1 -0
- package/package.json +42 -0
|
@@ -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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"}
|
package/build/index.d.ts
ADDED
package/build/index.js
ADDED
|
@@ -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"}
|
package/build/server.js
ADDED
|
@@ -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,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,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,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,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
|
+
}
|