@emailens/mcp

中文文档
0.16.0发布于 2026/11/12MITTypeScriptES Module近 30 天下载 2314

MCP服务器用于电子邮件兼容性分析:通过克洛德或任何MCP相容工具,在21个电子邮件客户端上预览,分析,修复,diff和抓取截图,来自HTML,MJML,Maizzle或React Email源.

中文使用文档
文档目录14 节
  1. 安装
  2. 设置
  3. 克劳德桌面
  4. 克劳德代码
  5. 带有 API 密钥( 可选, 解锁截图 + 共享)
  6. 远程( 没有安装)
  7. 工具
  8. 本地工具( 不需要账户)
  9. 主机工具( 需要 EMAILENS_API_KEY (中文(简体) )
  10. 模板格式
  11. 支持的电子邮件客户端( 21)
  12. 释放
  13. 发展
  14. 许可证
emailens / mcp

AI 助手的电子邮件渲染分析

CI npm license MCP Registry Smithery GitHub stars

MCP服务器用于电子邮件兼容性分析. 分析,预览,diff,并固定21个电子邮件客户端的电子邮件,再加上抓取真实的截图并用可选的API密钥创建可共享链接.

发送 HTML、MJML、Maizzle 或反应电子邮件设置 format 和模板在分析前被编译,所以所检查的是阅读器实际收到的HTML.

为什么你的助手需要这个: 在我们追踪的298个CSS和HTML特性中,每个大电子邮件客户端中只有6个得到充分支持(查看数据) (中文(简体) ). 请克劳德检查你的电子邮件 在你发送它之前.

建造在 @emailens/engine. 也可作为 GitHub 动作。 。 。 .

安装

npx -y @emailens/mcp

设置

克劳德桌面

添加为 claude_desktop_config.json数字 :

{
  "mcpServers": {
    "emailens": {
      "command": "npx",
      "args": ["-y", "@emailens/mcp"]
    }
  }
}

克劳德代码

claude mcp add emailens -- npx -y @emailens/mcp

带有 API 密钥( 可选, 解锁截图 + 共享)

{
  "mcpServers": {
    "emailens": {
      "command": "npx",
      "args": ["-y", "@emailens/mcp"],
      "env": {
        "EMAILENS_API_KEY": "ek_live_..."
      }
    }
  }
}

获取免费 API 密钥 app.emailens.dev/dashboard/api (英语)。 。 。 .

远程( 没有安装)

使用主机端点:不需要npm或Node.js. 需要 API 密钥 .

{
  "mcpServers": {
    "emailens": {
      "url": "https://app.emailens.dev/api/mcp",
      "headers": {
        "Authorization": "Bearer ek_live_..."
      }
    }
  }
}

工具

本地工具( 不需要账户)

preview_email

完整的电子邮件兼容预览:为21个客户端转换HTML,分析CSS,生成分数,模拟暗模式,检查收件箱预览和电子邮件大小.

参数类型需求说明
html字符串一个电子邮件 HTML 来源
path字符串一个源文件的绝对路径代替 html (单位:千美元).html, (中文(简体) ), .htm, (中文(简体) ), .mjml, (中文(简体) ), .jsx, (中文(简体) ), .tsx, (中文(简体) ), .vue); 扩展集 format
clients字符串 []没有过滤到特定客户端ID
format语句没有"html", (中文(简体) ), "jsx", (中文(简体) ), "mjml", (中文(简体) ), "maizzle"

analyze_email

快速 CSS 兼容性分析; 返回每个客户的分数和每个问题一个发现. 较快 audit_email 当您只需要 CSS 兼容性时.

参数类型需求说明
html字符串一个电子邮件 HTML 来源
path字符串一个源文件的绝对路径代替 html (单位:千美元).html, (中文(简体) ), .htm, (中文(简体) ), .mjml, (中文(简体) ), .jsx, (中文(简体) ), .tsx, (中文(简体) ), .vue); 扩展集 format
format语句没有输入格式
detail语句没有"summary" (违约)或 "full"
clients字符串 []没有只报告客户身份
targetingPolicy语句没有"progressive" (违约), "strict",或 "lenient"

每个问题都有一个发现 而不是每个客户一个. 每个客户的引擎报告 因为一个分数是每个客户, 而每个选择者是因为一个固定是每个选择者. 在普通通讯上 border-radius 抵达12次(两名客户) 放弃它,六个选择者使用它),每份拷贝中都有相同的句子. 这是286KB的JSON, 大约73000个代币, 对于一个11KB电子邮件.

调查结果按财产、严重程度和信息分类,列出受影响的客户, 与所有的职位合并。 同一邮件现在返回 40KB .

{
  "property": "border-radius",
  "severity": "warning",
  "clients": ["outlook-windows", "outlook-windows-legacy"],
  "message": "Does not support \"border-radius\". Round corners can be used in VML…",
  "fixType": "structural",
  "hasFix": true,
  "loc": { "line": 61, "column": 28, "offset": 2753, "length": 171 },
  "alsoAtLines": [62, 64, 75, 78, 87]
}

固定片段不包括在内;它们是286KB中的93KB,以及 fix_email 为您决定采取行动的问题制作它们. hasFix 告诉你一个是 可用; fixType 告诉你修理是加价还是CSS.

过 detail: "full" 发动机的每个客户形状 有片段,和 clients: ["gmail-web", "outlook-windows"] 只报告你关心的事: 最快的储蓄, 大约一半的反应 对于两个客户. 分数保持整封邮件 电子邮件在别处是值得的。 身份不明的客户端ID被姓名拒绝; a 空结果会读作“ 此邮件对客户端是好的 ” .

来源位置. 对于 HTML 输入, 每个警告带 loc (单位:千美元)line, (中文(简体) ), column, (中文(简体) ), offset, (中文(简体) ), length) 第一次出现,加 alsoAtLines 页:1 其他人,所以一个助手可以编辑确切的源,并知道其他的在哪里 对. audit_email 以同样的方式看待其他调查结果.

{
  "property": "border-radius",
  "loc": { "line": 7, "column": 8, "offset": 142, "length": 25 },
  "alsoAtLines": [12, 19]
}

后来发生的是行号,而不是故意的完全位置: 答覆由一个支付每个符号的模型阅读,一个真正的通讯可以 生产出一千多起事件; 全部装入近一倍 有效载荷.

报告职位 html 仅输入。 汇编了JSX、MJML和Maizzle 因此,在分析之前,一个行号会指向生成的输出,而不是 您打开的文件: 工具省略了它, 而不是返回一个外观 权威.

audit_email

全面质量审计:CSS兼容性,垃圾邮件评分,链接验证,可访问性,图像,收件箱预览,大小(Gmail剪接),模板变量,内容溢出,视觉错误,暗模式和移动文本对比,设计一致性,以及客户端目标设定.

后三段覆盖了光线桌面预览无法显示的内容:当客户端强制黑模式或当电子邮件本身的暗块重新油漆表面而未重新涂色时会消失的文本,在电子邮件的断点下作对比,以及不同值但与读者不同的颜色.

参数类型需求说明
html字符串一个电子邮件 HTML 来源
path字符串一个源文件的绝对路径代替 html (单位:千美元).html, (中文(简体) ), .htm, (中文(简体) ), .mjml, (中文(简体) ), .jsx, (中文(简体) ), .tsx, (中文(简体) ), .vue); 扩展集 format
format语句没有输入格式
detail语句没有"summary" (违约)或 "full"
clients字符串 []没有只报告客户身份
skip字符串 []没有选中要跳过( 例如 ) . ["spam", "images"](中文(简体) )
targetingPolicy语句没有"progressive" (违约), "strict",或 "lenient"
emailType语句没有"transactional" (不需要取消订阅链接)或 "marketing"输入:从内容中猜出
previousHtml字符串没有持有这个版本的设计,通常是您的初稿. 寄出:这封邮件的第一个版本在会话中审计过. 被删除的编辑内容归根结底 designRemovals

修补 error 财务报告和审定财务报表 warning 发现. info 发现不是问题:电子邮件安全地掉回那里,所以永远不要删除应答(@media)或暗模 CSS来清除它们.

fix_email

为兼容性问题生成一个结构化的固定快取. 以AI可以直接应用的固定指令返回标记下.

参数类型需求说明
html字符串一个要修复的电子邮件 HTML
path字符串一个源文件的绝对路径代替 html (单位:千美元).html, (中文(简体) ), .htm, (中文(简体) ), .mjml, (中文(简体) ), .jsx, (中文(简体) ), .tsx, (中文(简体) ), .vue); 扩展集 format
format语句没有控制修正语法
scope语句没有"all" 或者说 "current"
selectedClientId字符串没有范围修正的客户端ID

list_clients

列出所有21个支持的电子邮件客户端,并附有ID,姓名,引擎和暗模式支持.

diff_emails

比较两个电子邮件 HTML 版本;显示分数变化,固定问题,并介绍每个客户端的问题.

参数类型需求说明
before 编号 : beforePath字符串一个原始电子邮件来源或其文件
after 编号 : afterPath字符串一个已修改的电子邮件源或其文件
format语句没有输入格式

check_deliverability

请检查access-date=中的日期值 (帮助) 一个域的电子邮件可发送性:SPF, DKIM, DMARC, MX, BIMI 记录有分数和可采取行动的问题.

参数类型需求说明
domain字符串对要检查的域( 例如 ). "company.com"(中文(简体) )

check_design

电子邮件在每一个客户端的直播预览中是否仍然看起来像它的设计 . 它在真实浏览器中绘制邮件两次: 当客户端显示时, 以及 是你写的 然后按元素比较两种布局元素. 每个 当事人得到一个判决, kept (准备), changed (需要帮助)或 broken (Broken),原因: 堆叠的列, 移动或移动的按钮 调整大小、填充或角丢失、字体和间距改变。 这是 裁决电子邮件电子邮件页面显示。 编辑后代理可以调用到 证实修复没有在别处破坏布局.

参数类型需求说明
html字符串一个电子邮件 HTML 来源
path字符串一个源文件的绝对路径代替 html
clients字符串 []没有要检查客户身份 默认:全部21个(每个数秒,一次4个)
format语句没有输入格式
{ "broken": ["outlook-windows-legacy"],
  "results": [{ "clientId": "outlook-windows-legacy", "name": "Outlook Classic",
    "verdict": "broken", "label": "Broken",
    "sentence": "Outlook Classic breaks your design.",
    "reasons": ["Columns that sit side by side in your design stack on top of each other."],
    "more": 0 }] }

它需要一个浏览器。 添加 playwright-core 到服务器,以及 sharp 联 合 国 像素比较. 要么安装局部铬,要么对准您 无浏览器实例 :

{
  "mcpServers": {
    "emailens": {
      "command": "npx",
      "args": ["-y", "-p", "@emailens/mcp", "-p", "playwright-core", "-p", "sharp", "emailens-mcp"],
      "env": { "BROWSERLESS_URL": "wss://..." }
    }
  }
}

无 BROWSERLESS_URL它用的是当地的铬. 安装一个 npx playwright-core install chromium还有几件事要知道:

  • 它运行在灯光模式, 与我们的现场预览, 不是真正的收件箱.
  • 与 sharp,它还比较了两页像素的截图,用 像素,就像主机检查一样。 这更常见于人类 审查者,每个结果都包含 diff (像素的去除份额)和 aligned没有 sharp,只比较页面结构.
  • 对于无浏览器,会话必须保持全程开放. 举起一 简称 TIMEOUT,或者通过更少 clients。 。 。 .
  • 脚本在两页中被关闭.
  • 预览使用的字体站点被下载一次 app.emailens.dev 进入 ~/.cache/emailens/fonts。 。 。 .

主机工具( 需要 EMAILENS_API_KEY(中文(简体) )

capture_screenshots

在真实浏览器中捕捉21个客户端的真实电子邮件截图. 屏幕截图由CDN主持.

参数类型需求说明
html字符串一个电子邮件 HTML 来源
path字符串一个源文件的绝对路径代替 html (单位:千美元).html, (中文(简体) ), .htm, (中文(简体) ), .mjml, (中文(简体) ), .jsx, (中文(简体) ), .tsx, (中文(简体) ), .vue); 扩展集 format
format语句没有输入格式
clients字符串 []没有过滤客户端
modes字符串 []没有["light"], (中文(简体) ), ["dark"],或 ["light", "dark"]
title字符串没有预览的名称

免费计划:每天30个预览. 报名

share_preview

创建共享链接 。 接受者在没有账户的情况下看到全面分析.

参数类型需求说明
html字符串一个电子邮件 HTML 来源
path字符串一个源文件的绝对路径代替 html (单位:千美元).html, (中文(简体) ), .htm, (中文(简体) ), .mjml, (中文(简体) ), .jsx, (中文(简体) ), .tsx, (中文(简体) ), .vue); 扩展集 format
title字符串没有显示标题
format语句没有输入格式

需要Dev计划(9/mo)。 共享链接在7天后过期(Dev)或永远不过期(Pro.

模板格式

format 接受 html (默认), mjml, (中文(简体) ), maizzle 财务报告和审定财务报表 jsx (反应) 电子邮件. maizzle 是 HTML 模板或 Vue 单文件组件。 粘贴 Vue 文件无 format 编译为 maizzle. 任何东西,但 html 实值 在分析前编译,并同时决定语法 固定片段回来.

编译比这更重要 一个电子邮件客户端使 产出这样 需要检查的是: 交出了原始文件 <mjml> 文档, HTML 解析器 在其中找不到 CSS 并报告一个完全干净的电子邮件 。 这样的答案是 比错误更糟糕,因为一个助手会重复它.

编译器没有被捆绑. MJML独自拉出56MB,这个服务器是 通常开始于 npx,所以引擎将它们保留为可选对等点 依赖性 :

npm install mjml                                              # MJML
npm install @maizzle/framework@5                             # Maizzle HTML
npm install @maizzle/framework@6                             # Maizzle Vue single-file components
npm install sucrase react @react-email/components @react-email/render  # React Email

它们必须安装在服务器运行的地方, 它并不总是在某个地方 你来控制 如果没有,请自行编译模板并发送结果 HTML 为 format: "html":工具在打出这个时是这样说的.

支持的电子邮件客户端( 21)

每个客户端都会链接到其CSS支持页面. 每个助手的设置指南 : 电子邮件.dev/mcp。 。 。 .

客户端身份证黑暗模式页:1
邮件gmail-web对
Gmail 安卓尔gmail-android对
邮件 iOSgmail-ios对
展望365outlook-web对
展望窗口outlook-windows没有
展望窗口遗产outlook-windows-legacy没有2026年10月折旧
IOS展望outlook-ios对以 4. 0 为单位新建
展望 Androidoutlook-android对以 4. 0 为单位新建
宏的前景outlook-macos对V.1.0中新建
苹果邮件apple-mail-macos对
苹果邮件 iOSapple-mail-ios对
雅虎邮件yahoo-mail对
雅虎邮件Androidyahoo-mail-android对V.1.0中新建
Yahoo 邮件 iOSyahoo-mail-ios对V.1.0中新建
三星邮件samsung-mail对
雷鸟thunderbird没有
嘿,邮件hey-mail对
质子邮件protonmail对V.1.0中新建
AOL 邮件aol对V.1.0中新建
快递fastmail对V.1.0中新建
超级人superhuman对

释放

两个出版物:npm和MCP登记册。 登记名单排列为5个 释放后,因为没有推进 server.json,所以一半是一个 现在工作流程. 相关内容 有细节和四个 设置该版本必须同意.

发展

bun install
bun run build
bun test
bun run typecheck

许可证

麻省理工学院


如果这能让你免于Outlook惊喜, 一颗恒星 帮助其他电子邮件开发者找到它.

版本与发布记录

@emailens/mcp 共发布 25 个版本,首次发布于 2026/02/26;过去 12 个月发布了 25 个版本。

版本发布日期距今
0.16.0latest2026/11/122 天前
0.15.02026/10/2915 天前
0.14.02026/10/2816 天前
0.13.12026/10/2520 天前
0.13.02026/10/2321 天前
0.12.12026/10/2322 天前

关于 @emailens/mcp 的常见问题

@emailens/mcp 是什么?

MCP服务器用于电子邮件兼容性分析:通过克洛德或任何MCP相容工具,在21个电子邮件客户端上预览,分析,修复,diff和抓取截图,来自HTML,MJML,Maizzle或React Email源.

如何安装 @emailens/mcp?

在项目目录运行 npm install @emailens/mcp,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 emailens-mcp,可以用 npx emailens-mcp 直接运行。

@emailens/mcp 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@emailens/mcp 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@emailens/mcp 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@emailens/mcp 可以商用吗?

@emailens/mcp 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@emailens/mcp 的下载量有多少?

根据 npm 官方下载统计,@emailens/mcp 在 2026/10/14 – 2026/11/12 这 30 天内被下载 2,314 次,日均约 77 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@emailens/mcp 还在维护吗?

最新版本 0.16.0 发布于 2026/11/12(2 天前);至今共发布 25 个版本,其中过去 12 个月发布了 25 个;首次发布于 2026/02/26。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。