main.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "os"
  6. "github.com/mark3labs/mcp-go/server"
  7. "fwh-toolbox-server/cache"
  8. "fwh-toolbox-server/config"
  9. "fwh-toolbox-server/database"
  10. "fwh-toolbox-server/logger"
  11. "fwh-toolbox-server/repositories"
  12. "fwh-toolbox-server/utils/filestore"
  13. "fwh-toolbox-server/cmd/mcp/tools"
  14. )
  15. func main() {
  16. // 加载配置(复用现有 config)
  17. cfg, err := config.LoadConfig()
  18. if err != nil {
  19. log.Fatalf("加载配置失败: %v", err)
  20. }
  21. // 初始化 logger
  22. logger.Init(cfg.App.AppEnv)
  23. defer logger.Log.Sync()
  24. // 初始化基础设施(与 HTTP Server 相同)
  25. if err := database.Init(&cfg.App); err != nil {
  26. log.Fatalf("数据库初始化失败: %v", err)
  27. }
  28. cache.Init(cfg.App.RedisAddr)
  29. repositories.PlaneWebHttpInit(&cfg.PlaneWebApi)
  30. // 创建 MCP Server
  31. s := server.NewMCPServer(
  32. "fwh-tools",
  33. "1.0.0",
  34. server.WithToolCapabilities(false),
  35. server.WithRecovery(),
  36. )
  37. // 初始化 MCP FileStore
  38. mcpFS := filestore.NewFileStore("mcp")
  39. tools.InitFileStore(mcpFS)
  40. // 注册所有 Tools
  41. tools.RegisterSiteInfoTools(s)
  42. tools.RegisterSimCardTools(s)
  43. tools.RegisterPowerFlowTools(s)
  44. tools.RegisterAlarmTools(s)
  45. tools.RegisterShutdownTools(s)
  46. tools.RegisterPlaneTools(s)
  47. tools.RegisterFileTools(s)
  48. // 启动 stdio 通信
  49. fmt.Fprintln(os.Stderr, "[fwh-mcp-server] started (stdio)")
  50. if err := server.ServeStdio(s); err != nil {
  51. log.Fatalf("[fwh-mcp-server] error: %v", err)
  52. }
  53. }