mirror of
https://github.com/chaitin/SafeLine.git
synced 2025-11-26 03:45:08 +08:00
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
|
|
"github.com/chaitin/SafeLine/mcp_server/internal/api"
|
|
"github.com/chaitin/SafeLine/mcp_server/internal/config"
|
|
"github.com/chaitin/SafeLine/mcp_server/internal/tools"
|
|
"github.com/chaitin/SafeLine/mcp_server/pkg/logger"
|
|
"github.com/chaitin/SafeLine/mcp_server/pkg/mcp"
|
|
)
|
|
|
|
func main() {
|
|
configPath := flag.String("config", "config.yaml", "path to config file")
|
|
flag.Parse()
|
|
|
|
if err := config.Load(*configPath); err != nil {
|
|
panic(fmt.Errorf("failed to load config: %v", err))
|
|
}
|
|
|
|
logConfig := config.GetLogger()
|
|
if err := logger.Init(&logger.Config{
|
|
Level: logConfig.Level,
|
|
FilePath: logConfig.FilePath,
|
|
Console: logConfig.Console,
|
|
Caller: logConfig.Caller,
|
|
Development: logConfig.Development,
|
|
}); err != nil {
|
|
panic(fmt.Errorf("failed to init logger: %v", err))
|
|
}
|
|
|
|
logger.With("base_url", config.GetAPI().BaseURL).Info("Initializing API service...")
|
|
if err := api.Init(config.GetAPI()); err != nil {
|
|
panic(fmt.Errorf("failed to init API service: %v", err))
|
|
}
|
|
|
|
logger.Info("Starting MCP Server...")
|
|
serverConfig := config.GetServer()
|
|
s := mcp.NewMCPServer(
|
|
serverConfig.Name,
|
|
serverConfig.Version,
|
|
serverConfig.Secret,
|
|
)
|
|
|
|
logger.Info("Registering tools...")
|
|
for _, tool := range tools.Tools() {
|
|
if err := tool.Register(s); err != nil {
|
|
logger.With("error", err).
|
|
Error("Failed to register tool")
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
addr := fmt.Sprintf("%s:%d", serverConfig.Host, serverConfig.Port)
|
|
logger.With("addr", addr).Info("Starting server")
|
|
if err := s.Start(addr); err != nil {
|
|
logger.With("error", err).
|
|
Error("Server failed to start")
|
|
panic(err)
|
|
}
|
|
}
|