${VAR:default} 语法进行环境变量注入。如果环境变量未设置,将使用默认值。
常见的做法是通过不同的 .env、.env.development、.env.prod 进行注入,当然也可以直接修改配置写死一个值。
基础配置
这里的 PID 和下面涉及的 PID 保持一致,用于服务管理和热重载功能。
存储配置
存储配置模块主要用于存储网关的代理配置信息。目前支持两种存储方式:db 存储
存到数据库,每个配置是一条记录,支持 SQLite3、PostgreSQL、MySQL
api 存储
通过 API 端点存储配置,允许使用外部配置管理系统
配置示例
通知配置
通知配置模块主要是用来当配置更新的时候如何让mcp-gateway 感知到更新并进行热重载而无需重启服务。
支持的通知方式
signal
通过发送操作系统信号量来通知,类似
kill -SIGHUP <pid> 或者 nginx -s reload 这种方式api
通过调用一个 API 的方式通知,
mcp-gateway 会监听一个独立的端口redis
通过 redis 的发布/订阅功能通知,适合单机或集群部署时使用
composite
组合通知,通过多种方式组合,默认
signal 和 api 一定会开启通知角色说明
sender(发送者)
sender(发送者)
负责发送通知,
apiserver 只能走这个模式receiver(接收者)
receiver(接收者)
负责接收通知,单机的
mcp-gateway 建议只走这个模式both(双向)
both(双向)
既是发送者又是接收者,集群部署的
mcp-gateway 可以走这个方式配置示例
会话存储配置
会话存储配置用于存储 MCP 中的会话信息。根据不同的部署场景,可以选择不同的存储方式:memory 存储
内存存储,适合单机部署(需注意,重启会失去会话信息)
redis 存储
Redis 存储,适合单机或集群部署,支持持久化
配置示例
Forward Headers 配置
Forward Headers 配置允许 MCP Gateway 将客户端请求中的 HTTP 头部转发到下游服务。此功能对于身份验证、请求追踪和自定义头部传播非常有用。为了向后兼容,Forward Headers 功能默认为禁用状态。通过在配置中设置
enabled: true 来启用此功能。功能特性
头部过滤
使用允许/忽略列表控制哪些头部被转发,支持大小写不敏感匹配
客户端头部
将客户端请求(tools/list 和 tools/call)中的头部转发到下游服务
参数头部
支持通过可配置的参数名称转发作为工具参数传递的头部
覆盖控制
选择是否覆盖现有头部或添加到现有头部
配置选项
头部过滤逻辑
过滤逻辑遵循基于优先级的方法:1
优先级检查
如果配置了
allow_headers(非空),它优先生效,ignore_headers 会被完全忽略2
允许列表模式
当设置
allow_headers 时,只有此列表中的头部会被转发,其他所有头部都被忽略3
忽略列表模式
当
allow_headers 为空时,ignore_headers 列表中的头部会被过滤掉,其他头部会被转发4
大小写敏感性
头部匹配遵循
case_insensitive 设置,同时适用于允许和忽略列表使用示例
示例 1: 只允许特定头部
Authorization、X-API-Key 和 X-Request-ID 头部会被转发。
示例 2: 阻止特定头部
Accept、Host、Cookie 和 User-Agent 外,所有头部都会被转发。
示例 3: 工具参数头部
custom_headers 参数传递头部:
环境变量
所有 forward headers 设置都可以通过环境变量进行配置:链路追踪(OpenTelemetry → Jaeger)
MCP Gateway 支持通过 OpenTelemetry 将链路追踪数据导出到 Jaeger。该功能可选,默认关闭。功能概览
- 入站 HTTP 请求通过 Gin 中间件自动打点(排除 /health_check)
- 下游 HTTP 调用自动透传 Trace 上下文
- 可选捕获下游请求的部分字段/Body 以及错误响应摘要,便于排障
配置示例
环境变量
本地启动 Jaeger
- 可使用项目内提供的 Compose 文件:
deploy/docker/jaeger/docker-compose.yml - 启动命令:
docker compose -f deploy/docker/jaeger/docker-compose.yml up - Jaeger UI: http://localhost:16686
示例截图


配置文件位置
默认情况下,配置文件应放置在以下位置:- 容器部署:
/app/configs/mcp-gateway.yaml - 二进制部署:
./configs/mcp-gateway.yaml
热重载机制
MCP Gateway 支持热重载配置,无需重启服务即可应用新的配置:1
配置更新检测
当配置发生变更时,通过配置的通知方式(signal、api、redis)触发重载
2
配置验证
重载前会验证新配置的合法性,确保服务稳定运行
3
平滑切换
验证通过后,平滑切换到新配置,不中断正在进行的连接
最佳实践
单机部署
单机部署
- 存储类型建议使用
db配合 SQLite - 通知类型使用
composite或signal - 会话存储可使用
memory或redis
集群部署
集群部署
- 存储类型使用
db配合 PostgreSQL 或 MySQL - 通知类型使用
redis或composite - 会话存储建议使用
redis
生产环境
生产环境
- 使用强密码保护 Redis 和数据库
- 定期备份配置数据
- 监控服务健康状态和性能指标
