配置指南#

本指南涵盖 Cloud Native MCP Server 的所有配置选项。

目录#

配置方法#

K8s MCP Server 支持三种配置方法(按优先级排序):

  1. 命令行参数 - 最高优先级
  2. 环境变量 - 中等优先级
  3. YAML 配置文件 - 最低优先级

配置优先级示例#

1
2
3
4
5
6
7
# 配置文件设置默认值
# 环境变量覆盖配置文件
# 命令行参数覆盖所有设置

./cloud-native-mcp-server \
  --config=config.yaml \
  --log-level=debug

服务器配置#

基本设置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
server:
  # 运行模式: sse | streamable-http
  # 推荐生产环境使用 streamable-http,兼容性优先可使用 sse
  mode: "sse"

  # 服务器监听地址
  addr: "0.0.0.0:8080"

  # HTTP 读取超时(秒)
  # 0 = 无超时(生产环境不推荐)
  # 推荐: 30-60 秒
  readTimeoutSec: 30

  # HTTP 写入超时(秒)
  # SSE 连接应设置为 0 以保持连接
  writeTimeoutSec: 0

  # HTTP 空闲超时(秒)
  # 默认: 60 秒
  idleTimeoutSec: 60

SSE 路径配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
server:
  ssePaths:
    # Kubernetes SSE 端点
    kubernetes: "/api/kubernetes/sse"

    # Grafana SSE 端点
    grafana: "/api/grafana/sse"

    # Prometheus SSE 端点
    prometheus: "/api/prometheus/sse"

    # Kibana SSE 端点
    kibana: "/api/kibana/sse"

    # Helm SSE 端点
    helm: "/api/helm/sse"

    # Alertmanager SSE 端点
    alertmanager: "/api/alertmanager/sse"

    # Elasticsearch SSE 端点
    elasticsearch: "/api/elasticsearch/sse"

    # OpenTelemetry SSE 端点
    opentelemetry: "/api/opentelemetry/sse"

    # Utilities SSE 端点
    utilities: "/api/utilities/sse"

    # 聚合所有服务的 SSE 端点
    aggregate: "/api/aggregate/sse"

Streamable-HTTP 路径配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
server:
  streamableHttpPaths:
    # Kubernetes Streamable-HTTP 端点
    kubernetes: "/api/kubernetes/streamable-http"

    # Grafana Streamable-HTTP 端点
    grafana: "/api/grafana/streamable-http"

    # Prometheus Streamable-HTTP 端点
    prometheus: "/api/prometheus/streamable-http"

    # Kibana Streamable-HTTP 端点
    kibana: "/api/kibana/streamable-http"

    # Helm Streamable-HTTP 端点
    helm: "/api/helm/streamable-http"

    # Alertmanager Streamable-HTTP 端点
    alertmanager: "/api/alertmanager/streamable-http"

    # Elasticsearch Streamable-HTTP 端点
    elasticsearch: "/api/elasticsearch/streamable-http"

    # OpenTelemetry Streamable-HTTP 端点
    opentelemetry: "/api/opentelemetry/streamable-http"

    # Utilities Streamable-HTTP 端点
    utilities: "/api/utilities/streamable-http"

    # 聚合所有服务的 Streamable-HTTP 端点
    aggregate: "/api/aggregate/streamable-http"

命令行参数#

参数描述默认值
--mode服务器模式 (sse, streamable-http)sse
--addr监听地址0.0.0.0:8080
--config配置文件路径config.yaml
--log-level日志级别 (debug, info, warn, error)info

环境变量#

变量描述默认值
MCP_MODE服务器模式sse
MCP_ADDR监听地址0.0.0.0:8080
MCP_LOG_LEVEL日志级别info

服务配置#

Kubernetes#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
kubernetes:
  # kubeconfig 文件路径
  # 如果为空,使用默认: $KUBECONFIG → ~/.kube/config → service account
  kubeconfig: ""

  # 单个 API 调用超时(秒)
  timeoutSec: 30

  # API 客户端每秒查询数 (QPS)
  qps: 100.0

  # API 客户端突发速率
  burst: 200

Prometheus#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
prometheus:
  # 启用/禁用 Prometheus 服务
  enabled: false

  # Prometheus 服务器地址
  # 格式: http://host:port 或 https://host:port
  address: "http://localhost:9090"

  # 请求超时(秒)
  timeoutSec: 30

  # Basic auth 用户名(可选)
  username: ""

  # Basic auth 密码(可选)
  password: ""

  # Bearer token 认证(可选,优先级高于 Basic Auth)
  bearerToken: ""

  # 跳过 TLS 证书验证
  # 生产环境不要使用!
  tlsSkipVerify: false

  # TLS 客户端证书文件路径(用于 mTLS 认证)
  tlsCertFile: ""

  # TLS 客户端密钥文件路径
  tlsKeyFile: ""

  # TLS CA 证书文件路径
  tlsCAFile: ""

Grafana#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
grafana:
  # 启用/禁用 Grafana 服务
  enabled: false

  # Grafana 服务器 URL
  # 格式: http://host:port 或 https://host:port
  url: "http://localhost:3000"

  # Grafana API Key(推荐)
  # 在 Grafana 中创建: Administration → API Keys
  apiKey: ""

  # Basic auth 用户名(API Key 的替代方案)
  username: ""

  # Basic auth 密码
  password: ""

  # 请求超时(秒)
  timeoutSec: 30

Kibana#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
kibana:
  # 启用/禁用 Kibana 服务
  enabled: false

  # Kibana 服务器 URL
  # 格式: http://host:port 或 https://host:port
  url: "https://localhost:5601"

  # Kibana API Key(推荐)
  # 在 Kibana 中创建: Stack Management → API Keys
  apiKey: ""

  # Basic auth 用户名(API Key 的替代方案)
  username: ""

  # Basic auth 密码
  password: ""

  # 请求超时(秒)
  timeoutSec: 30

  # 跳过 TLS 证书验证
  # 生产环境不要使用!
  skipVerify: false

  # Kibana 空间名称
  # 默认: "default"
  space: "default"

Helm#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
helm:
  # 启用/禁用 Helm 服务
  enabled: false

  # Helm 操作 kubeconfig 路径
  # 如果为空,使用与 Kubernetes 客户端相同的 kubeconfig
  kubeconfigPath: ""

  # Helm 操作默认命名空间
  namespace: "default"

  # 启用 Helm 调试模式
  debug: false

  # 仓库更新超时(秒)
  # 默认: 300 (5 分钟)
  # 国内环境推荐: 600-900
  timeoutSec: 300

  # 最大重试次数
  # 失败的仓库更新的重试次数
  # 默认: 3
  # 推荐: 3-5
  maxRetries: 3

  # 启用镜像
  # 用于加速 Helm 仓库拉取
  # 默认: false
  useMirrors: false

  # 自定义镜像映射
  # 格式: 原始仓库 URL -> 镜像 URL
  mirrors: {}

Elasticsearch#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
elasticsearch:
  # 启用/禁用 Elasticsearch 服务
  enabled: false

  # Elasticsearch 服务器地址(支持多节点高可用)
  addresses:
    - "http://localhost:9200"

  # 单个 Elasticsearch 服务器地址(addresses 的替代方案)
  # 当 addresses 为空时使用
  address: ""

  # Basic auth 用户名
  username: ""

  # Basic auth 密码
  password: ""

  # Bearer token 认证(可选,优先级高于 Basic Auth)
  bearerToken: ""

  # API Key 认证(可选,最高优先级)
  # 格式: id:api_key
  apiKey: ""

  # 请求超时(秒)
  timeoutSec: 30

  # 跳过 TLS 证书验证
  # 生产环境不要使用!
  tlsSkipVerify: false

  # TLS 客户端证书文件路径(用于 mTLS 认证)
  tlsCertFile: ""

  # TLS 客户端密钥文件路径
  tlsKeyFile: ""

  # TLS CA 证书文件路径
  tlsCAFile: ""

Alertmanager#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
alertmanager:
  # 启用/禁用 Alertmanager 服务
  enabled: false

  # Alertmanager 服务器地址
  # 格式: http://host:port 或 https://host:port
  address: "http://localhost:9093"

  # 请求超时(秒)
  timeoutSec: 30

  # Basic auth 用户名(可选)
  username: ""

  # Basic auth 密码(可选)
  password: ""

  # Bearer token 认证(可选,优先级高于 Basic Auth)
  bearerToken: ""

  # 跳过 TLS 证书验证
  # 生产环境不要使用!
  tlsSkipVerify: false

  # TLS 客户端证书文件路径(用于 mTLS 认证)
  tlsCertFile: ""

  # TLS 客户端密钥文件路径
  tlsKeyFile: ""

  # TLS CA 证书文件路径
  tlsCAFile: ""

OpenTelemetry#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
opentelemetry:
  # 启用/禁用 OpenTelemetry 服务
  enabled: false

  # OpenTelemetry Collector 地址
  # 格式: http://host:port 或 https://host:port
  address: "http://localhost:4318"

  # 请求超时(秒)
  timeoutSec: 30

  # Basic auth 用户名(可选)
  username: ""

  # Basic auth 密码(可选)
  password: ""

  # Bearer token 认证(可选,优先级高于 Basic Auth)
  bearerToken: ""

  # 跳过 TLS 证书验证
  # 生产环境不要使用!
  tlsSkipVerify: false

  # TLS 客户端证书文件路径(用于 mTLS 认证)
  tlsCertFile: ""

  # TLS 客户端密钥文件路径
  tlsKeyFile: ""

  # TLS CA 证书文件路径
  tlsCAFile: ""

Utilities#

1
2
3
utilities:
  # Utilities 服务始终启用
  enabled: true

认证配置#

API Key 认证#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
auth:
  # 启用/禁用认证
  enabled: false

  # 认证模式: apikey | bearer | basic
  # apikey: X-API-Key 简单 API 密钥认证
  # bearer: Bearer Token (JWT) 认证
  # basic: HTTP Basic Auth
  mode: "apikey"

  # API Key(用于 apikey 模式)
  # 最少 8 字符,推荐 16+ 字符
  apiKey: ""

  # Bearer token(用于 bearer 模式)
  # 最少 16 字符推荐(JWT token)
  bearerToken: ""

  # Basic Auth 用户名
  username: ""

  # Basic Auth 密码
  password: ""

  # JWT 密钥(用于 JWT 验证)
  jwtSecret: ""

  # JWT 算法 (HS256, RS256, etc.)
  jwtAlgorithm: "HS256"

认证环境变量#

变量描述
MCP_AUTH_ENABLED启用认证 (1, true, yes, on)
MCP_AUTH_MODE认证模式 (apikey, bearer, basic)
MCP_AUTH_API_KEYAPI key 或 bearer token
MCP_AUTH_USERNAMEBasic auth 用户名
MCP_AUTH_PASSWORDBasic auth 密码
MCP_AUTH_JWT_SECRETJWT 密钥
MCP_AUTH_JWT_ALGORITHMJWT 算法

日志配置#

1
2
3
4
5
6
7
logging:
  # 日志级别: debug | info | warn | error
  level: "info"

  # 使用 JSON 格式日志
  # 适用于日志聚合系统 (ELK, Splunk, etc.)
  json: false

日志级别说明#

  • debug: 详细的调试信息,包括所有请求和响应
  • info: 一般信息,包括重要操作和状态变化
  • warn: 警告信息,不影响功能但需要注意
  • error: 错误信息,功能受损

审计日志#

基本配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
audit:
  # 启用/禁用审计日志
  enabled: false

  # 审计日志级别: debug | info | warn | error
  level: "info"

  # 审计日志存储: stdout | file | database | all
  storage: "memory"

  # 日志格式: text | json
  # json: 结构化 JSON 格式,适合日志聚合
  # text: 人类可读的文本格式
  format: "json"

  # 最大查询结果数
  maxResults: 1000

  # 查询时间范围(天)
  timeRange: 90

文件存储配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
audit:
  storage: "file"
  file:
    # 日志文件路径
    path: "/var/log/cloud-native-mcp-server/audit.log"

    # 最大日志文件大小 (MB)
    maxSizeMB: 100

    # 最大备份文件数
    maxBackups: 10

    # 最大日志文件年龄(天)
    maxAgeDays: 30

    # 压缩轮转的日志文件
    compress: true

    # 内存存储的最大日志数
    maxLogs: 10000

数据库存储配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
audit:
  storage: "database"
  database:
    # 数据库类型: sqlite | postgresql | mysql
    type: "sqlite"

    # SQLite 数据库文件路径
    # 仅当 type="sqlite" 时使用
    sqlitePath: "/var/lib/cloud-native-mcp-server/audit.db"

    # PostgreSQL 连接字符串
    # 仅当 type="postgresql" 时使用
    # 格式: postgresql://user:password@host:port/dbname
    connectionString: ""

    # 数据库表名
    tableName: "audit_logs"

    # 最大记录数
    maxRecords: 100000

    # 清理间隔(小时)
    cleanupInterval: 24

查询 API 配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
audit:
  query:
    # 启用查询 API
    enabled: true

    # 每个查询的最大结果数
    maxResults: 1000

    # 最大时间范围(天)
    timeRange: 90

敏感数据掩码配置#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
audit:
  masking:
    # 启用掩码
    enabled: true

    # 要掩码的字段
    fields:
      - password
      - token
      - apiKey
      - secret
      - passwd
      - pwd
      - authorization

    # 掩码替换值
    maskValue: "***REDACTED***"

采样配置(高流量场景)#

1
2
3
4
5
6
7
8
audit:
  sampling:
    # 启用采样
    enabled: false

    # 采样率 (0-1)
    # 1.0 = 记录所有, 0.1 = 记录 10%
    rate: 1.0

服务和工具过滤#

1
2
3
4
5
6
7
8
9
enableDisable:
  # 禁用的服务(逗号分隔)
  disabledServices: []

  # 启用的服务(逗号分隔,覆盖禁用列表)
  enabledServices: []

  # 禁用的工具(逗号分隔)
  disabledTools: []

性能调优#

使用当前版本已支持的调优项:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
server:
  readTimeoutSec: 30
  writeTimeoutSec: 0
  idleTimeoutSec: 60

kubernetes:
  timeoutSec: 30
  qps: 100.0
  burst: 200

ratelimit:
  enabled: true
  requests_per_second: 100
  burst: 200

示例配置#

最小配置(仅 Kubernetes)#

1
2
3
4
5
6
7
8
9
server:
  mode: "sse"
  addr: "0.0.0.0:8080"

logging:
  level: "info"

kubernetes:
  kubeconfig: ""

完整监控栈#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server:
  mode: "sse"
  addr: "0.0.0.0:8080"

logging:
  level: "info"
  json: false

kubernetes:
  kubeconfig: ""

grafana:
  enabled: true
  url: "http://localhost:3000"
  apiKey: "${GRAFANA_API_KEY}"

prometheus:
  enabled: true
  address: "http://localhost:9090"

alertmanager:
  enabled: true
  address: "http://localhost:9093"

audit:
  enabled: true
  storage: "memory"
  format: "json"

生产环境配置(认证和缓存)#

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
server:
  mode: "sse"
  addr: "0.0.0.0:8080"
  readTimeoutSec: 30
  writeTimeoutSec: 0
  idleTimeoutSec: 60

logging:
  level: "info"
  json: true

kubernetes:
  kubeconfig: ""
  timeoutSec: 30
  qps: 100.0
  burst: 200

grafana:
  enabled: true
  url: "http://grafana:3000"
  apiKey: "${GRAFANA_API_KEY}"
  timeoutSec: 30

prometheus:
  enabled: true
  address: "http://prometheus:9090"
  timeoutSec: 30

auth:
  enabled: true
  mode: "apikey"
  apiKey: "${MCP_AUTH_API_KEY}"

audit:
  enabled: true
  storage: "database"
  database:
    type: "sqlite"
    sqlitePath: "/var/lib/cloud-native-mcp-server/audit.db"
    maxRecords: 100000
    cleanupInterval: 24
  format: "json"
  masking:
    enabled: true
    maskValue: "***REDACTED***"

配置验证#

服务器在启动时验证配置。常见验证错误:

缺少必需字段#

Error: auth API key is required for apikey mode

无效的认证模式#

Error: invalid auth mode: invalid (must be apikey, bearer, or basic)

缺少服务地址#

Error: grafana URL is required when service is enabled

环境变量替换#

可以在 YAML 配置文件中使用环境变量:

1
2
3
4
5
6
grafana:
  url: "${GRAFANA_URL}"
  apiKey: "${GRAFANA_API_KEY}"

auth:
  apiKey: "${MCP_AUTH_API_KEY}"

在启动服务器前设置环境变量:

1
2
3
4
5
export GRAFANA_URL="http://grafana:3000"
export GRAFANA_API_KEY="your-api-key"
export MCP_AUTH_API_KEY="your-mcp-key"

./cloud-native-mcp-server

测试配置#

在不启动服务器的情况下测试配置:

1
2
# 检查配置文件语法
./cloud-native-mcp-server --config=config.yaml --list=services --output=table

这将会:

  • 解析配置文件
  • 验证所有字段
  • 检查服务连通性
  • 报告任何错误

热重载#

不支持热重载。重启服务器以应用配置更改:

1
2
3
4
5
6
# 发送 SIGTERM 以优雅关闭
kill -TERM <pid>

# 服务器将完成进行中的请求并退出
# 然后使用新配置启动
./cloud-native-mcp-server --config=new-config.yaml