@prodisco/k8s-mcp 0.1.2 → 0.1.4

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.
Files changed (37) hide show
  1. package/README.md +127 -38
  2. package/dist/kube/client.d.ts +6 -0
  3. package/dist/kube/client.d.ts.map +1 -1
  4. package/dist/kube/client.js +11 -0
  5. package/dist/kube/client.js.map +1 -1
  6. package/dist/kube/client.test.d.ts +2 -0
  7. package/dist/kube/client.test.d.ts.map +1 -0
  8. package/dist/kube/client.test.js +59 -0
  9. package/dist/kube/client.test.js.map +1 -0
  10. package/dist/server.js +129 -50
  11. package/dist/server.js.map +1 -1
  12. package/dist/tools/api/apiTools.d.ts +6 -0
  13. package/dist/tools/api/apiTools.d.ts.map +1 -0
  14. package/dist/tools/api/apiTools.js +132 -0
  15. package/dist/tools/api/apiTools.js.map +1 -0
  16. package/dist/tools/kubernetes/metadata.d.ts +169 -27
  17. package/dist/tools/kubernetes/metadata.d.ts.map +1 -1
  18. package/dist/tools/kubernetes/metadata.js +2 -7
  19. package/dist/tools/kubernetes/metadata.js.map +1 -1
  20. package/dist/tools/kubernetes/searchTools.d.ts +307 -5
  21. package/dist/tools/kubernetes/searchTools.d.ts.map +1 -1
  22. package/dist/tools/kubernetes/searchTools.js +2058 -273
  23. package/dist/tools/kubernetes/searchTools.js.map +1 -1
  24. package/dist/util/apiClient.d.ts +20 -0
  25. package/dist/util/apiClient.d.ts.map +1 -0
  26. package/dist/util/apiClient.js +90 -0
  27. package/dist/util/apiClient.js.map +1 -0
  28. package/dist/util/k8sClient.d.ts +38 -0
  29. package/dist/util/k8sClient.d.ts.map +1 -0
  30. package/dist/util/k8sClient.js +85 -0
  31. package/dist/util/k8sClient.js.map +1 -0
  32. package/dist/util/logger.d.ts +26 -0
  33. package/dist/util/logger.d.ts.map +1 -0
  34. package/dist/util/logger.js +62 -0
  35. package/dist/util/logger.js.map +1 -0
  36. package/dist/util/summary.d.ts +16 -16
  37. package/package.json +4 -1
package/README.md CHANGED
@@ -1,17 +1,30 @@
1
- # ProDisco (Progressive Disclosure Kuberentes MCP Server)
1
+ # ProDisco (Progressive Disclosure Kubernetes MCP Server)
2
2
 
3
- ProDisco gives MCP agents Kubernetes access that exactly follows Anthropics [Progressive Disclosure](https://www.anthropic.com/engineering/code-execution-with-mcp) pattern: the server exposes TypeScript modules, agents discover them through the filesystem, write code, and only the final console output returns to the chat.
3
+ ProDisco gives AI agents **Kubernetes access + Prometheus metrics analysis** through a single unified search tool. It follows Anthropic's [Progressive Disclosure](https://www.anthropic.com/engineering/code-execution-with-mcp) pattern: the MCP server exposes search tools which surface TypeScript modules, agents discover them to write code, and only the final console output returns to the agent.
4
+
5
+ **One tool, two domains:**
6
+ - **Kubernetes Operations** - Discover API methods from `@kubernetes/client-node` to manage pods, deployments, services, and more
7
+ - **Prometheus Metrics** - Discover methods from `prometheus-query` for PromQL queries and metrics analysis
4
8
 
5
9
  ## Why Progressive Disclosure Matters
6
10
 
7
- Anthropics latest guidance explains why MCP servers should progressively reveal capabilities instead of dumping every tool definition into the model context. When agents explore a filesystem of TypeScript modules, as they do with ProDisco, they only load what they need and process data inside the execution environment, then return a concise result to the chat. This keeps token usage low, improves latency, and avoids copying large intermediate payloads through the model ([source](https://www.anthropic.com/engineering/code-execution-with-mcp)).
11
+ Anthropic's latest guidance explains why MCP servers should progressively reveal capabilities instead of dumping every tool definition into the model context. When agents explore a filesystem of TypeScript modules, they only load what they need and process data inside the execution environment, then return a concise result to the chat. This keeps token usage low, improves latency, and avoids copying large intermediate payloads through the model ([source](https://www.anthropic.com/engineering/code-execution-with-mcp)).
8
12
 
9
- In practice that means:
10
- - Agents only see a single advertised tool (`kubernetes.searchTools`); they call it with structured parameters (resourceType, action, scope) to discover the TypeScript modules (get pods, list nodes, fetch logs, etc.) that the server exposes, then write their own code to compose those modules without loading unused schemas.
11
- - Letting the model issue one instruction instead of micromanaging dozens of sequential tool calls.
12
- - Agents can mix and match multiple Kubernetes modules joining pod stats with node health, or correlating events with logs without shuttling raw outputs between tools in the chat loop, which dramatically cuts token usage.
13
+ ProDisco goes a step further: instead of exposing custom TypeScript modules, it provides a structured parameter search tool that dynamically extracts methods from upstream libraries using TypeScript AST parsing. This means:
14
+ - **Zero maintenance** - Methods are extracted directly from library `.d.ts` files
15
+ - **Always current** - Upgrading a dependency automatically exposes new methods
16
+ - **Type-safe** - Full parameter types and return types included
13
17
 
14
- ProDisco ships with this layout out of the box, so any Claude Code or MCP-enabled agent can immediately adopt the progressive-disclosure workflow.
18
+
19
+ ---
20
+
21
+ ## Demo
22
+
23
+ ### Kubernetes Operations
24
+ ![Kubernetes Operations Demo](docs/demo.gif)
25
+
26
+ ### Prometheus Queries
27
+ ![Prometheus Queries Demo](docs/demo2.gif)
15
28
 
16
29
  ---
17
30
 
@@ -24,14 +37,32 @@ Add ProDisco to Claude Code with a single command:
24
37
  ```bash
25
38
  claude mcp add ProDisco --env KUBECONFIG="${HOME}/.kube/config" -- npx -y @prodisco/k8s-mcp
26
39
  ```
40
+
41
+ **With Prometheus (optional):**
42
+ ```bash
43
+ claude mcp add ProDisco \
44
+ --env KUBECONFIG="${HOME}/.kube/config" \
45
+ --env PROMETHEUS_URL="http://localhost:9090" \
46
+ -- npx -y @prodisco/k8s-mcp
47
+ ```
48
+
27
49
  Remove if needed:
28
50
  ```bash
29
51
  claude mcp remove ProDisco
30
52
  ```
31
53
 
32
- **Optional environment variables:**
33
- - `KUBECONFIG`: Path to your kubeconfig file (defaults to `~/.kube/config`)
34
- - `K8S_CONTEXT`: Kubernetes context to use (defaults to current context)
54
+ **Environment variables:**
55
+ | Variable | Required | Description |
56
+ |----------|----------|-------------|
57
+ | `KUBECONFIG` | No | Path to kubeconfig (defaults to `~/.kube/config`) |
58
+ | `K8S_CONTEXT` | No | Kubernetes context (defaults to current context) |
59
+ | `PROMETHEUS_URL` | No | Prometheus server URL for metrics queries |
60
+
61
+ > **Tip:** If you're using a kind cluster for local testing, you can port-forward to Prometheus:
62
+ > ```bash
63
+ > kubectl port-forward -n monitoring svc/prometheus-server 9090:80
64
+ > ```
65
+ > Then set `PROMETHEUS_URL="http://localhost:9090"`
35
66
 
36
67
  ### Development Setup
37
68
 
@@ -56,27 +87,51 @@ ProDisco automatically creates a `~/.prodisco/scripts/cache/` directory in your
56
87
 
57
88
  ## Available Tools
58
89
 
59
- ProDisco exposes two main tools for agents to discover and interact with the Kubernetes API:
90
+ ProDisco exposes a single unified tool with four modes:
91
+
92
+ | Mode | Purpose | Example |
93
+ |------|---------|---------|
94
+ | `methods` | Find Kubernetes API methods | `{ resourceType: "Pod", action: "list" }` |
95
+ | `types` | Get TypeScript type definitions | `{ mode: "types", types: ["V1Pod.spec"] }` |
96
+ | `scripts` | Search cached scripts | `{ mode: "scripts", searchTerm: "logs" }` |
97
+ | `prometheus` | Find Prometheus API methods | `{ mode: "prometheus", category: "query" }` |
98
+
99
+ For comprehensive documentation including architecture details and example workflows, see [docs/search-tools.md](docs/search-tools.md).
60
100
 
61
- ### 1. kubernetes.searchTools
101
+ ### kubernetes.searchTools
62
102
 
63
- Find Kubernetes API methods by resource type and action.
103
+ A unified search interface for Kubernetes operations and metrics analysis.
64
104
 
65
105
  **Input:**
66
106
  ```typescript
67
107
  {
68
- resourceType: string; // e.g., "Pod", "Deployment", "Service"
69
- action?: string; // e.g., "list", "read", "create", "delete", "patch", "replace", "connect"
70
- scope?: 'namespaced' | 'cluster' | 'all'; // default: 'all'
71
- exclude?: { // Optional: filter out methods
72
- actions?: string[]; // e.g., ["delete", "create"]
73
- apiClasses?: string[]; // e.g., ["CoreV1Api"]
74
- };
75
- limit?: number; // Max results (default: 10, max: 50)
108
+ // Mode selection
109
+ mode?: 'methods' | 'types' | 'scripts' | 'prometheus'; // default: 'methods'
110
+
111
+ // Methods mode - Kubernetes API discovery
112
+ resourceType?: string; // e.g., "Pod", "Deployment", "Service"
113
+ action?: string; // e.g., "list", "read", "create", "delete", "patch"
114
+ scope?: 'namespaced' | 'cluster' | 'all';
115
+ exclude?: { actions?: string[]; apiClasses?: string[] };
116
+
117
+ // Types mode - TypeScript definitions
118
+ types?: string[]; // e.g., ["V1Pod", "V1Deployment.spec"]
119
+ depth?: number; // Nested type depth (1-2)
120
+
121
+ // Scripts mode - Cached script discovery
122
+ searchTerm?: string; // Search term (omit to list all)
123
+
124
+ // Prometheus mode - Prometheus API discovery and metrics
125
+ category?: 'query' | 'metadata' | 'alerts' | 'metrics' | 'all';
126
+ methodPattern?: string; // e.g., "query", "labels", "pod", "gpu"
127
+
128
+ // Shared parameters
129
+ limit?: number; // Max results (default: 10)
130
+ offset?: number; // Pagination offset
76
131
  }
77
132
  ```
78
133
 
79
- **Example Queries:**
134
+ **Methods Mode Examples:**
80
135
  ```typescript
81
136
  // List all Pod-related methods
82
137
  { resourceType: "Pod" }
@@ -92,29 +147,63 @@ Find Kubernetes API methods by resource type and action.
92
147
 
93
148
  // Pod methods excluding CoreV1Api (shows only PolicyV1Api, AutoscalingV1Api, etc.)
94
149
  { resourceType: "Pod", exclude: { apiClasses: ["CoreV1Api"] } }
150
+ ```
151
+
152
+ **Types Mode Examples:**
153
+ ```typescript
154
+ // Get V1Pod type definition
155
+ { mode: "types", types: ["V1Pod"] }
156
+
157
+ // Get multiple types
158
+ { mode: "types", types: ["V1Pod", "V1Deployment", "V1Service"] }
95
159
 
96
- // Pod methods excluding delete from CoreV1Api only (AND logic)
97
- { resourceType: "Pod", exclude: { actions: ["delete"], apiClasses: ["CoreV1Api"] } }
160
+ // Navigate to nested types using dot notation
161
+ { mode: "types", types: ["V1Deployment.spec"] } // Returns V1DeploymentSpec
162
+ { mode: "types", types: ["V1Pod.spec.containers"] } // Returns V1Container (array element)
163
+ { mode: "types", types: ["V1Pod.status.conditions"] } // Returns V1PodCondition
164
+
165
+ // Include nested types at depth 2
166
+ { mode: "types", types: ["V1Pod"], depth: 2 }
98
167
  ```
99
168
 
100
- ### 2. kubernetes.getTypeDefinition
169
+ **Scripts Mode Examples:**
170
+ ```typescript
171
+ // List all cached scripts
172
+ { mode: "scripts" }
101
173
 
102
- Get detailed TypeScript type definitions for Kubernetes types.
174
+ // Search for pod-related scripts
175
+ { mode: "scripts", searchTerm: "pod" }
176
+ ```
103
177
 
104
- **Input:**
178
+ **Prometheus Mode Examples:**
105
179
  ```typescript
106
- {
107
- types: string[]; // Type names or property paths
108
- // Examples: ["V1Pod", "V1Deployment.spec", "V1Pod.spec.containers"]
109
- depth?: number; // Nested type depth (default: 1, max: 2)
110
- }
180
+ // List all available methods
181
+ { mode: "prometheus" }
182
+
183
+ // Find PromQL query methods
184
+ { mode: "prometheus", category: "query" }
185
+
186
+ // Find metadata methods (labels, series, targets)
187
+ { mode: "prometheus", category: "metadata" }
188
+
189
+ // Search for specific methods
190
+ { mode: "prometheus", methodPattern: "query" }
191
+
192
+ // Discover actual metrics from your cluster
193
+ { mode: "prometheus", category: "metrics", methodPattern: "pod" }
194
+
195
+ // Find GPU metrics
196
+ { mode: "prometheus", category: "metrics", methodPattern: "gpu" }
111
197
  ```
112
198
 
113
- **Dot Notation Support:**
114
- Navigate directly to nested types:
115
- - `V1Deployment.spec` Returns `V1DeploymentSpec` type
116
- - `V1Pod.spec.containers` → Returns `V1Container` type (array element)
117
- - `V1Pod.status.conditions` Returns `V1PodCondition` type
199
+ **Available Categories (Prometheus Mode):**
200
+
201
+ | Category | Methods | Use Case |
202
+ |----------|---------|----------|
203
+ | `query` | `instantQuery`, `rangeQuery` | Execute PromQL queries |
204
+ | `metadata` | `series`, `labelNames`, `labelValues`, `targets` | Explore metrics metadata |
205
+ | `alerts` | `rules`, `alerts`, `alertmanagers` | Access alerting information |
206
+ | `metrics` | (dynamic from cluster) | Discover actual metrics with descriptions |
118
207
 
119
208
  ---
120
209
 
@@ -9,6 +9,12 @@ interface KubernetesClientBundle {
9
9
  }
10
10
  export declare function getKubeClients(): KubernetesClientBundle;
11
11
  export declare function resetKubeClients(): void;
12
+ /**
13
+ * Probes the Kubernetes cluster to verify connectivity.
14
+ * Makes a lightweight API call to check if the cluster is reachable.
15
+ * @throws Error if the cluster is not accessible
16
+ */
17
+ export declare function probeClusterConnectivity(): Promise<void>;
12
18
  export declare function splitApiVersion(apiVersion: string): {
13
19
  group?: string;
14
20
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/kube/client.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKpF,UAAU,sBAAsB;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,gBAAgB,CAAC;IAChC,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAkCD,wBAAgB,cAAc,IAAI,sBAAsB,CAMvD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAWvF;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAejD;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAevF;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC3D,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;AAaD,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,CAiClB;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBxF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/kube/client.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAKpF,UAAU,sBAAsB;IAC9B,UAAU,EAAE,UAAU,CAAC;IACvB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,gBAAgB,CAAC;IAChC,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAkCD,wBAAgB,cAAc,IAAI,sBAAsB,CAMvD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAM9D;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAWvF;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAejD;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAevF;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,CAAC,EAAE,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC3D,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,wBAAsB,cAAc,CAClC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GACxC,OAAO,CAAC,gBAAgB,CAAC,CAgB3B;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlB;AAaD,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,kBAAkB,EAC9B,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,OAAO,CAAC,CAiClB;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBxF"}
@@ -42,6 +42,17 @@ export function getKubeClients() {
42
42
  export function resetKubeClients() {
43
43
  cachedClients = null;
44
44
  }
45
+ /**
46
+ * Probes the Kubernetes cluster to verify connectivity.
47
+ * Makes a lightweight API call to check if the cluster is reachable.
48
+ * @throws Error if the cluster is not accessible
49
+ */
50
+ export async function probeClusterConnectivity() {
51
+ const { core } = getKubeClients();
52
+ // Use a lightweight API call - getting API versions or listing namespaces with limit=1
53
+ // This verifies both network connectivity and authentication
54
+ await core.listNamespace({ limit: 1 });
55
+ }
45
56
  export function splitApiVersion(apiVersion) {
46
57
  if (!apiVersion.includes('/')) {
47
58
  return { version: apiVersion };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/kube/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/kube/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/kube/client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ // Store the mock function at module level so we can control it
3
+ const mockListNamespace = vi.fn();
4
+ // Mock the @kubernetes/client-node module before importing client
5
+ vi.mock('@kubernetes/client-node', () => {
6
+ class MockKubeConfig {
7
+ loadFromDefault = vi.fn();
8
+ loadFromCluster = vi.fn();
9
+ makeApiClient = vi.fn().mockReturnValue({
10
+ listNamespace: mockListNamespace,
11
+ });
12
+ }
13
+ class MockKubernetesObjectApi {
14
+ static makeApiClient = vi.fn().mockReturnValue({});
15
+ }
16
+ return {
17
+ KubeConfig: MockKubeConfig,
18
+ CoreV1Api: class {
19
+ },
20
+ AppsV1Api: class {
21
+ },
22
+ CustomObjectsApi: class {
23
+ },
24
+ KubernetesObjectApi: MockKubernetesObjectApi,
25
+ };
26
+ });
27
+ // Import after mocking
28
+ import { probeClusterConnectivity, resetKubeClients } from './client.js';
29
+ describe('probeClusterConnectivity', () => {
30
+ beforeEach(() => {
31
+ // Reset the cached clients before each test
32
+ resetKubeClients();
33
+ vi.clearAllMocks();
34
+ });
35
+ afterEach(() => {
36
+ resetKubeClients();
37
+ });
38
+ it('should succeed when cluster is reachable', async () => {
39
+ mockListNamespace.mockResolvedValueOnce({ items: [] });
40
+ await expect(probeClusterConnectivity()).resolves.toBeUndefined();
41
+ expect(mockListNamespace).toHaveBeenCalledWith({ limit: 1 });
42
+ });
43
+ it('should throw when cluster is not reachable', async () => {
44
+ const connectionError = new Error('connect ECONNREFUSED 127.0.0.1:6443');
45
+ mockListNamespace.mockRejectedValueOnce(connectionError);
46
+ await expect(probeClusterConnectivity()).rejects.toThrow('connect ECONNREFUSED 127.0.0.1:6443');
47
+ });
48
+ it('should throw when authentication fails', async () => {
49
+ const authError = new Error('Unauthorized');
50
+ mockListNamespace.mockRejectedValueOnce(authError);
51
+ await expect(probeClusterConnectivity()).rejects.toThrow('Unauthorized');
52
+ });
53
+ it('should throw when cluster returns forbidden', async () => {
54
+ const forbiddenError = new Error('Forbidden: User cannot list namespaces at the cluster scope');
55
+ mockListNamespace.mockRejectedValueOnce(forbiddenError);
56
+ await expect(probeClusterConnectivity()).rejects.toThrow('Forbidden');
57
+ });
58
+ });
59
+ //# sourceMappingURL=client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/kube/client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,+DAA+D;AAC/D,MAAM,iBAAiB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAElC,kEAAkE;AAClE,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACtC,MAAM,cAAc;QAClB,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,eAAe,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1B,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;YACtC,aAAa,EAAE,iBAAiB;SACjC,CAAC,CAAC;KACJ;IAED,MAAM,uBAAuB;QAC3B,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;;IAGrD,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,SAAS,EAAE;SAAQ;QACnB,SAAS,EAAE;SAAQ;QACnB,gBAAgB,EAAE;SAAQ;QAC1B,mBAAmB,EAAE,uBAAuB;KAC7C,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,uBAAuB;AACvB,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,UAAU,CAAC,GAAG,EAAE;QACd,4CAA4C;QAC5C,gBAAgB,EAAE,CAAC;QACnB,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,iBAAiB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAEvD,MAAM,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QAClE,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,eAAe,GAAG,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzE,iBAAiB,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC;QAEzD,MAAM,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAC5C,iBAAiB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,cAAc,GAAG,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAChG,iBAAiB,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC;QAExD,MAAM,MAAM,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/server.js CHANGED
@@ -5,12 +5,13 @@ import { fileURLToPath } from 'node:url';
5
5
  import * as fs from 'node:fs';
6
6
  import * as os from 'node:os';
7
7
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { logger } from './util/logger.js';
8
9
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
9
10
  const require = createRequire(import.meta.url);
10
11
  const pkg = require('../package.json');
11
- import { searchToolsTool } from './tools/kubernetes/searchTools.js';
12
- import { getTypeDefinitionTool } from './tools/kubernetes/typeDefinitions.js';
12
+ import { searchToolsTool, warmupSearchIndex, shutdownSearchIndex } from './tools/kubernetes/searchTools.js';
13
13
  import { PUBLIC_GENERATED_ROOT_PATH_WITH_SLASH, listGeneratedFiles, readGeneratedFile, } from './resources/filesystem.js';
14
+ import { probeClusterConnectivity } from './kube/client.js';
14
15
  const __filename = fileURLToPath(import.meta.url);
15
16
  const __dirname = path.dirname(__filename);
16
17
  const GENERATED_DIR = path.resolve(__dirname, 'tools/kubernetes');
@@ -19,12 +20,9 @@ const server = new McpServer({
19
20
  version: typeof pkg.version === 'string' ? pkg.version : '0.0.0',
20
21
  }, {
21
22
  instructions: 'Kubernetes operations via Progressive Disclosure. Use the kubernetes.searchTools tool to discover available operations. ' +
22
- 'The tool returns available Kubernetes API methods and includes a "paths" object with: ' +
23
- '(1) scriptsDirectory: where to write helper scripts (e.g., ~/.prodisco/scripts/cache/), ' +
24
- '(2) packageDirectory: where dependencies are installed (use for imports). ' +
25
- 'Write scripts to the scriptsDirectory path and import dependencies from packageDirectory/node_modules/@kubernetes/client-node. ' +
26
- 'Example: import * as k8s from \'/path/from/packageDirectory/node_modules/@kubernetes/client-node\'. ' +
27
- 'Always use absolute paths from the paths object to ensure scripts work from any directory.',
23
+ 'The tool returns available Kubernetes API methods and a "paths.scriptsDirectory" for writing scripts. ' +
24
+ 'Write scripts to scriptsDirectory and use bare imports: import * as k8s from \'@kubernetes/client-node\'. ' +
25
+ 'The scriptsDirectory has a node_modules symlink that handles package resolution automatically.',
28
26
  });
29
27
  // Expose generated TypeScript files as MCP resources using ResourceTemplate
30
28
  import { ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp.js';
@@ -66,62 +64,143 @@ server.registerResource('generated-typescript-files', resourceTemplate, {
66
64
  ],
67
65
  };
68
66
  });
69
- console.error(`📁 Exposed ${GENERATED_DIR} as MCP resources`);
67
+ logger.info(`Exposed ${GENERATED_DIR} as MCP resources`);
70
68
  // Register kubernetes.searchTools helper as an exposed tool.
69
+ // This tool now supports both modes: 'methods' (API discovery) and 'types' (type definitions)
71
70
  server.registerTool(searchToolsTool.name, {
72
- title: 'Kubernetes Tool Search',
71
+ title: 'Kubernetes Search Tools',
73
72
  description: searchToolsTool.description,
74
73
  inputSchema: searchToolsTool.schema,
75
74
  }, async (args) => {
76
75
  const parsedArgs = await searchToolsTool.schema.parseAsync(args);
77
76
  const result = await searchToolsTool.execute(parsedArgs);
78
- return {
79
- content: [
80
- {
81
- type: 'text',
82
- text: result.summary,
83
- },
84
- {
85
- type: 'text',
86
- text: JSON.stringify(result.tools, null, 2),
87
- },
88
- ],
89
- structuredContent: result,
90
- };
91
- });
92
- // Register kubernetes.getTypeDefinition helper as an exposed tool.
93
- server.registerTool(getTypeDefinitionTool.name, {
94
- title: 'Kubernetes Type Definition',
95
- description: getTypeDefinitionTool.description,
96
- inputSchema: getTypeDefinitionTool.schema,
97
- }, async (args) => {
98
- const parsedArgs = await getTypeDefinitionTool.schema.parseAsync(args);
99
- const result = await getTypeDefinitionTool.execute(parsedArgs);
100
- return {
101
- content: [
102
- {
103
- type: 'text',
104
- text: result.summary,
105
- },
106
- {
107
- type: 'text',
108
- text: JSON.stringify(result.types, null, 2),
109
- },
110
- ],
111
- structuredContent: result,
112
- };
77
+ // Handle different result modes
78
+ if (result.mode === 'types') {
79
+ return {
80
+ content: [
81
+ {
82
+ type: 'text',
83
+ text: result.summary,
84
+ },
85
+ {
86
+ type: 'text',
87
+ text: JSON.stringify(result.types, null, 2),
88
+ },
89
+ ],
90
+ structuredContent: result,
91
+ };
92
+ }
93
+ else if (result.mode === 'scripts') {
94
+ return {
95
+ content: [
96
+ {
97
+ type: 'text',
98
+ text: result.summary,
99
+ },
100
+ {
101
+ type: 'text',
102
+ text: JSON.stringify(result.scripts, null, 2),
103
+ },
104
+ ],
105
+ structuredContent: result,
106
+ };
107
+ }
108
+ else if (result.mode === 'prometheus') {
109
+ // Handle metrics category (has 'metrics' array) vs methods (has 'methods' array)
110
+ if ('category' in result && result.category === 'metrics') {
111
+ return {
112
+ content: [
113
+ {
114
+ type: 'text',
115
+ text: result.summary,
116
+ },
117
+ {
118
+ type: 'text',
119
+ text: JSON.stringify(result.metrics, null, 2),
120
+ },
121
+ ],
122
+ structuredContent: result,
123
+ };
124
+ }
125
+ // Build summary - handle both success and error cases for PrometheusModeResult | PrometheusErrorResult
126
+ const methodsResult = result;
127
+ const summary = 'summary' in result ? result.summary :
128
+ `${methodsResult.error}: ${methodsResult.message}\nExample: ${methodsResult.example}`;
129
+ return {
130
+ content: [
131
+ {
132
+ type: 'text',
133
+ text: summary,
134
+ },
135
+ {
136
+ type: 'text',
137
+ text: JSON.stringify(methodsResult.methods, null, 2),
138
+ },
139
+ ],
140
+ structuredContent: result,
141
+ };
142
+ }
143
+ else {
144
+ // mode === 'methods'
145
+ return {
146
+ content: [
147
+ {
148
+ type: 'text',
149
+ text: result.summary,
150
+ },
151
+ {
152
+ type: 'text',
153
+ text: JSON.stringify(result.tools, null, 2),
154
+ },
155
+ ],
156
+ structuredContent: result,
157
+ };
158
+ }
113
159
  });
114
160
  async function main() {
115
- // Ensure ~/.prodisco/scripts/cache/ directory exists
161
+ // Probe cluster connectivity before starting the server
162
+ // This ensures we fail fast if the cluster is not reachable
163
+ logger.info('Probing Kubernetes cluster connectivity...');
164
+ try {
165
+ await probeClusterConnectivity();
166
+ logger.info('Kubernetes cluster is reachable');
167
+ }
168
+ catch (error) {
169
+ const message = error instanceof Error ? error.message : String(error);
170
+ logger.error(`Failed to connect to Kubernetes cluster: ${message}`);
171
+ throw new Error(`Kubernetes cluster is not accessible: ${message}`);
172
+ }
173
+ // Ensure ~/.prodisco/scripts/cache/ directory exists (using async API for consistency)
116
174
  const scriptsDir = path.join(os.homedir(), '.prodisco', 'scripts', 'cache');
117
- fs.mkdirSync(scriptsDir, { recursive: true });
118
- console.error(`📝 Scripts directory: ${scriptsDir}`);
175
+ await fs.promises.mkdir(scriptsDir, { recursive: true });
176
+ logger.info(`Scripts directory: ${scriptsDir}`);
177
+ // Pre-warm the Orama search index to avoid delay on first search
178
+ await warmupSearchIndex();
119
179
  const transport = new StdioServerTransport();
120
180
  await server.connect(transport);
121
- console.error('Kubernetes MCP server ready on stdio');
181
+ logger.info('Kubernetes MCP server ready on stdio');
182
+ }
183
+ /**
184
+ * Graceful shutdown handler.
185
+ * Stops the script watcher and cleans up resources.
186
+ */
187
+ async function shutdown(signal) {
188
+ logger.info(`Received ${signal}, shutting down gracefully...`);
189
+ try {
190
+ await shutdownSearchIndex();
191
+ logger.info('Shutdown complete');
192
+ process.exit(0);
193
+ }
194
+ catch (error) {
195
+ logger.error('Error during shutdown', error);
196
+ process.exit(1);
197
+ }
122
198
  }
199
+ // Register shutdown handlers
200
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
201
+ process.on('SIGINT', () => shutdown('SIGINT'));
123
202
  main().catch((error) => {
124
- console.error('Fatal error starting MCP server', error);
203
+ logger.error('Fatal error starting MCP server', error);
125
204
  process.exit(1);
126
205
  });
127
206
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Universal API Tools for openapi-fetch clients
3
+ */
4
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
5
+ export declare function registerApiTools(server: McpServer): void;
6
+ //# sourceMappingURL=apiTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiTools.d.ts","sourceRoot":"","sources":["../../../src/tools/api/apiTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAuJjD"}