About Kubernetes MCP Server
An MCP server for users who need to inspect and manage Kubernetes resources. It provides built-in cluster operations and can discover custom scripts and register them as tools.
Key features
- 01List pods, services, and deployments
- 02Describe and delete Kubernetes resources
- 03Inspect logs, events, and namespaces
- 04Manage replicas and kubectl contexts
- 05Auto-detect and register extension scripts
Use cases
- 01Inspect resources in a namespace
- 02Investigate pod logs and cluster events
- 03Switch the active kubectl context
- 04Extend cluster operations with custom scripts
MCP support
The MCP server exposes Kubernetes query and management tools to clients, and registers discovered scripts from scripts/ as tools.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEKubernetes MCP Server
A flexible Machine Communication Protocol (MCP) server that provides Kubernetes management capabilities with support for custom extension scripts.
Features
- Implements the Model Context Protocol (MCP) using the official MCP SDK
- Provides a wide range of Kubernetes management operations through tabular output
- Supports dynamic loading and auto-detection of custom extension scripts
- Automatic script parameter detection and validation
- Clean, modular architecture with Pydantic models for type safety
Directory Structure
-
bin/: Contains main executable components
k8s_mcp_wrapper.py: The main MCP server executable
-
scripts/: Contains plugin scripts for the MCP server
- Add your custom scripts here to extend functionality
Prerequisites
- Python 3.10 or higher (required by MCP SDK)
- kubectl installed and configured
- Required Python packages (see requirements.txt)
Installation
Using pip
-
Clone this repository:
git clone https://github.com/yourusername/k8s-mcp-server.git cd k8s-mcp-server -
(Optional) Create a virtual environment:
python3.10 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies:
pip install -r requirements.txt
Using uv (faster installation)
-
Install uv if not already installed:
pip install uv -
Clone the repository:
git clone https://github.com/yourusername/k8s-mcp-server.git cd k8s-mcp-server -
Create a virtual environment and install dependencies using uv:
uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate uv pip install -r requirements.txt
Usage
Running the MCP Server
Execute the MCP server from the bin directory:
cd bin
python3 k8s_mcp_wrapper.py
For development mode with web server (useful for debugging):
cd bin
python3 k8s_mcp_wrapper.py --dev --dev-port 8000
The server will:
- Check if kubectl is available
- Discover and register scripts from the
scripts/directory - Start listening for MCP protocol commands
Available Tools
The MCP server provides the following built-in tools:
| Tool Name | Description |
|---|---|
| get_pods | Get a list of pods in the specified namespace |
| get_services | Get a list of services in the specified namespace |
| get_deployments | Get a list of deployments in the specified namespace |
| get_namespaces | Get a list of all namespaces in the cluster |
| describe_resource | Describe a Kubernetes resource in detail |
| get_pod_logs | Get logs from a pod in the specified namespace |
| create_namespace | Create a new namespace in the Kubernetes cluster |
| delete_resource | Delete a Kubernetes resource |
| scale_deployment | Scale a deployment to the specified number of replicas |
| get_events | Get events from the Kubernetes cluster |
| get_current_context | Get the current kubectl context |
| get_available_contexts | Get the list of available kubectl contexts |
| switch_context | Switch the kubectl context |
| list_scripts | List all available scripts with their parameters |
Additionally, all scripts in the scripts/ directory are automatically registered as tools with the prefix script_.
Creating Custom Scripts
You can extend the MCP server's functionality by adding custom scripts to the scripts/ directory.
Script Requirements
- Scripts must be Python files with a
.pyextension - Scripts should use argparse for parameter definitions (they will be auto-detected)
- Scripts should support receiving arguments via a JSON file with the
--args-fileflag
Improving Script Detection
If your scripts aren't being properly detected by the MCP server, try these improvements:
-
Add detailed docstrings at the module level with parameter descriptions:
""" My Script Name Description of what this script does. Parameters: --param1: Description of parameter 1 (required) --param2: Description of parameter 2 (default: default_value) """ -
Use detailed argparse help texts that match your docstrings:
parser.add_argument( "--param1", type=str, required=True, help="Description of parameter 1 (required)" ) -
Use ArgumentDefaultsHelpFormatter to include default values in help texts:
parser = argparse.ArgumentParser( description="Description of the script", formatter_class=argparse.ArgumentDefaultsHelpFormatter ) -
Make your script executable with proper permissions:
chmod +x scripts/your_script.py
Script Template
Here's a basic template for creating a new script:
#!/usr/bin/env python3
"""
Script Name
Brief description of what the script does.
Parameters:
--param1: Description of parameter 1 (required)
--param2: Description of parameter 2 (default: default_value)
"""
import argparse
import json
import sys
import os
def main():
"""
Main function that parses arguments and executes the script.
This function demonstrates how to properly structure a script
for the Kubernetes MCP Server with clear parameter definitions.
Returns:
dict: A dictionary with the execution results
"""
parser = argparse.ArgumentParser(
description="Description of the script",
formatter_class=argparse.ArgumentDefaultsHelpFormatter
)
# Define your parameters with detailed docstrings
parser.add_argument(
"--param1",
type=str,
required=True,
help="Description of parameter 1 (required)"
)
parser.add_argument(
"--param2",
type=int,
default=42,
help="Description of parameter 2"
)
# Check if the --args-file flag is present
parser.add_argument("--args-file", help="JSON file containing arguments")
args, _ = parser.parse_known_args()
if args.args_file:
# Load arguments from the file
with open(args.args_file, 'r') as f:
arguments = json.load(f)
# Convert the loaded JSON arguments into a namespace
for arg_name, arg_value in arguments.items():
setattr(args, arg_name, arg_value)
else:
# Parse all arguments normally for CLI usage
args = parser.parse_args()
# Use your arguments here
print(f"Parameter 1: {args.param1}")
print(f"Parameter 2: {args.param2}")
# Implement your script logic here
if __name__ == "__main__":
main()
Environment Variables
SCRIPTS_DIR: Override the default scripts directory locationSCRIPTS_DIR=/path/to/scripts python3 bin/k8s_mcp_wrapper.py
Architecture
The system consists of the following components:
- MCP Server: Uses the FastMCP SDK to implement the MCP protocol
- Kubernetes Client: Handles direct interactions with kubectl using Pydantic models
- Extension Scripts: Provide specialized functionality with auto-detected parameters
Pydantic Models
The system uses Pydantic for:
- Type-safe models for Kubernetes resources
- Automatic validation of data structures
- Better IDE integration and error detection
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.