package mcp import ( "crypto/rand" "encoding/hex" "sync" ) type SessionStore struct { mu sync.RWMutex m map[string]struct{} } func NewSessionStore() *SessionStore { return &SessionStore{m: make(map[string]struct{})} } func (s *SessionStore) Issue() string { b := make([]byte, 16) _, _ = rand.Read(b) id := hex.EncodeToString(b) s.mu.Lock() s.m[id] = struct{}{} s.mu.Unlock() return id } func (s *SessionStore) Valid(id string) bool { s.mu.RLock() defer s.mu.RUnlock() _, ok := s.m[id] return ok } func (s *SessionStore) Drop(id string) { s.mu.Lock() delete(s.m, id) s.mu.Unlock() }