MCP Server for Kubernetes
Un servidor para gestionar clústeres de Kubernetes utilizando el Protocolo de Contexto de Modelo.
GitHubPrueba este MCPPatrocinado
Documentación
Servidor MCP de Kubernetes
Un servidor de Model Context Protocol (MCP) para Kubernetes, con soporte para streaming HTTP por fragmentos, indicaciones avanzadas de solución de problemas y cobertura completa de recursos/herramientas de Kubernetes.
Requisitos previos
- Node.js v18+ (para desarrollo/compilación local)
- Docker (para contenedorización)
- Acceso a un clúster de Kubernetes (AKS, EKS, GKE o local)
kubectlconfigurado (para pruebas y gestión de kubeconfig)
1. Compilar y ejecutar localmente
npm install
npm run build
MCP_TRANSPORT=http-chunked npm start
- De forma predeterminada, el servidor utiliza su kubeconfig local (
~/.kube/configoC:\Users\<username>\.kube\config). - Para usar un kubeconfig personalizado, establezca la variable de entorno
KUBECONFIG:export KUBECONFIG=/path/to/your/kubeconfig npm start
2. Contenerizar el servidor MCP
Compilar la imagen de Docker
docker build -t yourrepo/mcp-server:latest .
Enviar a su registro
docker push yourrepo/mcp-server:latest
3. Implementar en Kubernetes (AKS, EKS, GKE)
Editar el nombre de la imagen en k8s-mcp-server.yaml:
Reemplace yourrepo/mcp-server:latest con el nombre de su imagen.
Aplicar el manifiesto
kubectl apply -f k8s-mcp-server.yaml
- Esto crea un namespace, ServiceAccount, RBAC, Deployment y Service.
- De forma predeterminada, el Service es
ClusterIP(interno). Cámbielo aLoadBalanceroNodePortpara acceso externo.
4. Uso del servidor MCP
Endpoint HTTP por fragmentos
- El servidor expone
/call-tool-chunkeden el puerto 3000. - Ejemplo (usando
curl):curl -X POST http://<server-ip>:3000/call-tool-chunked \ -H "Content-Type: application/json" \ -d '{"name": "get_pods", "args": {"namespace": "default"}}' - La respuesta transmitirá el progreso y los resultados como líneas JSON.
Uso de indicaciones
- Para usar una indicación, envíe un POST a
/call-tool-chunkedcon el nombre de la indicación, por ejemplo:curl -X POST http://<server-ip>:3000/call-tool-chunked \ -H "Content-Type: application/json" \ -d '{"name": "k8s-pod-crashloop-diagnose", "args": {"podName": "my-pod", "namespace": "default"}}'
5. Kubeconfig y permisos
- El servidor MCP utiliza el kubeconfig disponible en el contenedor (predeterminado:
/root/.kube/config). - Para implementaciones dentro del clúster, utiliza el ServiceAccount y RBAC proporcionados en el manifiesto.
- Para usar un kubeconfig personalizado, móntelo como un secreto y actualice el Deployment (consulte las líneas comentadas en el manifiesto).
6. Notas de seguridad
- No exponga el servidor MCP a Internet público sin autenticación y TLS.
- Use políticas de red, firewalls o VPN para restringir el acceso.
- Use RBAC de privilegios mínimos para el ServiceAccount.
7. Extensión y personalización
- Agregue nuevas herramientas, recursos o indicaciones en el directorio
src/. - Recompile y vuelva a implementar la imagen de Docker después de realizar cambios.
8. Solución de problemas
- Revise los registros con
kubectl logs -n mcp-server deploy/mcp-server. - Asegúrese de que el ServiceAccount tenga los permisos necesarios para su caso de uso.
- Para pruebas locales, asegúrese de que su kubeconfig sea válido y tenga acceso al clúster.
Licencia
MIT