kubectl-mcp-server 1.21.0__tar.gz → 1.23.0__tar.gz

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 (86) hide show
  1. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/PKG-INFO +49 -1
  2. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/README.md +48 -0
  3. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_server.egg-info/PKG-INFO +49 -1
  4. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/__init__.py +1 -1
  5. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/k8s_config.py +27 -4
  6. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/providers.py +30 -1
  7. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/setup.py +1 -1
  8. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/LICENSE +0 -0
  9. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_server.egg-info/SOURCES.txt +0 -0
  10. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_server.egg-info/dependency_links.txt +0 -0
  11. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_server.egg-info/entry_points.txt +0 -0
  12. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_server.egg-info/requires.txt +0 -0
  13. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_server.egg-info/top_level.txt +0 -0
  14. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/__main__.py +0 -0
  15. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/auth/__init__.py +0 -0
  16. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/auth/config.py +0 -0
  17. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/auth/scopes.py +0 -0
  18. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/auth/verifier.py +0 -0
  19. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/cli/__init__.py +0 -0
  20. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/cli/__main__.py +0 -0
  21. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/cli/cli.py +0 -0
  22. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/cli/errors.py +0 -0
  23. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/cli/output.py +0 -0
  24. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/config/__init__.py +0 -0
  25. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/config/loader.py +0 -0
  26. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/config/schema.py +0 -0
  27. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/crd_detector.py +0 -0
  28. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/diagnostics.py +0 -0
  29. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/mcp_server.py +0 -0
  30. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/observability/__init__.py +0 -0
  31. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/observability/metrics.py +0 -0
  32. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/observability/stats.py +0 -0
  33. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/observability/tracing.py +0 -0
  34. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/prompts/__init__.py +0 -0
  35. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/prompts/builtin.py +0 -0
  36. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/prompts/custom.py +0 -0
  37. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/prompts/prompts.py +0 -0
  38. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/resources/__init__.py +0 -0
  39. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/resources/resources.py +0 -0
  40. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/safety.py +0 -0
  41. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/__init__.py +0 -0
  42. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/backup.py +0 -0
  43. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/browser.py +0 -0
  44. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/capi.py +0 -0
  45. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/certs.py +0 -0
  46. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/cilium.py +0 -0
  47. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/cluster.py +0 -0
  48. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/core.py +0 -0
  49. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/cost.py +0 -0
  50. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/deployments.py +0 -0
  51. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/diagnostics.py +0 -0
  52. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/gitops.py +0 -0
  53. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/helm.py +0 -0
  54. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/keda.py +0 -0
  55. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/kiali.py +0 -0
  56. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/kind.py +0 -0
  57. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/kubevirt.py +0 -0
  58. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/networking.py +0 -0
  59. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/operations.py +0 -0
  60. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/pods.py +0 -0
  61. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/policy.py +0 -0
  62. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/rollouts.py +0 -0
  63. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/security.py +0 -0
  64. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/storage.py +0 -0
  65. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/ui.py +0 -0
  66. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/utils.py +0 -0
  67. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/tools/vind.py +0 -0
  68. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/utils/__init__.py +0 -0
  69. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/kubectl_mcp_tool/utils/helpers.py +0 -0
  70. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/setup.cfg +0 -0
  71. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/__init__.py +0 -0
  72. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/conftest.py +0 -0
  73. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_auth.py +0 -0
  74. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_browser.py +0 -0
  75. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_cli.py +0 -0
  76. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_config.py +0 -0
  77. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_ecosystem.py +0 -0
  78. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_kind.py +0 -0
  79. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_mcp_integration.py +0 -0
  80. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_observability.py +0 -0
  81. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_prompts.py +0 -0
  82. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_resources.py +0 -0
  83. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_safety.py +0 -0
  84. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_server.py +0 -0
  85. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_tools.py +0 -0
  86. {kubectl_mcp_server-1.21.0 → kubectl_mcp_server-1.23.0}/tests/test_vind.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kubectl-mcp-server
3
- Version: 1.21.0
3
+ Version: 1.23.0
4
4
  Summary: A Model Context Protocol (MCP) server for Kubernetes with 270+ tools, 8 resources, and 8 prompts
5
5
  Home-page: https://github.com/rohitg00/kubectl-mcp-server
6
6
  Author: Rohit Ghumare
@@ -732,6 +732,54 @@ kubectl-mcp-server
732
732
  - Remote CDP connections
733
733
  - Session management
734
734
 
735
+ ## Optional: kubectl-mcp-app (8 Interactive UI Dashboards)
736
+
737
+ A standalone npm package that provides beautiful, interactive UI dashboards for Kubernetes management using the MCP ext-apps SDK.
738
+
739
+ **Installation:**
740
+
741
+ ```bash
742
+ # Via npm
743
+ npm install -g kubectl-mcp-app
744
+
745
+ # Or via npx (no install)
746
+ npx kubectl-mcp-app
747
+ ```
748
+
749
+ **Claude Desktop Configuration:**
750
+
751
+ ```json
752
+ {
753
+ "mcpServers": {
754
+ "kubectl-app": {
755
+ "command": "npx",
756
+ "args": ["kubectl-mcp-app"]
757
+ }
758
+ }
759
+ }
760
+ ```
761
+
762
+ **8 Interactive UI Tools:**
763
+
764
+ | Tool | Description |
765
+ | ---- | ----------- |
766
+ | `k8s-pods` | Interactive pod viewer with filtering, sorting, status indicators |
767
+ | `k8s-logs` | Real-time log viewer with syntax highlighting and search |
768
+ | `k8s-deploy` | Deployment dashboard with rollout status, scaling, rollback |
769
+ | `k8s-helm` | Helm release manager with upgrade/rollback actions |
770
+ | `k8s-cluster` | Cluster overview with node health and resource metrics |
771
+ | `k8s-cost` | Cost analyzer with waste detection and recommendations |
772
+ | `k8s-events` | Events timeline with type filtering and grouping |
773
+ | `k8s-network` | Network topology graph showing Services/Pods/Ingress |
774
+
775
+ **Features:**
776
+ - 🎨 Dark/light theme support
777
+ - 📊 Real-time data visualization
778
+ - 🖱️ Interactive actions (scale, restart, delete)
779
+ - 🔗 Seamless integration with kubectl-mcp-server
780
+
781
+ **More Info**: See [kubectl-mcp-app/README.md](./kubectl-mcp-app/README.md) for full documentation.
782
+
735
783
  ## Enterprise: OAuth 2.1 Authentication
736
784
 
737
785
  Secure your MCP server with OAuth 2.1 authentication (RFC 9728).
@@ -674,6 +674,54 @@ kubectl-mcp-server
674
674
  - Remote CDP connections
675
675
  - Session management
676
676
 
677
+ ## Optional: kubectl-mcp-app (8 Interactive UI Dashboards)
678
+
679
+ A standalone npm package that provides beautiful, interactive UI dashboards for Kubernetes management using the MCP ext-apps SDK.
680
+
681
+ **Installation:**
682
+
683
+ ```bash
684
+ # Via npm
685
+ npm install -g kubectl-mcp-app
686
+
687
+ # Or via npx (no install)
688
+ npx kubectl-mcp-app
689
+ ```
690
+
691
+ **Claude Desktop Configuration:**
692
+
693
+ ```json
694
+ {
695
+ "mcpServers": {
696
+ "kubectl-app": {
697
+ "command": "npx",
698
+ "args": ["kubectl-mcp-app"]
699
+ }
700
+ }
701
+ }
702
+ ```
703
+
704
+ **8 Interactive UI Tools:**
705
+
706
+ | Tool | Description |
707
+ | ---- | ----------- |
708
+ | `k8s-pods` | Interactive pod viewer with filtering, sorting, status indicators |
709
+ | `k8s-logs` | Real-time log viewer with syntax highlighting and search |
710
+ | `k8s-deploy` | Deployment dashboard with rollout status, scaling, rollback |
711
+ | `k8s-helm` | Helm release manager with upgrade/rollback actions |
712
+ | `k8s-cluster` | Cluster overview with node health and resource metrics |
713
+ | `k8s-cost` | Cost analyzer with waste detection and recommendations |
714
+ | `k8s-events` | Events timeline with type filtering and grouping |
715
+ | `k8s-network` | Network topology graph showing Services/Pods/Ingress |
716
+
717
+ **Features:**
718
+ - 🎨 Dark/light theme support
719
+ - 📊 Real-time data visualization
720
+ - 🖱️ Interactive actions (scale, restart, delete)
721
+ - 🔗 Seamless integration with kubectl-mcp-server
722
+
723
+ **More Info**: See [kubectl-mcp-app/README.md](./kubectl-mcp-app/README.md) for full documentation.
724
+
677
725
  ## Enterprise: OAuth 2.1 Authentication
678
726
 
679
727
  Secure your MCP server with OAuth 2.1 authentication (RFC 9728).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kubectl-mcp-server
3
- Version: 1.21.0
3
+ Version: 1.23.0
4
4
  Summary: A Model Context Protocol (MCP) server for Kubernetes with 270+ tools, 8 resources, and 8 prompts
5
5
  Home-page: https://github.com/rohitg00/kubectl-mcp-server
6
6
  Author: Rohit Ghumare
@@ -732,6 +732,54 @@ kubectl-mcp-server
732
732
  - Remote CDP connections
733
733
  - Session management
734
734
 
735
+ ## Optional: kubectl-mcp-app (8 Interactive UI Dashboards)
736
+
737
+ A standalone npm package that provides beautiful, interactive UI dashboards for Kubernetes management using the MCP ext-apps SDK.
738
+
739
+ **Installation:**
740
+
741
+ ```bash
742
+ # Via npm
743
+ npm install -g kubectl-mcp-app
744
+
745
+ # Or via npx (no install)
746
+ npx kubectl-mcp-app
747
+ ```
748
+
749
+ **Claude Desktop Configuration:**
750
+
751
+ ```json
752
+ {
753
+ "mcpServers": {
754
+ "kubectl-app": {
755
+ "command": "npx",
756
+ "args": ["kubectl-mcp-app"]
757
+ }
758
+ }
759
+ }
760
+ ```
761
+
762
+ **8 Interactive UI Tools:**
763
+
764
+ | Tool | Description |
765
+ | ---- | ----------- |
766
+ | `k8s-pods` | Interactive pod viewer with filtering, sorting, status indicators |
767
+ | `k8s-logs` | Real-time log viewer with syntax highlighting and search |
768
+ | `k8s-deploy` | Deployment dashboard with rollout status, scaling, rollback |
769
+ | `k8s-helm` | Helm release manager with upgrade/rollback actions |
770
+ | `k8s-cluster` | Cluster overview with node health and resource metrics |
771
+ | `k8s-cost` | Cost analyzer with waste detection and recommendations |
772
+ | `k8s-events` | Events timeline with type filtering and grouping |
773
+ | `k8s-network` | Network topology graph showing Services/Pods/Ingress |
774
+
775
+ **Features:**
776
+ - 🎨 Dark/light theme support
777
+ - 📊 Real-time data visualization
778
+ - 🖱️ Interactive actions (scale, restart, delete)
779
+ - 🔗 Seamless integration with kubectl-mcp-server
780
+
781
+ **More Info**: See [kubectl-mcp-app/README.md](./kubectl-mcp-app/README.md) for full documentation.
782
+
735
783
  ## Enterprise: OAuth 2.1 Authentication
736
784
 
737
785
  Secure your MCP server with OAuth 2.1 authentication (RFC 9728).
@@ -7,7 +7,7 @@ with Kubernetes clusters through natural language commands.
7
7
  For more information, see: https://github.com/rohitg00/kubectl-mcp-server
8
8
  """
9
9
 
10
- __version__ = "1.21.0"
10
+ __version__ = "1.23.0"
11
11
 
12
12
  from .mcp_server import MCPServer
13
13
  from .diagnostics import run_diagnostics, check_kubectl_installation, check_cluster_connection
@@ -203,6 +203,7 @@ try:
203
203
  KubernetesProvider,
204
204
  ProviderConfig,
205
205
  ProviderType,
206
+ ProviderError,
206
207
  UnknownContextError,
207
208
  get_provider,
208
209
  get_context_names,
@@ -262,9 +263,21 @@ def load_kubernetes_config(context: str = ""):
262
263
 
263
264
 
264
265
  def _patched_load_kube_config(*args, **kwargs):
265
- """Patched version of load_kube_config that tries in-cluster first."""
266
+ """Patched version of load_kube_config that tries in-cluster first.
267
+
268
+ When called with explicit arguments (config_file, context, client_configuration),
269
+ always pass through to the original function. Only try in-cluster as a
270
+ fallback for bare calls during initial module loading.
271
+ """
266
272
  global _config_loaded, _original_load_kube_config
267
273
 
274
+ has_explicit_args = bool(args) or bool(kwargs)
275
+
276
+ if has_explicit_args and _original_load_kube_config:
277
+ _original_load_kube_config(*args, **kwargs)
278
+ _config_loaded = True
279
+ return
280
+
268
281
  if _config_loaded:
269
282
  return
270
283
 
@@ -326,7 +339,7 @@ def _load_config_for_context(context: str = "") -> Any:
326
339
  try:
327
340
  provider = get_provider()
328
341
  return provider.get_api_client(context)
329
- except UnknownContextError:
342
+ except (UnknownContextError, ProviderError):
330
343
  raise
331
344
  except Exception as e:
332
345
  logger.warning(f"Provider failed, falling back to basic config: {e}")
@@ -338,11 +351,20 @@ def _load_config_for_context(context: str = "") -> Any:
338
351
  config.load_incluster_config()
339
352
  return client.ApiClient()
340
353
  except ConfigException:
341
- pass
354
+ logger.debug("In-cluster config not available in fallback path")
342
355
 
343
356
  kubeconfig_path = os.environ.get('KUBECONFIG', '~/.kube/config')
344
357
  kubeconfig_path = os.path.expanduser(kubeconfig_path)
345
358
 
359
+ if not os.path.exists(kubeconfig_path):
360
+ raise RuntimeError(
361
+ f"No Kubernetes configuration found. "
362
+ f"In-cluster config not available and kubeconfig not found at '{kubeconfig_path}'. "
363
+ f"If running in a Kubernetes pod, ensure the ServiceAccount token is mounted "
364
+ f"and KUBERNETES_SERVICE_HOST/KUBERNETES_SERVICE_PORT env vars are set. "
365
+ f"Set MCP_K8S_PROVIDER=in-cluster for in-cluster deployments."
366
+ )
367
+
346
368
  api_config = client.Configuration()
347
369
 
348
370
  if context:
@@ -543,7 +565,8 @@ _BASE_EXPORTS = [
543
565
  if _HAS_PROVIDER:
544
566
  __all__ = _BASE_EXPORTS + [
545
567
  "KubernetesProvider", "ProviderConfig", "ProviderType",
546
- "UnknownContextError", "get_provider", "validate_context",
568
+ "ProviderError", "UnknownContextError",
569
+ "get_provider", "validate_context",
547
570
  ]
548
571
  else:
549
572
  __all__ = _BASE_EXPORTS
@@ -150,8 +150,37 @@ class KubernetesProvider:
150
150
  raise ProviderError(f"Failed to load context '{self.config.context}': {e}")
151
151
 
152
152
  def _initialize_kubeconfig(self):
153
- """Initialize for multi-cluster kubeconfig provider."""
153
+ """Initialize for multi-cluster kubeconfig provider.
154
+
155
+ Falls back to in-cluster config if kubeconfig file is not found.
156
+ """
154
157
  from kubernetes import config
158
+ from kubernetes.config.config_exception import ConfigException
159
+
160
+ kubeconfig_exists = os.path.exists(self.config.kubeconfig_path)
161
+
162
+ if not kubeconfig_exists:
163
+ try:
164
+ config.load_incluster_config()
165
+ self._in_cluster = True
166
+ self._active_context = "in-cluster"
167
+ self._contexts_cache = []
168
+ logger.info(
169
+ f"Kubeconfig not found at {self.config.kubeconfig_path}, "
170
+ f"using in-cluster config"
171
+ )
172
+ return
173
+ except ConfigException:
174
+ raise ProviderError(
175
+ f"No Kubernetes configuration found. "
176
+ f"Kubeconfig not found at '{self.config.kubeconfig_path}' and "
177
+ f"in-cluster config is not available. "
178
+ f"Ensure a valid kubeconfig exists, or if running inside a "
179
+ f"Kubernetes pod, verify the ServiceAccount token is mounted "
180
+ f"and KUBERNETES_SERVICE_HOST/KUBERNETES_SERVICE_PORT env vars "
181
+ f"are set. For in-cluster deployments, set "
182
+ f"MCP_K8S_PROVIDER=in-cluster."
183
+ )
155
184
 
156
185
  try:
157
186
  contexts, active = config.list_kube_config_contexts(
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="kubectl-mcp-server",
8
- version="1.21.0",
8
+ version="1.23.0",
9
9
  author="Rohit Ghumare",
10
10
  author_email="ghumare64@gmail.com",
11
11
  description="A Model Context Protocol (MCP) server for Kubernetes with 270+ tools, 8 resources, and 8 prompts",