Kubernetes MCP Server 是一个模型上下文协议(MCP)服务器,它为调试和检查提供了对 Kubernetes 资源的安全、只读访问。该服务器在设计时充分考虑了安全性,可在不具备修改功能的情况下,提供全面的集群可见性。
https://github.com/user-attachments/assets/89df70b0-65d1-461c-b4ab-84b2087136fa
go install github.com/kkb0318/kubernetes-mcp@latest
安装完成后,二进制文件将位于 $GOPATH/bin/kubernetes-mcp (若未设置 GOPATH,则位于 $HOME/go/bin/kubernetes-mcp)。
git clone https://github.com/kkb0318/kubernetes-mcp.git
cd kubernetes-mcp
go build -o kubernetes-mcp .
list_resources:使用高级选项列出并过滤 Kubernetes 资源。describe_resource:获取特定资源的详细信息。get_pod_logs:使用复杂的过滤功能检索 Pod 日志。list_events:列出并过滤 Kubernetes 事件,用于调试和监控。list_contexts:从 kubeconfig 文件中列出所有可用的 Kubernetes 上下文。将服务器添加到 MCP 配置中:
自动使用 ~/.kube/config:
{
"mcpServers": {
"kubernetes": {
"command": "/path/to/kubernetes-mcp"
}
}
}
{
"mcpServers": {
"kubernetes": {
"command": "/path/to/kubernetes-mcp",
"env": {
"KUBECONFIG": "/path/to/your/kubeconfig"
}
}
}
}
⚠️ 重要提示
请将
/path/to/kubernetes-mcp替换为实际的二进制文件路径。
# 使用默认 kubeconfig (~/.kube/config)
./kubernetes-mcp
# 使用自定义 kubeconfig 路径
KUBECONFIG=/path/to/your/kubeconfig ./kubernetes-mcp
⚠️ 重要提示
请确保对要检查的 Kubernetes 资源具有适当的读取权限。
list_resources使用高级功能列出并过滤 Kubernetes 资源。
| 参数 | 类型 | 描述 |
|---|---|---|
context |
可选 | kubeconfig 中的 Kubernetes 上下文名称(留空则使用当前上下文) |
kind |
必需 | 资源类型(Pod、Deployment、Service 等),或使用 "all" 进行发现 |
groupFilter |
可选 | 按 API 组子字符串过滤特定项目的资源 |
namespace |
可选 | 目标命名空间(默认为所有命名空间) |
labelSelector |
可选 | 按标签过滤(例如,"app=nginx") |
fieldSelector |
可选 | 按字段过滤(例如,"metadata.name=my-pod") |
limit |
可选 | 返回的最大资源数量 |
timeoutSeconds |
可选 | 请求超时时间(默认:30 秒) |
showDetails |
可选 | 返回完整的资源对象,而不是摘要 |
示例:
// 列出带有标签选择器的 Pod
{
"kind": "Pod",
"namespace": "default",
"labelSelector": "app=nginx"
}
// 列出特定集群上下文中的 Pod
{
"kind": "Pod",
"context": "production-cluster",
"namespace": "default"
}
// 发现 FluxCD 资源
{
"kind": "all",
"groupFilter": "flux"
}
describe_resource获取特定 Kubernetes 资源的详细信息。
| 参数 | 类型 | 描述 |
|---|---|---|
context |
可选 | kubeconfig 中的 Kubernetes 上下文名称(留空则使用当前上下文) |
kind |
必需 | 资源类型(Pod、Deployment 等) |
name |
必需 | 资源名称 |
namespace |
可选 | 目标命名空间 |
示例:
{
"kind": "Pod",
"name": "nginx-pod",
"namespace": "default"
}
get_pod_logs使用复杂的过滤选项检索 Pod 日志。
| 参数 | 类型 | 描述 |
|---|---|---|
context |
可选 | kubeconfig 中的 Kubernetes 上下文名称(留空则使用当前上下文) |
name |
必需 | Pod 名称 |
namespace |
可选 | Pod 命名空间(默认为 "default") |
container |
可选 | 特定容器名称 |
tail |
可选 | 从末尾开始的行数(默认:100) |
since |
可选 | 持续时间(例如,"5s"、"2m"、"3h") |
sinceTime |
可选 | RFC3339 时间戳 |
timestamps |
可选 | 在输出中包含时间戳 |
previous |
可选 | 获取上一个容器实例的日志 |
示例:
{
"name": "nginx-pod",
"namespace": "default",
"tail": 50,
"since": "5m",
"timestamps": true
}
list_events使用高级过滤选项列出并过滤 Kubernetes 事件,用于调试和监控。
| 参数 | 类型 | 描述 |
|---|---|---|
context |
可选 | kubeconfig 中的 Kubernetes 上下文名称(留空则使用当前上下文) |
namespace |
可选 | 目标命名空间(留空则为所有命名空间) |
object |
可选 | 按对象名称过滤(例如,Pod 名称、Deployment 名称) |
eventType |
可选 | 按事件类型过滤:"Normal" 或 "Warning"(不区分大小写) |
reason |
可选 | 按事件原因过滤(例如,"Pulled"、"Failed"、"FailedScheduling") |
since |
可选 | 持续时间(例如,"5s"、"2m"、"1h") |
sinceTime |
可选 | RFC3339 时间戳(例如,"2025-06-20T10:00:00Z") |
limit |
可选 | 返回的最大事件数量(默认:100) |
timeoutSeconds |
可选 | 请求超时时间(默认:30 秒) |
示例:
// 列出最近的警告事件
{
"eventType": "Warning",
"since": "30m"
}
// 列出特定 Pod 的事件
{
"object": "nginx-pod",
"namespace": "default"
}
// 列出调度失败的事件
{
"reason": "FailedScheduling",
"limit": 50
}
list_contexts从 kubeconfig 文件中列出所有可用的 Kubernetes 上下文。
参数: 无 - 此工具不接受任何参数。
示例响应:
{
"contexts": [
{
"name": "production-cluster",
"is_current": false
},
{
"name": "staging-cluster",
"is_current": true
},
{
"name": "development-cluster",
"is_current": false
}
],
"current_context": "staging-cluster",
"total": 3
}
用例: 非常适合多集群工作流,您可以:
通过上下文切换,可无缝地与多个 Kubernetes 集群协作:
context 参数,用于指定要查询的集群。多集群示例:
// 查询生产集群
{
"kind": "Pod",
"context": "production-cluster",
"namespace": "default"
}
// 获取暂存环境中的 Pod 日志
{
"name": "api-server",
"context": "staging-cluster",
"namespace": "api"
}
// 跨环境比较资源(使用多次调用)
{
"kind": "Deployment",
"context": "production-cluster",
"namespace": "app"
}
可自动发现并与集群中的任何 CRD 协作。只需在 list_resources 或 describe_resource 工具中使用 CRD 的 Kind 名称即可。
使用 groupFilter 参数按 API 组子字符串发现资源:
| 过滤器 | 发现的资源 | 示例 |
|---|---|---|
"flux" |
FluxCD 资源 | HelmReleases、Kustomizations、GitRepositories |
"argo" |
ArgoCD 资源 | Applications、AppProjects、ApplicationSets |
"istio" |
Istio 资源 | VirtualServices、DestinationRules、Gateways |
"cert-manager" |
cert-manager 资源 | Certificates、Issuers、ClusterIssuers |
该服务器在设计时将安全作为首要考虑因素:
我们欢迎贡献!请确保所有更改都保持服务器的只读性质,并包含适当的测试。
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。