Skip to main content
Glama
aegntic

Obsidian Elite RAG MCP Server

listmonk-service.ts•2.16 kB
import { ListmonkClient } from "./listmonk-client.js"; export class ListmonkService { private client?: ListmonkClient; private listIds?: { newsletter: number; updates: number }; private mockMode: boolean; constructor() { this.mockMode = process.env.MOCK_EMAIL_SERVICE === "true"; if (process.env.LISTMONK_URL && !this.mockMode) { this.client = new ListmonkClient({ baseUrl: process.env.LISTMONK_URL || "http://localhost:9000", username: process.env.LISTMONK_USER || "aegnt_catface", password: process.env.LISTMONK_PASSWORD || "LMAEp@ssWrd11:11" }); } } async addSubscriber(data: { email: string; name: string; lists: string[]; metadata?: Record<string, any>; }): Promise<void> { if (this.mockMode) { console.log("đź“§ MOCK: Adding subscriber to Listmonk"); console.log(` Email: ${data.email}`); console.log(` Name: ${data.name}`); console.log(` Lists: ${data.lists.join(", ")}`); return; } if (!this.client) { console.warn("Listmonk not configured, skipping subscriber addition"); return; } try { // Ensure lists exist if (!this.listIds) { this.listIds = await this.client.ensureLists(); } // Map list names to IDs const listNumbers: number[] = []; if (data.lists.includes("newsletter")) { listNumbers.push(this.listIds.newsletter); } if (data.lists.includes("product-updates")) { listNumbers.push(this.listIds.updates); } // Create subscriber await this.client.createSubscriber({ email: data.email, name: data.name, status: "enabled", lists: listNumbers, attribs: { source: "aegntic-mcp", tier: data.metadata?.tier || "free", registered_at: new Date().toISOString(), ...data.metadata } }); console.log(`âś… Added ${data.email} to Listmonk`); } catch (error) { console.error("Failed to add subscriber to Listmonk:", error); // Don't throw - email list addition shouldn't break registration } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aegntic/aegntic-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server