Renders markdown as email-safe HTML, lints email drafts for deliverability issues, and previews emails for AI clients.
Also known as anypost/emailmd
- Stars
- 1,390
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.13.2
- Last commit
- Oct 6, 2026
- License
- MIT
What is emailmd MCP?
emailmd is an MCP server. Renders markdown as email-safe HTML, lints email drafts for deliverability issues, and previews emails for AI clients.
Summary generated from the project's README
How to install emailmd MCP
Formats verified 10 Nov 2026Install emailmd MCP in Claude Code
$ claude mcp add emailmd -- npx -y emailmdInstall emailmd MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"emailmd": {
"command": "npx",
"args": [
"-y",
"emailmd"
]
}
}
}Install emailmd MCP in VS Code
.vscode/mcp.json
{
"servers": {
"emailmd": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"emailmd"
]
}
}
}Install emailmd MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"emailmd": {
"command": "npx",
"args": [
"-y",
"emailmd"
]
}
}
}Install emailmd MCP in Codex
~/.codex/config.toml
[mcp_servers.emailmd] command = "npx" args = ["-y", "emailmd"]
Install emailmd MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"emailmd": {
"command": "npx",
"args": [
"-y",
"emailmd"
]
}
}
}Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSPass
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubemailmd
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
emailmd MCP questions
How do I add emailmd MCP to Claude Code?
Run claude mcp add emailmd -- npx -y emailmd in your terminal. Add --scope user to make it available in every project.
How do I add emailmd MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does the emailmd MCP server expose?
It exposes three tools: render (markdown to email-safe HTML), lint (flag deliverability problems without rendering), and read_docs (look up emailmd syntax).
Does emailmd produce plain text versions of emails?
Yes. render() returns both html (complete email-safe HTML) and text (a plain text version for the text/plain MIME part), and the CLI has a --text flag.
What email clients does emailmd's HTML support?
The generated responsive HTML is designed to work across Gmail, Outlook, Apple Mail, Yahoo, and other clients.