emailmd

MCP serverDocs & knowledge

emailmd turns markdown drafts into email-safe HTML so your messages render properly in inboxes. Once added, your AI can write emails in markdown, convert them for sending, check them for deliverability problems, and preview the result before anything goes out.

Use emailmd in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add emailmd and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use emailmd to render

Details

Available today. Use it from your connected AI after setup.

Add emailmd, then give your AI a markdown draft to convert, lint, and preview. You can find it at github.com/anypost/emailmd.

emailmdStart free

What your AI can do with it

  • Convert markdown drafts into email-safe HTML
  • Lint drafts for deliverability problems before sending
  • Preview emails to check how they will look
  • Write email content in markdown and get clean HTML back

Install emailmd

The server’s own address, for the clients that take one directly. Or connect Ahel once and every client you use reads it from one address, with the account kept on Ahel rather than in each client’s config.

  • Claude Code

    claude mcp add --transport http --scope user emailmd 'https://www.emailmd.dev/api/mcp'

    Run it once in your project, then open /mcp to approve any sign-in the server asks for.

  • Claude Desktop

    https://www.emailmd.dev/api/mcp

    Add a custom connector in Settings, paste this address, and approve the sign-in.

  • Cursor

    cursor://anysphere.cursor-deeplink/mcp/install?name=emailmd&config=eyJ1cmwiOiJodHRwczovL3d3dy5lbWFpbG1kLmRldi9hcGkvbWNwIn0=

    Open the link and Cursor adds the server at that address.

  • ChatGPT

    https://www.emailmd.dev/api/mcp

    In Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.

  • Codex

    codex mcp add emailmd --url 'https://www.emailmd.dev/api/mcp'

    Run it once, then sign in with codex mcp login emailmd if the server asks for an account.

From the project's README

As published by anypost/emailmd in README.md.

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 from render(md) to await 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

Tools it offers (3)

What this server listed when Ahel dialed its public endpoint in Sep 2026, with no key and no account of yours. The names are the server’s own.

  • render
  • lint
  • read_docs

Signals

GitHub stars
1k
Forks
41
Last commit
Oct 2026
Weekly downloads
7k
Advanced
Delivery
emailmd MCP server → your Ahel connector (mcp.ahel.ai) → your AI.
Item type
mcp-server
Key
dev-emailmd-emailmd
Source
github.com/anypost/emailmd
Hosted endpoint
https://www.emailmd.dev/api/mcp