
Servidor MCP em .NET para Gerenciar Kubernetes com Claude
Eu cansei de alternar entre meu assistente de IA e um terminal toda vez que
precisava verificar o que estava rodando no meu cluster Kubernetes. Então eu construí
uma solução que remove completamente o terminal da equação.
Este é um servidor MCP escrito em .NET 9 que conecta Claude diretamente a
um cluster Kubernetes. Em vez de executar comandos kubectl, você apenas pergunta
para Claude o que deseja em inglês simples e ele descobre qual ferramenta chamar,
fala com o cluster e retorna dados reais.
O que é realmente o MCP
MCP significa Protocolo de Contexto de Modelo. É um padrão aberto criado por
Anthropic que permite que assistentes de IA se comuniquem com ferramentas e serviços externos de
uma maneira estruturada. Pense nisso como um sistema de plugins para IA - você constrói um
servidor que expõe ferramentas, e qualquer IA compatível com MCP pode chamar essas ferramentas
durante uma conversa.
A diferença de uma API comum é que a IA decide quando e como
usar as ferramentas com base no que você pergunta. Você não escreve código para chamar as
tools. Você apenas tem uma conversa.
O que eu construí
O servidor expõe oito ferramentas que Claude pode chamar:
ListPods - lista todos os pods em todos os namespaces ou em um específico, com
status e idade.
GetPodLogs - busca a saída recente de logs de qualquer pod, útil para depuração
sans abrir um terminal.
ListDeployments - mostra todos os deployments com suas contagens de réplicas desejadas versus prontas.
ScaleDeployment - escala um deployment para qualquer número de réplicas até um
límite máximo de 10, com a contagem anterior incluída na resposta para que você
sabia o que mudou.
RestartDeployment - aciona um reinício gradual atualizando a
annotation restartedAt, que é exatamente o que o kubectl rollout restart
faz nos bastidores.
GetDeploymentStatus - retorna o status detalhado do rollout e condições,
útil para verificar se um deployment foi concluído com sucesso.
ListNamespaces - lista todos os namespaces com status e idade.
GetNamespaceSummary - retorna pods, deployments e serviços para um
namespaces em uma única visualização.
Uma conversa real com o cluster
Aqui está como uma sessão real se parece. Eu abro o Claude Desktop e pergunto:
"Liste todos os pods no meu cluster Kubernetes"
Claude chama ListPods, meu servidor MCP fala com o cluster, e eu recebo de volta
algo como:
idp-platform/idp-platform-xxx - Executando - 1d
monitoring/prometheus-stack-grafana-xxx - Executando - 1d
monitoring/alertmanager-xxx - Executando - 1d
kube-system/coredns-xxx - Executando - 1d
Então eu pergunto:
"Escale o deployment idp-platform para 2 réplicas"
Claude chama ScaleDeployment com os parâmetros corretos, o cluster
atualiza, e eu recebo de volta uma confirmação de que escalou de 1 para 2
réplicas. Sem kubectl, sem terminal, sem troca de contexto.
Como funciona tecnicamente
O servidor é construído com o SDK ModelContextProtocol .NET. Cada classe de ferramenta
é decorada com McpServerToolType e cada método com
McpServerTool mais um atributo Description que informa à IA o que a
tool faz e quando usá-la.
[McpServerToolType]
public class DeploymentTools
{
[McpServerTool, Description("Escalar um deployment Kubernetes para um " +
"número especificado de réplicas.")]
public async Task<string> ScaleDeployment(
[Description("Nome do deployment a ser escalado.")]
string deploymentName,
[Description("Número de réplicas. Máximo 10.")]
int replicas,
[Description("Namespace. Padrão é default.")]
string namespaceName = "default")
{
// verificação de segurança, então escalar
}
}
As descrições são o que a IA lê para decidir qual ferramenta chamar.
Escrever boas descrições é a parte mais importante de construir um servidor MCP -
descrições vagas levam a chamadas de ferramentas erradas.
O servidor se comunica via stdio, o que significa que o Claude Desktop o inicia
como um processo filho e os dois se comunicam através de entrada e saída padrão.
Sem servidor HTTP, sem portas, sem regras de firewall.
Conectando ao Claude Desktop
Adicione isso ao seu arquivo de configuração do Claude Desktop em
%APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"kubernetes-manager": {
"command": "C:\\Program Files\\dotnet\\dotnet.exe",
"args": [
"run",
"--project",
"C:\\path\\to\\mcp-kubernetes-manager\\src\\Mcp.KubernetesManager"
]
}
}
}
Reinicie o Claude Desktop, vá para Configurações, e você verá o servidor
listado sob Servidores MCP locais com todas as oito
A implementação do MCP pode transformar a forma como empresas brasileiras gerenciam suas infraestruturas de TI. Com a capacidade de interagir com sistemas complexos usando linguagem natural, as empresas podem aumentar a eficiência operacional e reduzir a curva de aprendizado para novos usuários.


