45 lines
1.1 KiB
Go
45 lines
1.1 KiB
Go
// aio-mcp:aio-system 的自定义 MCP 服务器。
|
||
//
|
||
// 作为 AI Agent 的「手」,以 MCP 协议对外暴露工具。
|
||
// 默认以 streamable HTTP 传输运行(远程客户端访问),也可切换为
|
||
// stdio 供本地 Agent 直接拉起。
|
||
//
|
||
// 本文件只负责「装配 + 启动」,具体逻辑分别在:
|
||
// - internal/config :启动参数解析
|
||
// - internal/logging :日志初始化(固定 stderr)
|
||
// - internal/server :MCP 服务器装配与传输
|
||
// - internal/tools :工具注册表
|
||
package main
|
||
|
||
import (
|
||
"errors"
|
||
"flag"
|
||
"log/slog"
|
||
"os"
|
||
|
||
"aio-mcp/internal/config"
|
||
"aio-mcp/internal/logging"
|
||
"aio-mcp/internal/server"
|
||
)
|
||
|
||
// version 可用 -ldflags "-X main.version=..." 在构建时覆盖。
|
||
var version = "0.1.0"
|
||
|
||
func main() {
|
||
cfg, err := config.Parse(os.Args[1:], os.Stderr)
|
||
if err != nil {
|
||
// -h/--help 属于正常退出,参数错误才是异常退出。
|
||
if errors.Is(err, flag.ErrHelp) {
|
||
os.Exit(0)
|
||
}
|
||
os.Exit(2)
|
||
}
|
||
|
||
logging.Setup(cfg.LogLevel)
|
||
|
||
if err := server.Serve(server.New(version, cfg), cfg); err != nil {
|
||
slog.Error("aio-mcp exited with error", "err", err)
|
||
os.Exit(1)
|
||
}
|
||
}
|