Skip to main content
Glama
FenrirDWolf

Omnichannel MCP

by FenrirDWolf
README.md
# Omnichannel MCP: The "One-to-Many" Merchant Rail

## What We Built
The Omnichannel MCP (Model Context Protocol) is an enterprise-grade AI dispatch system. It transforms a single natural language prompt into a synchronized distribution of localized marketing content across six channels (Email, WhatsApp, Push, Glance, PayU, Instagram). The system utilizes an MCP server to orchestrate LLM-powered generation (yielding 72 unique, culturally localized variants per deal) and dispatches them to a real-time Next.js Dashboard.

## Key Architecture Decisions
1. **Dual-Transport Synchronization**: Standard webhooks face payload size limits. We decoupled data transfer from signaling by persisting full heavy payloads (including rich Apple-grade HTML) to a **Redis Audit Trail**, then firing a lightweight "ping" to the UI. This ensures 100% atomic delivery and bypasses serverless 4KB limits.
2. **Resilience Engine (Exponential Backoff)**: To handle serverless cold-starts and network instability, the dispatcher uses strict retry logic with exponential backoff (2^n * 1000ms). Delivery attempts and recoveries are fully visible in the dashboard terminal.
3. **Zero-Config "Demo Mode"**: To ensure a frictionless evaluation experience, the MCP server gracefully falls back to a mocked "Zomato Gold" intelligence layer if API keys are omitted.

## How to Run It Locally
The system is optimized for a zero-friction setup. You do not need to clone the repository or install dependencies.

### Option A: Claude Desktop (Recommended)
1. **Update Config**
Open your `claude_desktop_config.json` and add the specific server configuration:

```json
{
  "mcpServers": {
    "grabon-omnichannel": {
      "command": "npx",
      "args": ["-y", "@santhoshramesh/grabon-mcp@1.1.5"],
      "env": {
        "GEMINI_API_KEY": "",
        "UPSTASH_REDIS_REST_URL": "",
        "UPSTASH_REDIS_REST_TOKEN": ""
      }
    }
  }
}
```
*(Leaving the keys blank safely triggers Demo Mode for instant evaluation).*

2. **Open the Dashboard**
Navigate to the Live Dashboard: **[omnichannel-mcp-dashboard.vercel.app](https://omnichannel-mcp-dashboard.vercel.app/)**

3. **Test the Integration**
In Claude Desktop, prompt: *"Distribute the Zomato Gold deal."* 
Watch the dashboard populate with real-time payload deliveries and variant matrices.

### Option B: Terminal / CLI Testing
If you prefer to test outside of Claude, you can instantly boot the server using the official MCP Inspector. Run this `npx` command in any terminal:

```bash
npx -y @modelcontextprotocol/inspector npx -y @santhoshramesh/grabon-mcp@1.1.5
```
*(Note: To test with live payload persistence, append your `GEMINI_API_KEY` and `UPSTASH` keys as environment variables before the command).*

## What I'd Do Differently With More Time
If given more time to scale this beyond an MVP, I would focus on:
1. **True Message Queuing**: Replace the lightweight `ntfy.sh` signaling with a production-grade broker like Apache Kafka or AWS SQS to handle millions of concurrent webhook dispatches with guaranteed ordering.
2. **End-to-End Testing**: Implement Cypress or Playwright test suites to automate the verification of all 72 variant UI renders across different viewports.
3. **A/B Test Analytics Integration**: Build an analytics pipeline to track the actual conversion rates of the "Urgency" vs. "Value" variants and feed that data back into the LLM context for continuous optimization.
4. **Authentication & Multi-Tenancy**: Wrap the dashboard in NextAuth to allow different marketing teams (e.g., Food vs. Travel) to have scoped, secure views of their specific deal distributions.