Markdown-first draft ingestion for EmDash: an npm-installable plugin plus an MCP server so Cursor and Goose can create posts drafts without publishing.
Source: https://github.com/EmPlugins/EmPost
pnpm add @emplugins/emdash-plugin-md-draftRegister the plugin in astro.config.mjs (see packages/emdash-plugin-md-draft/README.md), configure HMAC signing secret and limits in /_emdash/admin, then use the ingest URL from the operator runbook.
# Optional: pin version instead of -y
npx -y @emplugins/mcp-emdash-draftsAdd the MCP server to Cursor or Goose with env vars EMDASH_INGEST_URL, EMDASH_HMAC_SECRET, EMDASH_KEY_ID — see docs/cursor-mcp.md and docs/goose-mcp.md.
| Package | Description |
|---|---|
@emplugins/shared |
Frontmatter, Zod, HMAC helpers, Markdown → Portable Text (workspace-only) |
@emplugins/emdash-plugin-md-draft |
EmDash plugin: signed ingest + health |
@emplugins/mcp-emdash-drafts |
MCP stdio server: ingest_path, ingest_markdown, validate_markdown |
emPost.md— full v1 specificationdocs/— threat model, runbook, client setupexamples/— sample post + config snippets
Tested against EmDash 0.9.x and later (emdash peer >=0.9.0 on @emplugins/emdash-plugin-md-draft). Ingest uses POST with Content-Type: application/json and { "markdown": "..." } because EmDash’s plugin route host parses JSON before the handler runs (see docs/operator-runbook.md).
MIT
