Provides tools for monitoring and diagnosing Kubernetes clusters, including listing problematic pods, getting detailed pod information, checking recent deployment changes, analyzing error rates, and investigating application logs and events.
Integrates with OpenAI's GPT models to enable natural language querying and intelligent analysis of Kubernetes cluster issues, allowing users to ask questions like 'What is the status of the checkout service?' and receive comprehensive diagnostic responses.
Kubernetes MCP Server
An interactive Kubernetes monitoring system built with Flask and OpenAI's Model Context Protocol (MCP). This project provides an agentic interface for diagnosing cluster issues using natural language queries.
Features
Flask MCP Server: Exposes Kubernetes cluster data via JSON-RPC endpoints
Interactive Client: Ask questions like "What is the status of the checkout service?"
OpenAI Integration: Uses GPT models to intelligently investigate cluster problems
Kubernetes Integration: Real-time pod monitoring, events, and logs
Colorized Output: Beautiful terminal interface with ANSI colors
Architecture
Setup
Prerequisites
Python 3.9+
Kubernetes cluster (KIND recommended for local development)
OpenAI API key (optional, fallback mode available)
Installation
Clone the repository:
Install dependencies:
Set up environment variables:
Running the Server
The server will start on http://localhost:5050
Running the Interactive Client
Usage
Interactive Mode
Start the client and ask natural language questions:
One-shot Mode
Available Tools
k8s.listProblemPods
- Find problematic podsk8s.getPodDetails
- Get detailed pod informationdeployments.listRecentChanges
- Recent deployment historymetrics.getErrors
- Error rate analysistraces.sampleErrors
- Sample failing tracesconfig.getDiff
- Configuration changes
Example Output
Configuration
Environment variables:
RPC_URL
- MCP server URL (default: http://127.0.0.1:5050/rpc)OPENAI_API_KEY
- OpenAI API key for LLM featuresOPENAI_MODEL
- Model to use (default: gpt-4o-mini)SERVICE
- Default service name (default: checkout)NAMESPACE
- Default K8s namespace (default: default)SINCE_MINS
- Time window for queries (default: 120)
Development
Project Structure
Adding New Tools
Add tool definition to
tools_catalog.json
Implement handler in
server.py
Test with client
Demo
https://github.com/user-attachments/assets/e30a7a69-ff7a-46f1-a2ff-e75eff79334b
License
MIT License
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables interactive Kubernetes cluster monitoring and troubleshooting through natural language queries. Users can diagnose pod issues, check service status, and investigate cluster problems using conversational AI.