package main import ( _ "dm" // 达梦数据库驱动 "flag" "fmt" "github.com/mark3labs/mcp-go/server" "log" "mcp-go-db/vConfig" "mcp-go-db/vService" "mcp-go-db/vTool" ) func main() { // 开发 // name := "dm://HY_ZGGL_FRAME:HY_ZGGL_FRAME@10.200.21.19:5296/DAMENG?schema=HY_ZGGL_FRAME" // 部署 var dsn string flag.StringVar(&dsn, "dsn", "dm://usr:pwd@ip:port/db?schema=name", "服务连接信息") // 必须调用 flag.Parse() 来解析命令行参数 flag.Parse() fmt.Printf("启动数据库服务...\n%v\n", dsn) // 加载配置 config, err := vConfig.LoadConfig(dsn) if err != nil { log.Fatalf("配置文件加载失败: %v", err) } // 初始化数据库连接 dbSvc, err := vService.NewDMDBService(config.Database.DmDsn) if err != nil { fmt.Printf("数据库连接失败: %v\n", err) return } defer func(dbSvc *vService.DMDBService) { err := dbSvc.Close() if err != nil { log.Fatalf("发生异常: %v", err) } }(dbSvc) fmt.Printf("数据库连接成功...\n") // 创建MCP服务器 s := server.NewMCPServer( "数据库服务", "1.0.0", server.WithResourceCapabilities(true, true), server.WithLogging(), server.WithRecovery(), ) // 添加数据库工具 vTool.Run(s, dbSvc, config) // 启动MCP服务器 if err := server.ServeStdio(s); err != nil { fmt.Printf("服务器错误: %v\n", err) } fmt.Printf("服务已停止\n") }