main
 1package main
 2
 3import (
 4	"context"
 5	"flag"
 6	"fmt"
 7	"log"
 8	"os"
 9	"strconv"
10
11	"github.com/xlgmokha/mcp/pkg/imap"
12)
13
14func main() {
15	var (
16		server   = flag.String("server", "", "IMAP server hostname (e.g., imap.gmail.com)")
17		username = flag.String("username", "", "IMAP username/email")
18		password = flag.String("password", "", "IMAP password or app password")
19		port     = flag.Int("port", 993, "IMAP port (default: 993 for TLS)")
20		useTLS   = flag.Bool("use-tls", true, "Use TLS connection (default: true)")
21		help     = flag.Bool("help", false, "Show help information")
22	)
23
24	flag.Parse()
25
26	if *help {
27		fmt.Println("IMAP MCP Server - Connect to IMAP email servers")
28		return
29	}
30
31	// Check environment variables
32	if envServer := os.Getenv("IMAP_SERVER"); envServer != "" {
33		*server = envServer
34	}
35	if envUsername := os.Getenv("IMAP_USERNAME"); envUsername != "" {
36		*username = envUsername
37	}
38	if envPassword := os.Getenv("IMAP_PASSWORD"); envPassword != "" {
39		*password = envPassword
40	}
41	if envPort := os.Getenv("IMAP_PORT"); envPort != "" {
42		if p, err := strconv.Atoi(envPort); err == nil {
43			*port = p
44		}
45	}
46	if envTLS := os.Getenv("IMAP_USE_TLS"); envTLS != "" {
47		if tls, err := strconv.ParseBool(envTLS); err == nil {
48			*useTLS = tls
49		}
50	}
51
52	// Validate required parameters
53	if *server == "" {
54		log.Fatal("Server is required. Use --server flag or IMAP_SERVER environment variable.")
55	}
56	if *username == "" {
57		log.Fatal("Username is required. Use --username flag or IMAP_USERNAME environment variable.")
58	}
59	if *password == "" {
60		log.Fatal("Password is required. Use --password flag or IMAP_PASSWORD environment variable.")
61	}
62
63	// Create and start server
64	imapServer := imap.New(*server, *username, *password, *port, *useTLS)
65
66	ctx := context.Background()
67	if err := imapServer.Run(ctx); err != nil {
68		log.Fatalf("Server failed: %v", err)
69	}
70}