giantswarm/mcp-capi
If you are the rightful owner of mcp-capi and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The MCP CAPI Server is a Model Context Protocol server designed to integrate AI assistants with Kubernetes cluster management via Cluster API.
capi_create_cluster
Create a new CAPI cluster
capi_list_clusters
List all clusters
capi_get_cluster
Get cluster details
capi_delete_cluster
Delete a cluster
capi_scale_cluster
Scale cluster nodes
MCP CAPI Server
A Model Context Protocol (MCP) server for Cluster API (CAPI), enabling seamless integration between Large Language Models (LLMs) and Kubernetes cluster management through CAPI.
Overview
The MCP CAPI Server provides a bridge between AI assistants (like Claude, GPT, etc.) and Cluster API, allowing natural language interactions for managing Kubernetes clusters across multiple infrastructure providers.
Features
- Cluster Management: Create, update, scale, and delete Kubernetes clusters
- Multi-Provider Support: Works with AWS, Azure, GCP, vSphere, and more
- Machine Operations: Manage control plane and worker nodes
- Real-time Monitoring: Watch cluster status changes and events
- Resource Discovery: Browse CAPI resources through MCP resources
- Guided Workflows: Interactive prompts for complex operations
- Multi-Transport Support: Connect via stdio, Server-Sent Events (SSE), or Streamable HTTP
- Enhanced CLI: Version management, self-update capability, and comprehensive help system
- Backwards Compatible: Maintains compatibility with existing configurations and scripts
Architecture
The MCP CAPI Server is built using:
- mcp-go - Go implementation of the Model Context Protocol
- client-go - Kubernetes Go client
- controller-runtime - Kubernetes controller libraries
Quick Start
Prerequisites
- Go 1.24.4 or later
- Access to a CAPI management cluster
- Kubeconfig configured for the management cluster
Installation
# Clone the repository
git clone https://github.com/giantswarm/mcp-capi.git
cd mcp-capi
# Build the server
make build
# Run the server
make run
Self-Update
The server includes a built-in self-update mechanism:
mcp-capi self-update
Usage
CLI Commands
The MCP server provides several commands:
$ mcp-capi --help
mcp-capi is a Model Context Protocol (MCP) server that provides
tools for interacting with Cluster API (CAPI) clusters. It offers various capabilities
including cluster management, machine operations, scaling, and infrastructure
provider management.
When run without subcommands, it starts the MCP server (equivalent to 'mcp-capi serve').
Usage:
mcp-capi [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
self-update Update mcp-capi to the latest version
serve Start the MCP CAPI server
version Print the version number of mcp-capi
Flags:
-h, --help help for mcp-capi
-v, --version version for mcp-capi
Use "mcp-capi [command] --help" for more information about a command.
Basic Usage (Backwards Compatible)
Start the MCP server with default settings using stdio transport:
# Both commands are equivalent and start the server
mcp-capi
mcp-capi serve
Multi-Transport Support
The server supports three transport types for different deployment scenarios:
Standard I/O (Default)
Best for MCP client integrations and development:
mcp-capi serve --transport stdio
Server-Sent Events (SSE)
Ideal for web applications and browser-based clients:
mcp-capi serve --transport sse --http-addr :8080
Streamable HTTP
Perfect for HTTP-based integrations and REST-like interactions:
mcp-capi serve --transport streamable-http --http-addr :8080
Advanced Configuration Examples
# Run with SSE transport on custom port with custom endpoints
mcp-capi serve \
--transport sse \
--http-addr :9090 \
--sse-endpoint /events \
--message-endpoint /messages
# Run with streamable HTTP transport
mcp-capi serve \
--transport streamable-http \
--http-addr :8080 \
--http-endpoint /api/mcp
Version Management
# Check current version
mcp-capi version
mcp-capi --version
# Update to latest version
mcp-capi self-update
Integration with AI Assistants
This MCP server can be integrated with various AI assistants that support the Model Context Protocol:
- Cursor: The server can be integrated with Cursor for AI-powered development
- VSCode Insiders: Compatible with VSCode Insiders for enhanced coding assistance
- Claude Desktop: Add the server to your Claude Desktop configuration
- Custom MCP Clients: Use any MCP-compatible client to connect
Example MCP Client Configuration
Standard I/O Transport (Recommended)
{
"servers": {
"capi": {
"command": "/path/to/mcp-capi",
"env": {
"KUBECONFIG": "/path/to/kubeconfig"
}
}
}
}
SSE Transport
{
"servers": {
"capi": {
"url": "http://localhost:8080/sse",
"transport": "sse"
}
}
}
Streamable HTTP Transport
{
"servers": {
"capi": {
"url": "http://localhost:8080/mcp",
"transport": "http"
}
}
}
Available Tools
Cluster Management
capi_create_cluster
- Create a new CAPI clustercapi_list_clusters
- List all clusterscapi_get_cluster
- Get cluster detailscapi_delete_cluster
- Delete a clustercapi_scale_cluster
- Scale cluster nodes
Machine Management
capi_list_machines
- List machinescapi_get_machine
- Get machine detailscapi_delete_machine
- Delete a specific machinecapi_remediate_machine
- Trigger machine health check remediation
MachineDeployment Operations
capi_create_machinedeployment
- Create new worker node poolcapi_list_machinedeployments
- List machine deploymentscapi_scale_machinedeployment
- Scale worker nodescapi_update_machinedeployment
- Update MachineDeployment configurationcapi_rollout_machinedeployment
- Trigger rolling update
MachineSet Operations
capi_list_machinesets
- List machine setscapi_get_machineset
- Get machine set details
Node Operations
capi_drain_node
- Safely drain a nodecapi_cordon_node
- Cordon/uncordon nodescapi_node_status
- Get node status from workload cluster
Infrastructure Provider Tools
Generic
capi_list_infrastructure_providers
- List available providerscapi_get_provider_config
- Get provider configuration requirements
AWS
capi_aws_list_clusters
- List AWS clusterscapi_aws_get_cluster
- Get AWS cluster detailscapi_aws_create_cluster
- Create AWS cluster (placeholder)capi_aws_update_vpc
- Update VPC configuration (placeholder)capi_aws_manage_security_groups
- Manage security groups (placeholder)capi_aws_get_machine_template
- Get/list AWS machine templates
Azure
capi_azure_list_clusters
- List Azure clusterscapi_azure_get_cluster
- Get Azure cluster detailscapi_azure_manage_resource_group
- Manage resource groups (placeholder)capi_azure_network_config
- Configure Azure networking (placeholder)
GCP
capi_gcp_list_clusters
- List GCP clusterscapi_gcp_get_cluster
- Get GCP cluster detailscapi_gcp_manage_network
- Manage GCP networks (placeholder)
vSphere
capi_vsphere_list_clusters
- List vSphere clusterscapi_vsphere_get_cluster
- Get vSphere cluster detailscapi_vsphere_manage_vms
- Manage vSphere VMs (placeholder)
Resources
The server exposes CAPI data through MCP resources:
capi://clusters
- List of all clusterscapi://clusters/{name}
- Specific cluster detailscapi://machines
- List of all machinescapi://providers
- Available infrastructure providers
Configuration
The server can be configured through environment variables:
KUBECONFIG
- Path to kubeconfig fileLOG_LEVEL
- Logging level (debug, info, warn, error)
Deployment
Docker
You can run the server in a Docker container:
FROM golang:1.24.4-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o mcp-capi
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY /app/mcp-capi .
EXPOSE 8080
CMD ["./mcp-capi", "serve", "--transport", "sse", "--http-addr", ":8080"]
Systemd Service
Create a systemd service for automatic startup:
[Unit]
Description=MCP CAPI Server
After=network.target
[Service]
Type=simple
User=capi
ExecStart=/usr/local/bin/mcp-capi serve
Environment=KUBECONFIG=/etc/kubernetes/admin.conf
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Development
Project Structure
mcp-capi/
āāā cmd/ # Command implementations
ā āāā root.go # Root Cobra command
ā āāā serve.go # Server command with multi-transport support
ā āāā version.go # Version command
ā āāā selfupdate.go # Self-update command
ā āāā doc.go # Package documentation
ā āāā *.go # Tool handlers and server logic
āāā pkg/ # Public packages
ā āāā capi/ # CAPI client and utilities
ā āāā tools/ # MCP tool implementations
ā āāā resources/ # MCP resource handlers
ā āāā prompts/ # MCP prompt definitions
āāā internal/ # Private packages
āāā docs/ # Documentation
āāā examples/ # Usage examples
Building
# Build for current platform
make build
# Build for multiple platforms
make release
# Run tests
make test
# Run with coverage
make test-coverage
Contributing
Please see for guidelines on how to contribute to this project.
License
This project is licensed under the Apache License 2.0 - see the file for details.
Issues and Support
- GitHub Issues: github.com/giantswarm/mcp-capi/issues
- Documentation:
Roadmap
See our GitHub Issues for the complete roadmap and planned features.