Kubernetes mcp(千码)
如何在kilocode中设置Kubernetes MCP
在KiloCode中设置Kubernetes MCP服务器
本指南提供了在KiloCode工作区中设置本地Kubernetes MCP服务器的分步说明,允许您通过AI辅助命令管理Kubernetes集群。
先决条件
- 已安装Node.js和npm
- 访问npm注册表(@modelcontextprotocol/sdk可能需要IT批准)
- kubectl已配置并连接到Kubernetes集群
- KiloCode工作区
步骤1:创建MCP服务器目录结构
mkdir -p mcp/kubernetes-server/src第二步:创建package.json
创建 mcp/kubernetes-server/package.json 内容如下:
{
"name": "kubernetes-server",
"version": "0.1.0",
"type": "module",
"scripts": {
"build": "tsc && chmod +x build/index.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^0.4.0",
"zod": "^3.22.4"
},
"devDependencies": {
"@types/node": "^20.0.0",
"typescript": "^5.0.0"
}
}步骤3:创建tsconfig.json
创建 mcp/kubernetes-server/tsconfig.json 内容如下:
{
"compilerOptions": {
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "node",
"outDir": "./build",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "build"]
}步骤4:创建服务器实现
创建 mcp/kubernetes-server/src/index.ts 内容如下:
#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { execSync } from "child_process";
// Create an MCP server
const server = new McpServer({
name: "kubernetes-server",
version: "0.1.0"
});
// Tool for getting pods
server.tool(
"get_pods",
{
namespace: z.string().optional().describe("Namespace to list pods from"),
selector: z.string().optional().describe("Label selector"),
output: z.string().optional().describe("Output format (json, yaml, wide, etc.)")
},
async ({ namespace, selector, output = "wide" }) => {
try {
let cmd = `kubectl get pods`;
if (namespace) cmd += ` -n ${namespace}`;
if (selector) cmd += ` -l ${selector}`;
cmd += ` -o ${output}`;
const result = execSync(cmd, { encoding: 'utf8' });
return {
content: [{ type: "text", text: result }]
};
} catch (error: any) {
return {
content: [{ type: "text", text: `Error: ${error.message}` }],
isError: true
};
}
}
);
// Tool for describing a pod
server.tool(
"describe_pod",
{
name: z.string().describe("Pod name"),
namespace: z.string().optional().describe("Namespace")
},
async ({ name, namespace }) => {
try {
let cmd = `kubectl describe pod ${name}`;
if (namespace) cmd += ` -n ${namespace}`;
const result = execSync(cmd, { encoding: 'utf8' });
return {
content: [{ type: "text", text: result }]
};
} catch (error: any) {
return {
content: [{ type: "text", text: `Error: ${error.message}` }],
isError: true
};
}
}
);
// Tool for getting logs
server.tool(
"logs",
{
name: z.string().describe("Pod name"),
namespace: z.string().optional().describe("Namespace"),
container: z.string().optional().describe("Container name"),
tail: z.number().optional().describe("Number of lines to tail")
},
async ({ name, namespace, container, tail }) => {
try {
let cmd = `kubectl logs ${name}`;
if (namespace) cmd += ` -n ${namespace}`;
if (container) cmd += ` -c ${container}`;
if (tail) cmd += ` --tail=${tail}`;
const result = execSync(cmd, { encoding: 'utf8' });
return {
content: [{ type: "text", text: result }]
};
} catch (error: any) {
return {
content: [{ type: "text", text: `Error: ${error.message}` }],
isError: true
};
}
}
);
// Tool for getting services
server.tool(
"get_services",
{
namespace: z.string().optional().describe("Namespace"),
output: z.string().optional().describe("Output format")
},
async ({ namespace, output = "wide" }) => {
try {
let cmd = `kubectl get services`;
if (namespace) cmd += ` -n ${namespace}`;
cmd += ` -o ${output}`;
const result = execSync(cmd, { encoding: 'utf8' });
return {
content: [{ type: "text", text: result }]
};
} catch (error: any) {
return {
content: [{ type: "text", text: `Error: ${error.message}` }],
isError: true
};
}
}
);
// Start the server
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('Kubernetes MCP server running on stdio');步骤5:安装依赖项
导航到服务器目录并安装依赖项:
cd mcp/kubernetes-server
npm install注: 如果遇到403错误,请联系您的IT管理员,以允许访问npmjs.org上的@modelcontextprotocol/sdk包。
步骤6:构建服务器
编译TypeScript代码:
npm run build步骤7:配置KiloCode MCP设置
更新 .kilocode/mcp.json 在工作区根目录中包含本地服务器:
{
"mcpServers": {
"kubernetes-mcp-server": {
"command": "node",
"args": ["mcp/kubernetes-server/build/index.js"]
}
}
}步骤8:验证设置
重新启动KiloCode或重新加载窗口以加载新的MCP服务器。现在,您可以使用以下命令:
- “获取顾问命名空间中的所有Pod”
- “描述顾问服务舱”
- “显示特定pod的日志”
- “列出群集中的服务”
故障排除
- 403 npm错误: 阻止包访问的安全策略
- 构建失败: 确保安装了TypeScript和依赖项
- MCP未加载: 检查.kilocode/mcp.json语法和路径
可用工具
get_pods:列出带有可选命名空间和标签过滤器的Poddescribe_pod:获取详细的pod信息logs:检索容器日志get_services:列出命名空间中的服务
