可观测性MCP堆栈

一个用于部署Grafana MCP和VictoriaMetrics MCP服务器的Kubernetes工作负载的Helm chart。

  • by withlin
  • Go Template
  • 本地部署
  • 更新于
在 GitHub 查看 withlin/mcp-stack

使用说明

可观察性MCP堆栈

雨伞头盔图部署官方 Grafana MCP 和 维多利亚指标MCP 服务器作为Kubernetes工作负载。

建筑

此图表遵循 依赖(伞)模式 --使用的方法相同 kube-prometheus-stack 和 loki-stack官方上游图表作为子部分包括在内:

子图 源 版本 端口
grafana-mcp 格拉法纳社区/掌舵人图表 0.7.2(应用程序版本0.11.1) 8000
mcp-victoriametrics 维多利亚指标社区/mcp维多利亚指标 0.1.0(应用程序版本1.15.0) 8080
observability-mcp/
├── Chart.yaml                          # Dependencies declared here
├── Chart.lock                          # Lock file (auto-generated)
├── values.yaml                         # Unified config for both subcharts
├── templates/
│   ├── _helpers.tpl
│   └── NOTES.txt
└── charts/
    ├── grafana-mcp/                    # Official Grafana MCP chart (from Helm repo)
    │   ├── Chart.yaml
    │   ├── values.yaml
    │   └── templates/
    └── mcp-victoriametrics/            # Official VM MCP chart (vendored from GitHub)
        ├── Chart.yaml
        ├── values.yaml
        └── templates/

先决条件

  • 库贝内特斯>=1.25
  • Helm>=3.x
  • 正在运行的Grafana实例(用于Grafana-mcp)
  • 正在运行的VictoriaMetrics实例或VictoriaMmetrics云帐户(适用于mcp-VictoriaMetrics)

快速开始

1.更新依赖关系

cd observability-mcp
helm dependency update .

2.安装

# Both MCP servers (self-hosted VictoriaMetrics)
helm install mcp ./observability-mcp \
  --set "grafana-mcp.grafana.apiKey=<GRAFANA_SA_TOKEN>" \
  --set "mcp-victoriametrics.vm.entrypoint=http://vmselect:8481" \
  --namespace mcp --create-namespace

# Both MCP servers (VictoriaMetrics Cloud)
helm install mcp ./observability-mcp \
  --set "grafana-mcp.grafana.apiKey=<GRAFANA_SA_TOKEN>" \
  --set "mcp-victoriametrics.vm.cloudAPIKey=<VMC_API_KEY>" \
  --namespace mcp --create-namespace

3.验证

kubectl get pods -n mcp
kubectl get svc -n mcp

4.接入(端口转发)

# Grafana MCP
kubectl port-forward svc/mcp-grafana-mcp 8000:8000 -n mcp

# VictoriaMetrics MCP
kubectl port-forward svc/mcp-mcp-victoriametrics 8080:8080 -n mcp

启用/禁用组件

每个子部分都可以独立切换:

# Only deploy Grafana MCP
grafana-mcp:
  enabled: true
mcp-victoriametrics:
  enabled: false
# Or via CLI
helm install mcp ./observability-mcp \
  --set "mcp-victoriametrics.enabled=false" \
  --set "grafana-mcp.grafana.apiKey=<TOKEN>"

配置

所有值都通过子部件名称作为键前缀传递给子部件。看 values.yaml 对于完整的注释配置。

Grafana MCP——必需设置

参数 说明
grafana-mcp.grafana.url Grafana实例URL(默认值: http://grafana:3000)
grafana-mcp.grafana.apiKey 服务帐户令牌(图表创建密钥)
grafana-mcp.grafana.apiKeySecret.name 或引用现有的秘密
grafana-mcp.grafana.apiKeySecret.key 现有密钥内的密钥

VictoriaMetrics MCP——必需设置

选择一种模式:

自托管的维多利亚指标:

参数 说明
mcp-victoriametrics.vm.entrypoint VM入口点URL(必需)
mcp-victoriametrics.vm.type single 或 cluster (默认值: single)
mcp-victoriametrics.vm.bearerToken 身份验证令牌(字符串或 valueFrom 地图)

维多利亚指标云:

参数 说明
mcp-victoriametrics.vm.cloudAPIKey 云API密钥(启用云模式)

工具访问控制

Grafana MCP

控制哪些MCP工具类别处于活动状态的两种互补机制:

黑名单模式 --通过以下方式禁用特定类别 --disable-<category>:

grafana-mcp:
  disabledCategories:
    - write        # read-only mode, no create/update/delete
    - admin        # hide team/role/permission tools
    - incident     # hide incident management tools

可用类别: search, datasource, incident, prometheus, loki, elasticsearch, alerting, dashboard, folder, oncall, asserts, sift, admin, pyroscope, navigation, proxied, annotations, rendering, cloudwatch, examples, clickhouse, searchlogs, runpanelquery, write (横向)。

白名单模式 --仅通过以下方式启用特定类别 extraArgs:

grafana-mcp:
  extraArgs:
    - --enabled-tools=search,datasource,prometheus,loki,dashboard

默认启用的类别: search, datasource, incident, prometheus, loki, alerting, dashboard, folder, oncall, asserts, sift, pyroscope, navigation, proxied, annotations, rendering.

默认情况下未启用: elasticsearch, admin, cloudwatch, clickhouse, examples, searchlogs, runpanelquery.

维多利亚指标MCP

通过环境变量禁用细粒度工具级别:

mcp-victoriametrics:
  mcp:
    mode: sse
    disable:
      tools:              # disable individual tools by name
        - some_tool_name
      resources: false    # set true to disable all MCP resources
    heartbeatInterval: 30s

安全(门卫/PSS限制)

这两个子部分都具有满足Kubernetes Pod安全标准的强化安全默认值 受限的 轮廓:

控制 值
runAsNonRoot true
runAsUser / runAsGroup 1000
fsGroup 1000
readOnlyRootFilesystem true
allowPrivilegeEscalation false
capabilities.drop [ALL]
seccompProfile.type RuntimeDefault
seLinuxOptions.level s0:c123,c456 (占位符--根据您的集群进行调整)

所有安全上下文都设置为 吊舱高度 和 集装箱液位.

备注: seLinuxOptions.level 是一个占位符。替换 s0:c123,c456 使用集群SELinux策略的实际MCS标签。

健康探测器

组件 活性 准备状态
端口上的grafana-mcp TCP套接字 mcp-http 端口上的TCP套接字 mcp-http
mcp胜利指标 HTTP GET /health/liveness HTTP获取 /health/readiness

资源

这两个子部分都有默认的资源请求和限制:

resources:
  requests:
    cpu: 100m
    memory: 128Mi
  limits:
    cpu: 500m
    memory: 512Mi

入口

两个子部件都支持Ingress(默认情况下禁用):

grafana-mcp:
  ingress:
    enabled: true
    className: nginx
    hosts:
      - host: mcp-grafana.example.com
        paths:
          - path: /
            pathType: Prefix
    tls:
      - secretName: mcp-grafana-tls
        hosts:
          - mcp-grafana.example.com

mcp-victoriametrics:
  ingress:
    enabled: true
    className: nginx
    hosts:
      - host: mcp-vm.example.com
        paths:
          - path: /
            pathType: ImplementationSpecific

VictoriaMetrics MCP还支持Gateway API HTTPRoute:

mcp-victoriametrics:
  route:
    enabled: true
    parentRefs:
      - name: my-gateway
        sectionName: http

升级上游图表

# 1. Edit Chart.yaml — bump the version
# 2. For grafana-mcp (from Helm repo):
helm dependency update ./observability-mcp

# 3. For mcp-victoriametrics (vendored):
#    Replace charts/mcp-victoriametrics/ with the new version from upstream
#    Then run:
helm dependency update ./observability-mcp