package mcpserver import ( "fmt" "os" "strings" "github.com/modelcontextprotocol/go-sdk/mcp" "isphere-ai-bridge/internal/helperclient" "isphere-ai-bridge/internal/isphere" "isphere-ai-bridge/internal/tools" ) const ( ServerName = "isphere-ai-bridge" ServerTitle = "iSphere AI Bridge" ServerVersion = "0.1.0" EnvPacketLogFileKey = "ISPHERE_PACKET_LOG_FILE" ) func NewServer() *mcp.Server { return NewServerWithReceiveSource(isphere.EncryptedPacketLogSource{}) } func NewServerFromEnv() (*mcp.Server, error) { var source tools.ReceiveMessagesSource = isphere.EncryptedPacketLogSource{} packetLogFile := strings.TrimSpace(os.Getenv(EnvPacketLogFileKey)) if packetLogFile != "" { loaded, err := isphere.LoadEncryptedPacketLogSourceFromFile(packetLogFile) if err != nil { return nil, fmt.Errorf("configure %s: %w", EnvPacketLogFileKey, err) } source = loaded } return NewServerWithReceiveSource(source), nil } func NewServerWithReceiveSource(source tools.ReceiveMessagesSource) *mcp.Server { server := mcp.NewServer(&mcp.Implementation{ Name: ServerName, Title: ServerTitle, Version: ServerVersion, }, nil) tools.RegisterWinHelperTools(server, helperclient.Client{}) tools.RegisterISphereReadTools(server, source) return server }