About emailmd
emailmd is an MCP server that converts markdown into responsive, email-safe HTML, lints drafts for deliverability issues, and previews emails. It targets developers and teams who write email templates. Its charts are written as plain markdown lists and also redraw in the plain-text part.
Key features
- 01Markdown to responsive, email-safe HTML
- 02Lints drafts for deliverability problems
- 03Charts, progress meters and KPI tiles
- 04Plain-text part redraws charts
- 05Command-line interface and React components
Use cases
- 01Converting markdown content into email HTML
- 02Checking email drafts for deliverability issues before sending
- 03Letting an AI assistant render and preview emails
MCP support
emailmd exposes render, lint and read_docs tools through an MCP server, available as a hosted Streamable HTTP endpoint or a local stdio process.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://www.emailmd.dev/api/mcpclaude mcp add --transport http dev-emailmd-emailmd https://www.emailmd.dev/api/mcp{"mcpServers":{"dev-emailmd-emailmd":{"type":"http","url":"https://www.emailmd.dev/api/mcp"}}}Open in Cursor{"servers":{"dev-emailmd-emailmd":{"type":"http","url":"https://www.emailmd.dev/api/mcp"}}}Open in VS Code{"mcpServers":{"dev-emailmd-emailmd":{"type":"http","url":"https://www.emailmd.dev/api/mcp"}}}{"mcpServers":{"dev-emailmd-emailmd":{"serverUrl":"https://www.emailmd.dev/api/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
3| Parameter | Type | Required | Description |
|---|---|---|---|
| minify | boolean | No | Minify the HTML. Recommended for sending; helps stay under Gmail's 102KB clip limit. |
| markdown | string | Yes | The emailmd markdown document, optionally starting with YAML frontmatter. |
| partials | object | No | Named markdown partials spliced in wherever the document says "::: include <name>". |
Details
From the project READMEemailmd
Write markdown. Ship emails. No HTMHELL.
emailmd converts markdown into responsive, email-safe HTML that works across Gmail, Outlook, Apple Mail, Yahoo, and every other client.

Install
npm install emailmd
Quick Start
import { render } from "emailmd";
const { html, text } = await render(`
# Welcome!
Thanks for signing up.
[Get Started](https://example.com){button}
`);
// html → complete email-safe HTML
// text → plain text version for text/plain MIME part
v0.3.0 migration:
render()is now async. Update calls fromrender(md)toawait render(md). Requires Node 20+ (MJML 5).
Charts & Data
Bar charts, progress meters, sparklines, KPI tiles, step trackers, and star ratings, each written as a plain markdown list:
::: chart
- Spotify: 16,900
- Apple Podcasts: 12,400
- Web player: 6,200
- RSS: 2,900
:::

They are drawn from table cells and text glyphs rather than images or SVG, so they still render when the client blocks remote images, and they redraw themselves in the plain-text part instead of collapsing to a list of numbers. See the directives reference.
CLI
emailmd also ships with a command-line interface.
# Render to HTML
emailmd input.md
# Write to file
emailmd input.md -o output.html
# Plain text output
emailmd input.md --text
# Pipe from another command
echo "# Hello" | emailmd
Run emailmd --help for all options.
React
@emailmd/react provides a live-preview hook (useEmailmd), an <EmailPreview /> iframe component, and <EmailmdBuilder /> — the full builder as a drop-in component for your own app.
npm install @emailmd/react emailmd
Learn More
- Docs — full syntax reference, theming, frontmatter, directives, and API
- Templates — ready-made email templates you can copy and customize
- Builder — live editor to write and preview emails in your browser
MCP
emailmd ships a Model Context Protocol server, so an AI assistant can render, lint, and preview emails for you. It exposes three tools — render (markdown to email-safe HTML), lint (flag deliverability problems without rendering), and read_docs (look up emailmd syntax) — over either transport:
# Hosted (Streamable HTTP)
https://www.emailmd.dev/api/mcp
# Or run it locally over stdio
npx emailmd mcp
Published to the official MCP registry as dev.emailmd/emailmd. See the MCP docs for per-client setup.
AI
Prefer plain context over tools? emailmd is just markdown, so AI is great at writing templates. Feed the full docs to your AI tool:
https://www.emailmd.dev/llms-full.txt
Contributing
Contributions are welcome! Feel free to open an issue or submit a pull request.
emailmd is under active development. The API may change between minor versions until we hit 1.0 — breaking changes are always called out in the changelog. See Stability & Versioning for what the semver contract covers.
Acknowledgements
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.