diff --git a/internal/config/config.go b/internal/config/config.go index e63440a..ada24b6 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -42,6 +42,7 @@ type Config struct { Jobs JobsConfig `mapstructure:"jobs"` Notify NotifyConfig `mapstructure:"notify"` Acp AcpConfig `mapstructure:"acp"` + MCP MCPConfig `mapstructure:"mcp"` } // HTTPConfig 描述 HTTP 服务监听参数。 @@ -191,6 +192,20 @@ type AcpConfig struct { ShutdownGrace time.Duration `mapstructure:"shutdown_grace"` } +// MCPConfig 控制 MCP 模块的开关、对外 URL(注入 ACP 子进程 env)、system token TTL 与速率限制。 +type MCPConfig struct { + Enabled bool `mapstructure:"enabled"` + PublicURL string `mapstructure:"public_url"` + SystemTokenTTL time.Duration `mapstructure:"system_token_ttl"` + RateLimit MCPRateLimitCfg `mapstructure:"rate_limit"` +} + +// MCPRateLimitCfg 控制 token bucket 容量。两层独立桶:per-token + 全局。 +type MCPRateLimitCfg struct { + PerTokenPerMinute int `mapstructure:"per_token_per_minute"` + GlobalPerMinute int `mapstructure:"global_per_minute"` +} + // Load 从(按优先级递增)默认值 → 配置文件(如有)→ 环境变量 加载配置。 // configFile 可为空字符串,仅用环境变量。 func Load(configFile string) (*Config, error) { @@ -253,6 +268,11 @@ func Load(configFile string) (*Config, error) { v.SetDefault("acp.event_truncate_field_bytes", 4096) v.SetDefault("acp.event_retention_days", 7) v.SetDefault("acp.shutdown_grace", "30s") + v.SetDefault("mcp.enabled", true) + v.SetDefault("mcp.public_url", "http://localhost:8080/mcp") + v.SetDefault("mcp.system_token_ttl", "24h") + v.SetDefault("mcp.rate_limit.per_token_per_minute", 100) + v.SetDefault("mcp.rate_limit.global_per_minute", 1000) if configFile != "" { v.SetConfigFile(configFile)