Token导航 LogoToken导航TokenDH.com
Resend Streamable MCP Server logo
办公协作未说明官方级别未说明来源级核验

Resend Streamable MCP Server

MCP Server

Resend MCP Server是一个用于通过Resend API进行电子邮件和新闻通讯管理的流式HTTP服务器,支持批量联系人管理、分段发送和活动跟踪。

工具数

0

提示词数

0

GitHub Stars

5

资源数

0
批量操作TypeScriptClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

iceener

提供方

iceener

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

重新发送MCP服务器

可流式HTTP MCP服务器,用于通过以下方式管理电子邮件和时事通讯 重发.

作者 过度

\[!警告\] 此服务器允许AI代理访问您的电子邮件发送功能。语言模型可能会出错、误解指令或发送意外的电子邮件。始终: - 确保您使用此MCP的客户端要求您在使用前查看并确认该操作。 - 先用小段进行测试 - 广播始终被安排(至少提前5分钟),因此如果需要,您可以取消(默认为5分钟) - 集 RESEND_DEFAULT_FROM 发送到已验证的发件人地址

动机

传统的电子邮件API需要知道确切的ID、段结构和API的怪癖。此服务器的设计使AI代理可以:

  • 发送新闻通讯 --以适当的格式广播到片段
  • 管理订阅者 --批量添加、更新、删除联系人
  • 使用人类标识符 --段名称和电子邮件,而不是UUID
  • 处理格式化 --自动多部分电子邮件(HTML+纯文本)
  • 跟踪活动 --查看交货状态,取消预定发送

结果:一个代理可以可靠地管理您的时事通讯,而无需您触摸重新发送仪表板。

特性

  • 联系人 --添加、更新、删除、搜索联系人(可批量处理,每次通话最多100个)
  • 片段 --创建、列出、删除分段和管理成员资格
  • 发送 --个人电子邮件或向细分市场广播
  • 活动 --查看历史记录、检查交货状态、取消计划
  • 模板 --列出带有变量的可用模板
  • 订阅 --主题选择加入/选择退出管理
  • 多部分电子邮件 --自动生成HTML+纯文本以获得最佳交付效果
  • 双运行时 --Node.js/Bun或Cloudflare Workers

设计原则

  • LLM友好:面向任务的工具,而不是1:1 API镜像
  • 批量优先:默认情况下,联系人操作接受数组
  • 人类标识符:使用电子邮件和段名称,而不是UUID
  • 默认情况下为多部分:纯文本自动生成HTML以进行正确呈现
  • 清晰的反馈:结果包括总结和下一步建议

______________________________________________________________________

服务器说明(模型看到的内容)

Use these tools to manage email contacts, segments, and send emails via Resend.

WORKFLOW:
1. find_contacts or segments(list) → discover existing data
2. upsert_contacts → add/update subscribers
3. send → individual email or broadcast to segment
4. campaigns(status) → track delivery

FORMATTING (for body):
- Use \n\n between paragraphs
- Use \n between list items
- Plain text is auto-converted to multipart (HTML + text) for proper rendering

IMPORTANT:
- Segment names are case-insensitive
- Templates must be published in Resend dashboard to use
- Broadcasts use segment name, not ID

______________________________________________________________________

快速开始

先决条件

1.安装

cd resend-mcp
bun install
cp env.example .env

2.配置

从获取重新发送API密钥 resend.com/api-keys.

编辑 .env:

PORT=3000
AUTH_ENABLED=true
AUTH_STRATEGY=bearer

# Generate with: openssl rand -hex 32
BEARER_TOKEN=your-random-auth-token

# Resend credentials
RESEND_API_KEY=re_your_resend_api_key
RESEND_DEFAULT_FROM=newsletter@yourdomain.com

3.跑步

bun dev
# MCP: http://127.0.0.1:3000/mcp

4.连接客户端

爱丽丝应用程序:

  • 网址: http://127.0.0.1:3000/mcp
  • 类型: streamable-http
  • 头球 Authorization: Bearer

克劳德桌面/光标:

{
  "mcpServers": {
    "resend": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:3000/mcp", "--transport", "http-only"],
      "env": { "NO_PROXY": "127.0.0.1,localhost" }
    }
  }
}

______________________________________________________________________

工具

upsert_contacts

批量添加或更新联系人。如果电子邮件不存在则创建,如果存在则更新。

// Input
{
  contacts: [
    { email: "john@example.com", first_name: "John", last_name: "Doe" },
    { email: "jane@example.com", properties: { plan: "pro", company: "Acme" } }
  ],
  segments?: ["Newsletter", "Premium"],  // Add to these segments
  unsubscribed?: false                   // Set subscription status
}

// Output
{
  results: [{ email, ok, id, action: "created" | "updated", error? }],
  summary: { created: 1, updated: 1, failed: 0 }
}

remove_contacts

从列表中永久删除联系人。

// Input
{ emails: ["user@example.com", "other@example.com"] }

// Output
{ results: [{ email, ok, error? }], summary: { deleted: 2, failed: 0 } }

find_contacts

使用分页搜索和筛选联系人。

// Input
{
  segment?: "Newsletter",      // Filter by segment name
  email?: "user@example.com",  // Find specific contact
  unsubscribed?: false,        // Filter by status
  limit?: 50,                  // Max 100
  cursor?: "..."               // From previous response
}

// Output
{
  items: [{ id, email, first_name, last_name, unsubscribed, created_at, properties }],
  has_more: boolean,
  cursor?: string
}

segments

管理细分市场及其成员。

// List all segments
{ action: "list" }
→ { items: [{ id, name, contact_count, created_at }] }

// Create segment
{ action: "create", name: "VIP Customers" }
→ { id, name, ok: true }

// Delete segment (contacts remain in system)
{ action: "delete", name: "Old Segment" }

// Add contacts to segment
{ action: "add_contacts", name: "Newsletter", contacts: ["a@x.com", "b@x.com"] }

// Remove contacts from segment
{ action: "remove_contacts", name: "Newsletter", contacts: ["a@x.com"] }

send

发送个人电子邮件或向分段广播。

// Individual email
{
  to: "user@example.com",        // or array up to 50
  subject: "Welcome!",
  body: "Hello {{{FIRST_NAME}}}!\n\nWelcome to our newsletter.",
  from_name?: "Alice Newsletter",
  reply_to?: "support@example.com",
  schedule_for?: "2024-12-25T10:00:00Z"
}

// Broadcast to segment
{
  segment: "Newsletter",         // Segment name (case-insensitive)
  subject: "Weekly Update",
  name?: "Week 42 Newsletter",   // Dashboard display name
  body: "HEADLINE\n\nFirst paragraph.\n\nSecond paragraph.",
  schedule_for?: "in 2 hours"    // Natural language supported
}

// Using template
{
  to: "user@example.com",
  template: "welcome-email",     // Template alias or ID
  variables: { CTA_TEXT: "Get Started", DISCOUNT: "20%" }
}

格式化提示:

  • 使用 \n\n 段落之间
  • 使用 \n 列表项之间
  • 纯文本通过适当的换行符自动转换为HTML
  • 个性化: {{{FIRST_NAME}}}{{{FIRST_NAME|Friend}}}

campaigns

查看和管理广播活动。

// List recent campaigns
{ action: "list", limit?: 20 }
→ { items: [{ id, name, subject, segment_name, status, sent_at, recipients_count }] }

// Get detailed status
{ action: "status", campaign_id: "bc123..." }
→ { id, status, sent_count, delivered_count, opened_count, failed_count }

// Cancel scheduled campaign
{ action: "cancel", campaign_id: "bc123..." }
→ { id, cancelled: true }

subscriptions

管理联系人的主题首选项。

// Subscribe to topic
{ emails: "user@example.com", action: "subscribe", topic: "Product Updates" }

// Unsubscribe from topic
{ emails: ["a@x.com", "b@x.com"], action: "unsubscribe", topic: "Newsletter" }

// Global unsubscribe (from all emails)
{ emails: "user@example.com", action: "unsubscribe_all" }

templates

列出可用的电子邮件模板。

// Input
{ limit?: 50, cursor?: "..." }

// Output
{
  items: [{ id, alias, name, subject, from, variables: [{ key, type, fallback }] }],
  has_more: boolean
}

______________________________________________________________________

例子

1.导入订阅者并发送欢迎电子邮件

// Add contacts to Newsletter segment
{
  "name": "upsert_contacts",
  "arguments": {
    "contacts": [
      { "email": "alice@example.com", "first_name": "Alice" },
      { "email": "bob@example.com", "first_name": "Bob" }
    ],
    "segments": ["Newsletter"]
  }
}

答复:

Added 2 contact(s). Created: 2, Updated: 0, Failed: 0.
Next: Use 'find_contacts' to verify or 'send' to email them.

2.发送广播通讯

{
  "name": "send",
  "arguments": {
    "segment": "Newsletter",
    "subject": "This Week in AI",
    "name": "Week 42 Newsletter",
    "body": "HIGHLIGHTS\n\nClaude 4 was released this week with impressive new capabilities.\n\nKEY FEATURES\n\n• Extended context window\n• Improved reasoning\n• Better code generation\n\nREAD MORE\n\nCheck out the full announcement on our blog."
  }
}

答复:

Broadcast to segment "Newsletter" queued for sending (Campaign ID: abc123).
Use 'campaigns' tool to track delivery.

3.检查活动交付情况

{
  "name": "campaigns",
  "arguments": { "action": "status", "campaign_id": "abc123" }
}

答复:

Campaign abc123: sent
- Sent: 1,234
- Delivered: 1,198
- Opened: 456 (38%)
- Failed: 36

4.取消订阅用户

{
  "name": "subscriptions",
  "arguments": {
    "emails": "unhappy@example.com",
    "action": "unsubscribe_all"
  }
}

答复:

Updated 1 contact(s). Success: 1, Failed: 0.

______________________________________________________________________

身份验证流程

┌─────────────────────────────────────────────────────────────────┐
│  Client (Alice App, Claude Desktop)                             │
│      │                                                          │
│      │ Authorization: Bearer                      │
│      ▼                                                          │
│  ┌─────────────────────────────────────────────────────────────┐│
│  │  MCP Server (Node.js / Cloudflare Worker)                   ││
│  │                                                             ││
│  │  1. Validate BEARER_TOKEN (client auth)                     ││
│  │  2. Use RESEND_API_KEY internally                           ││
│  │                                                             ││
│  │  RESEND_API_KEY ──────────► Resend API                      ││
│  │  RESEND_DEFAULT_FROM ─────► (api.resend.com)                ││
│  └─────────────────────────────────────────────────────────────┘│
└─────────────────────────────────────────────────────────────────┘

要点:

  • BEARER_TOKEN:您生成的随机令牌--对MCP客户端进行身份验证
  • RESEND_API_KEY:重新发送API密钥-从不向客户端公开
  • RESEND_DEFAULT_FROM:已验证的发件人地址--必填

______________________________________________________________________

部署选项

本地开发(Node.js/Bun)

bun dev
# Endpoint: http://127.0.0.1:3000/mcp

Cloudflare Worker(本地开发人员)

# Create .dev.vars with secrets
echo "BEARER_TOKEN=your_token" >> .dev.vars
echo "RESEND_API_KEY=re_xxx" >> .dev.vars
echo "RESEND_DEFAULT_FROM=newsletter@yourdomain.com" >> .dev.vars

bun x wrangler dev --local | cat
# Endpoint: http://127.0.0.1:8787/mcp

Cloudflare员工(生产)

# Set secrets
bun x wrangler secret put BEARER_TOKEN
bun x wrangler secret put RESEND_API_KEY
bun x wrangler secret put RESEND_DEFAULT_FROM

# Deploy
bun x wrangler deploy
# Endpoint: https://..workers.dev/mcp

______________________________________________________________________

HTTP端点

端点方法目的
/mcp发布MCP JSON-RPC 2.0
/mcpGETSSE流(用于通知)
/healthGET健康检查

______________________________________________________________________

环境变量

变量必填描述
RESEND_API_KEY从重新发送.com/API-keys重新发送API密钥
RESEND_DEFAULT_FROM已验证的发件人地址(例如。,newsletter@yourdomain.com)
BEARER_TOKENMCP客户端的认证令牌(使用生成 openssl rand -hex 32)
PORT服务器端口(默认值:3000)
HOST服务器主机(默认值:127.0.0.1)
AUTH_ENABLED启用身份验证(默认值:true)
AUTH_STRATEGY认证策略(默认:承载)
LOG_LEVEL调试、信息、警告、错误(默认值:信息)

______________________________________________________________________

建筑

src/
├── index.ts                    # Node.js entry point
├── worker.ts                   # Cloudflare Workers entry point
├── config/
│   ├── env.ts                  # Environment parsing
│   └── metadata.ts             # Server & tool descriptions
├── core/
│   └── mcp.ts                  # McpServer builder
├── shared/
│   └── tools/
│       └── resend/             # Tool definitions
│           ├── upsert-contacts.ts
│           ├── remove-contacts.ts
│           ├── find-contacts.ts
│           ├── segments.ts
│           ├── send.ts
│           ├── campaigns.ts
│           ├── subscriptions.ts
│           └── templates.ts
├── services/
│   └── resend/
│       └── client.ts           # Resend API client
├── schemas/
│   └── outputs.ts              # Zod output schemas
└── http/
    ├── app.ts                  # Hono HTTP app
    └── routes/
        └── mcp.ts              # MCP endpoint handler

______________________________________________________________________

发展

bun dev           # Start with hot reload (note: sessions clear on reload)
bun start         # Production mode (stable sessions)
bun run typecheck # TypeScript check
bun run lint      # Lint code
bun run build     # Production build

MCP检验员测试:

bunx @modelcontextprotocol/inspector
# Connect to: http://localhost:3000/mcp
# Add header: Authorization: Bearer 

______________________________________________________________________

故障排除

问题解决方案
401未经授权检查 BEARER_TOKEN 服务器和客户端中的匹配
“未配置RESEND_API_KEY”设置 RESEND_API_KEY.env 或秘密
“RESEND_DEFAULT_FROM未配置”设置 RESEND_DEFAULT_FROM 发送给经过验证的发件人
“未找到段”使用 segments(action='list') 查看可用细分市场
“找不到模板”确保在“重新发送”仪表板中发布模板
电子邮件中没有换行符已修复-电子邮件是多部分的(HTML+文本)
重启后会话停滞断开连接并重新连接客户端(热重新加载会清除会话)
速率限制(429)重新发送默认值为2请求/秒。等待 retry-after 头球
工具未显示重新连接客户端--会话可能已过时

______________________________________________________________________

许可证

麻省理工学院

目录标签

目录标签

批量操作TypeScriptClaude电子邮件服务本地部署新闻通讯管理营销自动化AI集成

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

token

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明token部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP