Files
membank/aio-mcp/internal/config/config.go
张威33321 1a6ba86f04 0908
2026-09-08 20:36:25 +08:00

46 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package config 解析 aio-mcp 的启动配置(命令行参数)。
package config
import (
"flag"
"fmt"
"io"
)
// 支持的传输方式。
const (
TransportStdio = "stdio"
TransportHTTP = "http"
)
// Config 是 aio-mcp 的运行时配置。
type Config struct {
Transport string // MCP 传输方式stdio 或 http
Addr string // http 模式下的监听地址
LogLevel string // 日志级别debug / info / warn / error
DataDir string // 数据目录SQLite 库文件与工具产物的存放位置
}
// Parse 解析命令行参数。args 不含程序名(通常传 os.Args[1:]
// 用法与错误信息写到 out。
func Parse(args []string, out io.Writer) (*Config, error) {
cfg := &Config{}
fs := flag.NewFlagSet("aio-mcp", flag.ContinueOnError)
fs.SetOutput(out)
fs.StringVar(&cfg.Transport, "transport", TransportHTTP, "传输方式http默认streamable HTTP或 stdio本地 Agent 拉起)")
fs.StringVar(&cfg.Addr, "addr", "localhost:8000", "http 模式下的监听地址")
fs.StringVar(&cfg.LogLevel, "log-level", "info", "日志级别debug / info / warn / error")
fs.StringVar(&cfg.DataDir, "data-dir", "data", "数据目录SQLite 库文件与工具产物的存放位置")
if err := fs.Parse(args); err != nil {
return nil, err
}
if cfg.Transport != TransportStdio && cfg.Transport != TransportHTTP {
return nil, fmt.Errorf("未知 transport: %q支持: %s, %s", cfg.Transport, TransportStdio, TransportHTTP)
}
return cfg, nil
}