@futuretea/rancher-mcp-server 0.3.0 → 0.3.2

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 (2) hide show
  1. package/README.md +121 -7
  2. package/package.json +7 -7
package/README.md CHANGED
@@ -12,21 +12,26 @@ A powerful and flexible [Model Context Protocol (MCP)](https://blog.marcnuri.com
12
12
 
13
13
  - **✅ Multi-cluster Management**: Access and manage multiple Kubernetes clusters through Rancher API
14
14
  - **✅ Core Kubernetes Resources**: Perform operations on Kubernetes resources across multiple clusters
15
- - **List** clusters, nodes, workloads, and namespaces
15
+ - **List** clusters, nodes, workloads, namespaces, services, configmaps, and secrets
16
16
  - **Get** kubeconfig for any cluster
17
+ - **Intelligent Diagnostic Chain**: Perform health checks with Service → Pods and Ingress → Service → Pods diagnostic chains
18
+ - **Ready/Degraded Dual-State Diagnosis**: Identify both critical failures and performance degradation
17
19
  - **✅ Rancher-specific Resources**: Access Rancher-specific resources
18
20
  - **List** Rancher projects and users
19
21
  - **Check** cluster health status
20
22
  - **View** project access permissions
21
23
  - **✅ Security Configuration**: Support for read-only mode and disabling destructive operations
24
+ - **Secrets Protection**: Secret data is never exposed, only metadata
22
25
  - **✅ Multiple Output Formats**: Support for table, YAML, and JSON output formats
26
+ - **✅ Performance Optimized**: Intelligent API call caching reduces API calls by up to 93% during bulk operations
23
27
  - **✅ Cross-platform Support**: Available as native binaries for Linux, macOS, and Windows, as well as an npm package
24
28
 
25
29
  Unlike other Kubernetes MCP server implementations, this server is **specifically designed for Rancher multi-cluster environments** and provides seamless access to multiple clusters through a single interface.
26
30
 
27
31
  - **✅ Lightweight**: The server is distributed as a single native binary for Linux, macOS, and Windows
28
32
  - **✅ High-Performance / Low-Latency**: Directly interacts with Rancher API server without the overhead of calling external commands
29
- - **✅ Cross-Platform**: Available as a native binary for Linux, macOS, and Windows, as well as an npm package
33
+ - **✅ Efficient Bulk Operations**: Optimized API calls with intelligent caching for diagnosing multiple resources
34
+ - **✅ Self-Documenting**: Detailed tool descriptions help LLMs understand capabilities and select the right tools
30
35
  - **✅ Configurable**: Supports [command-line arguments](#configuration) to configure the server behavior
31
36
  - **✅ Well tested**: The server has an extensive test suite to ensure its reliability and correctness
32
37
 
@@ -124,10 +129,13 @@ npx @futuretea/rancher-mcp-server@latest --help
124
129
  | `--rancher-token` | Bearer token for Rancher API authentication |
125
130
  | `--rancher-access-key` | Access key for Rancher API authentication |
126
131
  | `--rancher-secret-key` | Secret key for Rancher API authentication |
132
+ | `--rancher-tls-insecure` | Skip TLS certificate verification for Rancher server (default: false) |
127
133
  | `--list-output` | Output format for resource list operations (one of: table, yaml, json) (default "table") |
128
134
  | `--read-only` | If set, the MCP server will run in read-only mode, meaning it will not allow any write operations on the Rancher cluster |
129
135
  | `--disable-destructive` | If set, the MCP server will disable all destructive operations on the Rancher cluster |
130
- | `--toolsets` | Comma-separated list of toolsets to enable. Check the [🛠️ Tools and Functionalities](#tools-and-functionalities) section for more information |
136
+ | `--toolsets` | Comma-separated list of toolsets to enable. Default: [config,core,rancher,networking] |
137
+ | `--enabled-tools` | Comma-separated list of tools to enable (overrides toolsets) |
138
+ | `--disabled-tools` | Comma-separated list of tools to disable (overrides toolsets) |
131
139
 
132
140
  ### Configuration File
133
141
 
@@ -152,6 +160,7 @@ toolsets:
152
160
  - config
153
161
  - core
154
162
  - rancher
163
+ - networking # Optional: enable network resource management
155
164
  ```
156
165
 
157
166
  ### HTTP/SSE Mode
@@ -202,16 +211,17 @@ The following sets of tools are available (all on by default):
202
211
  | Toolset | Description |
203
212
  |---------|-------------|
204
213
  | config | Tools for managing cluster configuration (kubeconfig) |
205
- | core | Core Kubernetes resource management tools (clusters, nodes, workloads, namespaces) |
206
- | rancher | Rancher-specific tools (projects, users, cluster health, access control) |
214
+ | core | Core Kubernetes resource management tools (nodes, workloads, namespaces, configmaps, secrets, services) |
215
+ | rancher | Rancher-specific tools (clusters, projects, users, cluster health, access control) |
216
+ | networking | Network resource management tools (ingresses) |
207
217
 
208
218
  ### Tools
209
219
 
210
220
  <details>
211
221
  <summary>config</summary>
212
222
 
213
- - **kubeconfig_get** - Get kubeconfig file for a cluster
214
- - `cluster_id` (`string`) **(required)** - ID of the cluster to get kubeconfig for
223
+ - **configuration_view** - Generate and view Kubernetes configuration (kubeconfig) for a Rancher cluster
224
+ - `cluster` (`string`) - Cluster ID to generate kubeconfig for
215
225
 
216
226
  </details>
217
227
 
@@ -221,10 +231,22 @@ The following sets of tools are available (all on by default):
221
231
  - **cluster_list** - List all available Kubernetes clusters
222
232
  - `format` (`string`) - Output format: table, yaml, or json (default: "table")
223
233
 
234
+ - **node_get** - Get a single node by ID, more efficient than list
235
+ - `cluster` (`string`) **(required)** - Cluster ID
236
+ - `node` (`string`) **(required)** - Node ID to get
237
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
238
+
224
239
  - **node_list** - List all nodes in a cluster
225
240
  - `cluster` (`string`) - Cluster ID to list nodes from (optional)
226
241
  - `format` (`string`) - Output format: table, yaml, or json (default: "table")
227
242
 
243
+ - **workload_get** - Get a single workload by name and namespace, more efficient than list
244
+ - `cluster` (`string`) **(required)** - Cluster ID
245
+ - `namespace` (`string`) **(required)** - Namespace name
246
+ - `name` (`string`) **(required)** - Workload name to get
247
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
248
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
249
+
228
250
  - **workload_list** - List workloads (deployments, statefulsets, daemonsets, jobs) and orphan pods in a cluster
229
251
  - `cluster` (`string`) **(required)** - Cluster ID
230
252
  - `project` (`string`) - Project ID to filter workloads (optional)
@@ -232,20 +254,92 @@ The following sets of tools are available (all on by default):
232
254
  - `node` (`string`) - Node name to filter workloads (optional)
233
255
  - `format` (`string`) - Output format: table, yaml, or json (default: "table")
234
256
 
257
+ - **namespace_get** - Get a single namespace by name, more efficient than list
258
+ - `cluster` (`string`) **(required)** - Cluster ID
259
+ - `name` (`string`) **(required)** - Namespace name to get
260
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
261
+
235
262
  - **namespace_list** - List namespaces in a cluster
236
263
  - `cluster` (`string`) **(required)** - Cluster ID
237
264
  - `project` (`string`) - Project ID to filter namespaces (optional)
238
265
  - `format` (`string`) - Output format: table, yaml, or json (default: "table")
239
266
 
267
+ - **configmap_get** - Get a single ConfigMap by name and namespace, more efficient than list
268
+ - `cluster` (`string`) **(required)** - Cluster ID
269
+ - `namespace` (`string`) **(required)** - Namespace name
270
+ - `name` (`string`) **(required)** - ConfigMap name to get
271
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
272
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
273
+
274
+ - **configmap_get** - Get a single ConfigMap by name and namespace, more efficient than list
275
+ - `cluster` (`string`) **(required)** - Cluster ID
276
+ - `namespace` (`string`) **(required)** - Namespace name
277
+ - `name` (`string`) **(required)** - ConfigMap name to get
278
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
279
+ - `format` (`string`) - Output format: yaml or json (default: "json")
280
+
281
+ - **configmap_list** - List all ConfigMaps in a cluster
282
+ - `cluster` (`string`) **(required)** - Cluster ID
283
+ - `project` (`string`) - Project ID to filter ConfigMaps (optional)
284
+ - `namespace` (`string`) - Namespace name to filter ConfigMaps (optional)
285
+ - `format` (`string`) - Output format: table, yaml, or json (default: "table")
286
+
287
+ - **secret_get** - Get a single Secret by name and namespace, more efficient than list (metadata only, does not expose secret data)
288
+ - `cluster` (`string`) **(required)** - Cluster ID
289
+ - `namespace` (`string`) **(required)** - Namespace name
290
+ - `name` (`string`) **(required)** - Secret name to get
291
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
292
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
293
+
294
+ - **secret_get** - Get a single Secret by name and namespace, more efficient than list (metadata only, does not expose secret data)
295
+ - `cluster` (`string`) **(required)** - Cluster ID
296
+ - `namespace` (`string`) **(required)** - Namespace name
297
+ - `name` (`string`) **(required)** - Secret name to get
298
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
299
+ - `format` (`string`) - Output format: yaml or json (default: "json")
300
+
301
+ - **secret_list** - List all Secrets in a cluster (metadata only, does not expose secret data)
302
+ - `cluster` (`string`) **(required)** - Cluster ID
303
+ - `project` (`string`) - Project ID to filter secrets (optional)
304
+ - `namespace` (`string`) - Namespace name to filter secrets (optional)
305
+ - `format` (`string`) - Output format: table, yaml, or json (default: "table")
306
+
307
+ - **service_get** - Get a single service by name with optional pod diagnostic check (Service → Pods), more efficient than list
308
+ - `cluster` (`string`) **(required)** - Cluster ID
309
+ - `namespace` (`string`) **(required)** - Namespace name
310
+ - `name` (`string`) **(required)** - Service name to get
311
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
312
+ - `getPodDetails` (`boolean`) - Get detailed pod information and perform health checks (default: false)
313
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
314
+
315
+ - **service_list** - List services with optional pod diagnostic check (Service → Pods), supports Ready/Degraded dual-state diagnosis
316
+ - `cluster` (`string`) **(required)** - Cluster ID
317
+ - `project` (`string`) - Project ID to filter services (optional)
318
+ - `namespace` (`string`) - Namespace name to filter services (optional)
319
+ - `getPodDetails` (`boolean`) - Get pod information and perform health checks for services (default: false)
320
+ - `format` (`string`) - Output format: table, yaml, or json (default: "table")
321
+
240
322
  </details>
241
323
 
242
324
  <details>
243
325
  <summary>rancher</summary>
244
326
 
327
+ - **cluster_list** - List all available Kubernetes clusters
328
+ - `format` (`string`) - Output format: table, yaml, or json (default: "table")
329
+
330
+ - **project_get** - Get a single Rancher project by ID, more efficient than list
331
+ - `project` (`string`) **(required)** - Project ID to get
332
+ - `cluster` (`string`) **(required)** - Cluster ID (required for verification)
333
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
334
+
245
335
  - **project_list** - List Rancher projects across clusters
246
336
  - `cluster` (`string`) - Filter projects by cluster ID (optional)
247
337
  - `format` (`string`) - Output format: table, yaml, or json (default: "table")
248
338
 
339
+ - **user_get** - Get a single Rancher user by ID, more efficient than list
340
+ - `user` (`string`) **(required)** - User ID to get
341
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
342
+
249
343
  - **user_list** - List all Rancher users
250
344
  - `format` (`string`) - Output format: table, yaml, or json (default: "table")
251
345
 
@@ -260,6 +354,26 @@ The following sets of tools are available (all on by default):
260
354
 
261
355
  </details>
262
356
 
357
+ <details>
358
+ <summary>networking</summary>
359
+
360
+ - **ingress_get** - Get a single ingress by name with diagnostic chain check (Ingress → Service → Pods), more efficient than list
361
+ - `cluster` (`string`) **(required)** - Cluster ID
362
+ - `namespace` (`string`) **(required)** - Namespace name
363
+ - `name` (`string`) **(required)** - Ingress name to get
364
+ - `project` (`string`) - Project ID (optional, will auto-detect if not provided)
365
+ - `getPodDetails` (`boolean`) - Get detailed pod information and perform health checks (default: false)
366
+ - `format` (`string`) - Output format: yaml or json (default: "yaml")
367
+
368
+ - **ingress_list** - List ingresses with full diagnostic chain check (Ingress → Service → Pods), supports Ready/Degraded dual-state diagnosis
369
+ - `cluster` (`string`) **(required)** - Cluster ID
370
+ - `project` (`string`) - Project ID to filter ingresses (optional)
371
+ - `namespace` (`string`) - Namespace name to filter ingresses (optional)
372
+ - `getPodDetails` (`boolean`) - Get detailed pod information and perform health checks (default: false)
373
+ - `format` (`string`) - Output format: table, yaml, or json (default: "table")
374
+
375
+ </details>
376
+
263
377
  ## 🧑‍💻 Development <a id="development"></a>
264
378
 
265
379
  ### Running with mcp-inspector
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@futuretea/rancher-mcp-server",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "Model Context Protocol (MCP) server for Rancher multi-cluster management",
5
5
  "main": "./bin/index.js",
6
6
  "bin": {
7
7
  "rancher-mcp-server": "bin/index.js"
8
8
  },
9
9
  "optionalDependencies": {
10
- "@futuretea/rancher-mcp-server-darwin-amd64": "0.3.0",
11
- "@futuretea/rancher-mcp-server-darwin-arm64": "0.3.0",
12
- "@futuretea/rancher-mcp-server-linux-amd64": "0.3.0",
13
- "@futuretea/rancher-mcp-server-linux-arm64": "0.3.0",
14
- "@futuretea/rancher-mcp-server-windows-amd64": "0.3.0",
15
- "@futuretea/rancher-mcp-server-windows-arm64": "0.3.0"
10
+ "@futuretea/rancher-mcp-server-darwin-amd64": "0.3.2",
11
+ "@futuretea/rancher-mcp-server-darwin-arm64": "0.3.2",
12
+ "@futuretea/rancher-mcp-server-linux-amd64": "0.3.2",
13
+ "@futuretea/rancher-mcp-server-linux-arm64": "0.3.2",
14
+ "@futuretea/rancher-mcp-server-windows-amd64": "0.3.2",
15
+ "@futuretea/rancher-mcp-server-windows-arm64": "0.3.2"
16
16
  },
17
17
  "repository": {
18
18
  "type": "git",