MCP多渠道交易分销商
完全符合规范 模型上下文协议(MCP) 将单个商家交易有效负载转换为 54个完全格式化、本地化的交易投放 跨越6个通道——同时。专为解决多渠道交易分销问题而设计。
📖 新来的? 跟随 安装指南 有关让服务器运行并连接到Claude Desktop的分步说明。
它做什么
一次工具调用→ 54 生产就绪的营销字符串。
User (Claude Desktop)
│
│ Natural language: "Distribute this deal..."
▼
┌──────────────────────────┐
│ MCP Server (index.ts) │ ← Receives tool call via stdio
│ distribute_deal() │
└──────────┬───────────────┘
│
┌──────┴──────┐
▼ ▼
┌──────────┐ ┌──────────────┐
│ OpenAI │ │ OpenAI │ ← 3 parallel API calls
│ English │ │ Hindi/Telugu │ (1 English + 2 regional)
│ 18 vars │ │ 36 vars raw │
└────┬─────┘ └──────┬───────┘
│ │
│ ▼
│ ┌──────────────┐
│ │ Sarvam-M │ ← 36 concurrent refinement calls
│ │ Polish each │
│ │ string │
│ └──────┬───────┘
│ │
└───────┬───────┘
▼
┌───────────────┐
│ 54 total │ → 54 production-ready marketing strings
│ variants │ (18 English, 18 Hindi, 18 Telugu)
└───────┬───────┘
│
▼
┌───────────────┐
│ Webhook Sim │ ← 54 concurrent simulated deliveries
│ Retry logic │ with exponential backoff
│ Delivery logs │
└───────────────┘
│
▼
┌───────────────┐
│ Resend API │ ← Optional independent tool (`send_real_email`)
│ Real delivery │ to actually send a generated email to an inbox
└───────────────┘总输出:54个字符串+54个交付日志
交通:当地标准
此MCP服务器使用 stdio传输 --Claude Desktop将其作为本地子进程启动,并通过stdin/stdout进行通信。一切都在你的机器上运行,不需要远程服务器。
未来扩展: 为了将其部署到整个团队使用(例如,50名营销人员使用一台共享服务器),可以将传输从stdio交换到 SSE/HTTP (MCP流式HTTP规范).
______________________________________________________________________
技术架构
技术栈
| 组件 | 技术 | 目的 |
|---|---|---|
| MCP服务器 | @modelcontextprotocol/sdk | 符合规范的stdio服务器可连接到Claude Desktop |
| 复制生成 | OpenAI gpt-4o-mini | 通过结构化输出生成18种结构化英语A/B变体 |
| 本地化 | Sarvam AI Sarvam-M (聊天完成) | 文化习惯的印地语和泰卢固语本地化(非直译) |
| 电子邮件传递 | 重新发送API | 生成副本的真实电子邮件传递 |
| 架构验证 | Zod | 对所有生成的内容进行运行时类型验证 |
| 运行时间 | tsx +TypeScript | 零构建执行,完全类型安全 |
项目结构
src/
├── index.ts # MCP server entry point — tool registration & orchestration
├── types.ts # Zod schemas & TypeScript types for all data structures
├── llm-generator.ts # OpenAI wrapper — generates 18 English variants via Structured Outputs
├── translator.ts # Sarvam-M chat wrapper — culturally idiomatic Hindi/Telugu localization
├── webhook-simulator.ts # Mock delivery engine with exponential backoff retry
└── email-service.ts # Resend API wrapper for actual email delivery6频道
| 通道 | 格式 | 约束 |
|---|---|---|
| 电子邮件 | HTML代码片段(主题+标题+CTA) | 主题≤60,标题≤80,CTA≤30个字符 |
| 纯文本消息 | ≤160个字符 | |
| 推送通知 | 标题+正文 | 标题≤50,正文≤100个字符 |
| 眩光锁定屏幕 | 独立卡 | ≤160个字符,必须在没有上下文的情况下工作 |
| PayU结账横幅 | 面向动作的文本 | ≤40个字符 |
| 带标签的标题 | ≤400个字符 |
三种A/B变体
每个频道都有3个心理上不同的变体:
- 紧迫性 --时间压力、稀缺性、FOMO驱动的信息传递
- 价值 --以节省为重点,合理的投资回报率,利益驱动的信息传递
- 社会认同 --人气信号、群体验证、信任驱动的消息传递
这些是 不 同义词互换——它们使用完全不同的心理框架。提示明确指示模型编写每个变体,就像是不同的文案作者编写的一样。
结构化输出
我们使用OpenAI 结构化输出 (response_format: { type: 'json_schema', strict: true })以确保LLM响应每次都与我们的精确Zod模式相匹配。这消除了:
- 关键套管不匹配(例如。,
Instagram对比instagram) - 缺少字段导致运行时验证失败
- 需要对LLM输出进行任何后处理或归一化
JSON模式在API调用中以内联方式定义 additionalProperties: false 在每个对象上,输出都是确定性结构的。
本土化战略
我们使用 Sarvam-M (Sarvam AI的多语言聊天模型) client.chat.completions() 印度语言的当地语调和感觉
- ❌ 直译: *“只有2次兑换!最低订单₹5000"* → *“只有2个可用的兑换! 最低订单 ₹5000”*
- ✅ 习语本地化:→ *“只能得到两次这个优惠! 订购₹5000并享受🔥"*
每种语言都有自己详细的文化指导提示,很少有镜头示例:
- 印地语:具有孟买广告公司活力的印度式英语,随意的“小甜甜/小甜甜”语气,WhatsApp风格的俚语
- 泰卢固语海得拉巴的口语风格,休闲表达式,如“奥雷”,“如果你错过了你的卡尔玛”,自然英语混合
所有54个本地化调用(6个变体×每个9个字段)通过以下方式同时运行 Promise.all 以获得最佳性能。
Webhook模拟
54个格式化字符串中的每一个都被分派到模拟真实交付的模拟webhook端点:
- 20%随机故障率 模拟网络问题
- 指数回退重试 (每次交付最多3次尝试,延迟2^n×100ms)
- 交货报告 每个通道的成功/失败状态和尝试次数
- 所有54个调度通过以下方式同时运行
Promise.all
______________________________________________________________________
设置
有关详细的分步演练(包括故障排除),请参阅 SETUP_GUIDE.md.
