// Command server 启动 sundynix-mcp-go —— 第 5 层 Go I/O 型 MCP 工具微服务。 package main import ( "context" "log" "os" "os/signal" "syscall" sharedbus "github.com/sundynix/sundynix-shared/bus" "github.com/sundynix/sundynix-mcp-go/internal/mcp" "github.com/sundynix/sundynix-mcp-go/internal/search" ) func main() { natsURL := envOr("NATS_URL", "nats://localhost:4222") b, err := sharedbus.Connect(natsURL) if err != nil { log.Fatalf("[mcp_go] nats connect: %v", err) } defer b.Close() log.Printf("[mcp_go] connected %s", natsURL) engine := search.NewHybrid() // LLM Wiki 混合检索:Bleve + Milvus + Neo4j gw := mcp.NewGateway(b, engine) ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) defer stop() log.Println("[mcp_go] serving MCP over sundynix.tools.go.* (Ctrl-C to quit)") if err := gw.Serve(ctx); err != nil && err != context.Canceled { log.Fatalf("[mcp_go] exit: %v", err) } } func envOr(key, def string) string { if v := os.Getenv(key); v != "" { return v } return def }