main
 1package main
 2
 3import (
 4	"context"
 5	"flag"
 6	"fmt"
 7	"log"
 8	"os"
 9
10	"github.com/xlgmokha/mcp/pkg/signal"
11)
12
13func main() {
14	var (
15		signalPath = flag.String("signal-path", "", "Path to Signal application directory (auto-detected if not specified)")
16		help       = flag.Bool("help", false, "Show help information")
17	)
18	flag.Parse()
19
20	if *help {
21		fmt.Printf(`Signal MCP Server
22
23This server provides access to Signal Desktop database for reading conversations and messages.
24
25Usage: %s [options]
26
27Options:
28`, os.Args[0])
29		flag.PrintDefaults()
30		fmt.Print(`
31Examples:
32  # Auto-detect Signal installation
33  mcp-signal
34
35  # Specify custom Signal path
36  mcp-signal --signal-path ~/.config/Signal
37
38Tools:
39  - signal_list_conversations: List all conversations
40  - signal_search_messages: Search messages by text content
41  - signal_get_conversation: Get messages from a specific conversation
42  - signal_get_contact: Get contact details by ID/phone/name
43  - signal_get_message: Get specific message with attachments and reactions
44  - signal_list_attachments: List message attachments with metadata
45  - signal_get_stats: Show database statistics
46
47Prompts:
48  - signal-conversation: Analyze conversation history for insights
49  - signal-search: Search Signal messages with AI-powered context
50
51Security Notes:
52  - Requires access to Signal's encrypted database
53  - May require system keychain access for decryption
54  - Signal application should be closed for reliable database access
55
56For more information, visit: https://github.com/xlgmokha/mcp
57`)
58		return
59	}
60
61	server, err := signal.New(*signalPath)
62	if err != nil {
63		log.Fatalf("Failed to create Signal server: %v", err)
64	}
65
66	ctx := context.Background()
67	if err := server.Run(ctx); err != nil {
68		log.Fatalf("Server error: %v", err)
69	}
70}