${VAR:default} 语法进行环境变量注入。如果环境变量未设置,将使用默认值。
常见的做法是通过不同的 .env、.env.development、.env.prod 进行注入,当然也可以直接修改配置写死一个值。
日志配置
日志配置用于控制应用程序的日志输出行为:日志级别
支持 debug, info, warn, error 四个级别
输出格式
支持 json 结构化输出和 console 可读格式
文件轮转
自动管理日志文件大小和数量
堆栈跟踪
错误日志可包含详细的调用栈信息
国际化配置
国际化配置用于支持多语言界面:翻译文件路径应该包含各种语言的翻译文件,用于支持多语言用户界面。
聊天消息数据库配置
该配置主要针对后台的聊天消息存储的配置(当然这里是可以和代理配置存放在同一个数据库),主要用于存储 Web 界面中的聊天会话和消息数据。聊天消息数据库主要用于存储通过 Web 界面进行的 MCP 聊天记录,与网关代理配置的存储是分开的。
支持的数据库
目前支持 3 种数据库:SQLite3
适合开发环境和小规模部署
PostgreSQL
推荐用于生产环境
MySQL
传统关系型数据库选择
配置示例
网关代理存储配置
这里是用来存放网关代理配置的,也就是对应的从 MCP 到 API 映射的那个配置。 目前支持 2 种存储方式:db 存储
db 存储
存到数据库,每个配置是一条记录。目前支持三种数据库:SQLite3、PostgreSQL、MySQL
api 存储
api 存储
通过 API 端点存储配置,允许使用外部配置管理系统
revision_history_limit 参数控制系统保留的配置版本历史数量,有助于配置变更的回滚和审计。默认保留 10 个版本。配置示例
通知配置
通知配置模块主要是用来当配置更新的时候如何让mcp-gateway 感知到更新并进行热重载而无需重启服务。
支持的通知方式
signal
通过发送操作系统信号量来通知,类似
kill -SIGHUP <pid> 或者 nginx -s reload 这种方式api
通过调用一个 API 的方式通知,
mcp-gateway 会监听一个独立的端口redis
通过 redis 的发布/订阅功能通知,适合单机或集群部署时使用
composite
组合通知,通过多种方式组合,默认
signal 和 api 一定会开启通知角色
1
sender
发送者,负责发送通知,
apiserver 只能走这个模式2
receiver
接收者,负责接收通知,单机的
mcp-gateway 建议只走这个模式3
both
既是发送者又是接收者,集群部署的
mcp-gateway 可以走这个方式配置示例
超级管理员配置
超级管理员配置用于设置系统初始管理员账户,每次启动apiserver 会自动检测是否存在,若不存在会自动创建。
JWT 配置
JWT 配置用于设置 web 认证相关的参数:OAuth 登录配置
OAuth 配置用于支持第三方登录功能,目前支持Google 和 GitHub 登录。配置了对应的 client_id 和 client_secret 后,Web 界面会自动启用 OAuth 登录选项。
Google 登录
支持 Google 账户登录,需要在 Google Cloud Console 配置 OAuth 应用
GitHub 登录
支持 GitHub 账户登录,需要在 GitHub 创建 OAuth 应用
- 只有配置了对应的
client_id和client_secret才会启用相应的 OAuth 登录选项 - OAuth 登录与本地账户登录可以同时使用
- 首次通过 OAuth 登录的用户会自动创建账户
配置文件位置
默认情况下,配置文件应放置在以下位置:- 容器部署:
/app/configs/apiserver.yaml - 二进制部署:
./configs/apiserver.yaml