You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

60 lines
1.3 KiB

package main
import (
_ "dm" // 达梦数据库驱动
"fmt"
"github.com/mark3labs/mcp-go/server"
"log"
"mcp-go-db/vConfig"
"mcp-go-db/vService"
"mcp-go-db/vTool"
"os"
)
func main() {
// 开发
// name := "dm://HY_ZGGL_FRAME:HY_ZGGL_FRAME@10.200.21.19:5296/DAMENG?schema=HY_ZGGL_FRAME"
// 部署
fmt.Println("程序名称:")
dsn := os.Args[1]
fmt.Printf("启动数据库服务...\n")
// 加载配置
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("数据库连接成功: %v\n", config.Database.DmDsn)
// 创建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")
}